Un'utilità di copia e incolla degli appunti da riga di comando?


127

In Windows ho usato le utilità copia-incolla degli Appunti della riga di comando ...

  • pclip.exe e gclip.exe

Queste erano porte UnixUtils per Windows (ma gestivano solo testo normale). C'erano un paio di altre utility native di Windows che potevano scrivere / estrarre qualsiasi formato.

Ho cercato qualcosa di simile in Synaptic Package Manager, ma non riesco a trovare nulla.

C'è qualcosa lì, che mi sono perso? ... o forse questo è disponibile negli script Bash?

Il tipo di utility che mi piacerebbe sarà in grado di leggere / scrivere tramite std-in / std-out o file-in / file-out e gestire formati di appunti Unicode, Rich Text Format, immagini, ecc ...

NB: Non sto cercando un gestore di appunti.


Vedi la domanda correlata di unix.SE: unix.stackexchange.com/questions/30093/…
landroni


vim[enter]"+P : 3 (esegui vim e poi dal " registro - cioè dagli appunti di sistema - incolla il testo) . Quindi hai (uno dei) migliori editor di testo a portata di mano, così puoi farlo :w filename. Inoltre, eseguo sempre vim in tmux, il che significa che se devo copiare un po 'di testo sul terminale, seleziono solo (con vo Vper la selezione della linea) e quindi "+y(che strappa o copia negli appunti), quindi faccio un nuovo nel riquadro tmux e puoi <ctrl> + <shift> + v per incollare. Inoltre, utilizzerò occasionalmente xsel -b > filenamese devo scrivere appunti su un file. Saluti ^ u ^
dylnmc,

Risposte:


131

Sto usando xsel Installa xsel , ma lo sto usando solo con testo semplice e testo unicode.


xselpuò copiare e incollare in tre diversi "appunti". Per impostazione predefinita, utilizza la selezione primaria di X Window System , che è praticamente tutto ciò che è attualmente in selezione. Il sistema X Window ha anche una selezione secondaria (che non è molto usata) e una selezione di appunti . Probabilmente stai cercando la selezione degli appunti , poiché questo è ciò che l'ambiente desktop (ad esempio Gnome, KDE, XFCE) utilizza per i suoi appunti. Per usarlo con xsel:

xsel --clipboard < new-clipboard-contents.txt
xsel --clipboard > current-clipboard-contents.txt

1
Adi ... xsel sembra (?) Essere solo basato sul testo (come hai detto tu), quindi cercherò un'utilità più completa ... Tuttavia, è stato molto interessante per me leggere la sua documentazione informativa ... Sapevo che facendo clic con il pulsante centrale del mouse (nel Terminale) avrei incollato il testo attualmente selezionato nella riga di comando, ma non mi rendevo conto che questa funzione si applica alla maggior parte delle app X ... La selezione di testo più recente può essere incollato con un clic centrale (ma alcune app sembrano sovrascriverlo) .. Due appunti! .. Molto utile .. Devo leggere di più sul terzo buffer di selezione X.
Peter

xsel funziona con il testo Unicode. Puoi leggere di più sugli Appunti X nelle pagine wiki di freedesktop : freedesktop.org/wiki/Specifications/ClipboardsWiki .
Adi Roiban,

Devo concentrarmi su queste nuove informazioni .. 3 appunti! PRIMARY, SECONDARY, CLIPBOARD ... Questo è molto diverso da quello a cui sono abituato in Windows ... Il terzo "CLIPBOARD" sembra essere lo stesso degli appunti di Windows / Mac ... ma è ridicolmente tardi qui .. Tornerò su questo domani ... (Inersting, ma troppo da leggere ora ..)
Peter.O

Grazie ... xselfa il lavoro (per il testo) ... Qualcosa potrebbe apparire per altri formati.
Peter

6
xsel -bè l'abbreviazione di xsel --clipboard.
Andrei Duma,

85

xclip Installa xclip potrebbe essere una delle tue scelte.

cat samples.sh | xclip -sel clip

puoi anche impostarlo nel file .bashrc usando alias.

alias clipboard='xclip -sel clip'

La chiave per incollare i dati binari in un file xclipè dire quali tipi di media hai negli Appunti. Per PNG puoi:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Quindi ora ~/Dropbox/.mybashrc;) puoi aggiungere un alias (clipboard2photo) per incollare facilmente nel file di immagine (forse un giorno lo avremo su Nautilus ).


Sembra buono, ma non ho avuto la possibilità di esaminarlo, eppure ... lo farò al più presto ...
Peter.O

xclip gestisce anche solo le selezioni di testo.
Steve Beattie,

2
Inoltre, il comando può essere breve comexclip -se c
Jeromy Anglim,

1
Non capisco perché questo non sia nella pagina man
Sergiy Kolodyazhnyy

1
Ottengo questo quando provo a incollare le immagini nel file Errore: immagine target / png non disponibile
Emilio Nicolás,

12

parcellite

Ho usato parcellite per molti anni come gestore degli appunti. Funziona nell'area di notifica e offre molte opzioni per la gestione della selezione primaria e degli appunti standard di freedesktop.org.

Icona del vassoio

È stata la mia risposta alla gestione degli elementi degli Appunti.

Preferenze


Sembra una buona app per pannelli. Le "Azioni" sono utili ... ma sfortunatamente non è il tipo di strumento che sto cercando .. Ho riformulato la mia domanda per includere alcune informazioni più specifiche ... Forse la cosa esatta che sto cercando è un oscuro script Python, o simili ... C'erano un paio di ottime utility native solo per Windows disponibili, quindi penso che un equivalente sarebbe fluttuante da qualche parte in Ubuntu / Mondo Linux ...
Peter.O

Cordiali saluti, Parcellite ha una caratteristica interessante: la storia del testo copiato. Per attivare l'incollaggio automatico dalla finestra di dialogo della cronologia, dovresti ancheinstall xdotool
Noam Manos,

10

Recentemente ho trovato gli strumenti xclip-copyfile, xclip-cutfile, e xclip-pastefile(il pacchetto xclip). Questi strumenti ti consentono di copiare / tagliare / incollare interi file tramite la riga di comando.

Puoi vedere la loro pagina man qui.


10

clipit ( http://clipit.rspwn.com/ ) è un gestore di appunti per gtk che consente il piping del testo dalla riga di comando:

ls | clipit;

Modifica: attualmente, non c'è nulla sul sito ufficiale di ClipIt ma puoi ottenerlo da GitHub


Sto usando ClipIt per altri motivi e non sapevo che fosse in grado di ottenere dati dal terminale. Grazie mille per queste informazioni.
Juraj.Lorinc,

3

È possibile utilizzare CopyQ per questo. Dal sito Web:

Gestione degli appunti con funzionalità avanzate

  • CopyQ è un gestore di appunti con cronologia ricercabile e modificabile.
  • Supporta Linux e Windows.
  • Supporto sperimentale per OS X 10.9+.
  • Memorizza testo, HTML, immagini e qualsiasi altro formato personalizzato.
  • Interfaccia della riga di comando avanzata e script.

Per copiare un file di testo:

copyq action "cat /tmp/file.txt" "" && copyq select 0

Per copiare un'immagine (è necessario indicare il tipo MIME):

copyq write image/png - < file.png && copyq select 0

Per copiare un file di dati (è necessario indicare il tipo MIME):

copyq write application/pdf - < file.pdf && copyq select 0

Controlla la loro wiki per ulteriori documentazione ed esempi di utilizzo .

È possibile installarlo tramite PPA : noobslab / Indicatori PPA o scaricando manualmente i file preconfezionati .debdell'ultima scuderia dalla sezione Download del progetto .


1
Il ppa non è aggiornato, almeno per Ubuntu 16.04, è meglio scaricarlo direttamente dal sito GitHub delle versioni di CopyQ .
Nicolai,

3

Se vuoi solo copiare del testo negli appunti:

echo -n "some-text" | xclip -selection clipboard


2

pastie

Di recente è stato rilasciato un nuovo gestore degli Appunti con supporto dell'applet Indicator (anche se non ancora nell'archivio). Oltre a tenere traccia della cronologia degli Appunti di testo, acquisirà e persisterà anche le voci degli Appunti di dati (File, Cartelle, ecc.) Che possono essere utili se si manipolano molto i file tramite un ambiente GUI / Appunti.

testo alternativo

È possibile aggiungere il seguente PPA :ppa:hel-sheep/pastie


Grazie per il suggerimento Marco, ma non ho bisogno di un gestore di appunti. Di tanto in tanto incollerò del testo temporaneo in un file di testo, ma in realtà trovo che un "gestore della storia" rallenta le cose (ma sono solo io) .. Sono davvero alla ricerca di uno strumento da riga di comando che può estrarre / archiviare selettivamente un formato specifico da / verso il clipboad. Suppongo che gli Appunti di Ubuntu siano simili a quelli di Windows (sarei sbalordito se fosse significativamente diverso, perché i requisiti degli utenti sono gli stessi su qualsiasi piattaforma) ... I ' Sono sicuro che qualcuno troverà utile il tuo suggerimento.
Peter,


1

Che ne dite delle impostazioni del demone GPaste , un'applet di daemon di gestione degli Appunti con interfaccia DBus:

  • GPaste è una suite di gestione degli appunti per GNOME scritta in Vala
  • L'aspetto delle impostazioni di GPaste è stato aggiornato per adattarsi meglio al recente GNOME
  • Daemon ora completamente uniforme (niente più polling, meno consumi energetici)
  • GPasteClipboard ora ha un segnale di "cambio proprietario" simile a quello di GtkClipboard
  • Nuova impostazione per impostare la quantità massima di memoria utilizzata dai dati nella cronologia
  • La modalità FIFO è stata abbandonata (manca il design)
  • Pulizia e modernizzazione del codice
  • g_paste_history_add ora è pieno
  • g_paste_keybinder_add_keybinding ora è pieno

Installazione:

Per installarlo in Ubuntu 13.10 , 13.04 , 12.10 o 12.04 , usa i comandi seguenti:

sudo add-apt-repository ppa:webupd8team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell-extensions-gpaste

Oppure installa gpastetramite synaptic package manager(e anche gnome-shell-extensions-gpastese usi Gnome-Shell).

Un'altra opzione è l'installazione attraverso software-center.

inserisci qui la descrizione dell'immagine


1

Sto cercando di sviluppare una soluzione migliore che non sia un gestore di appunti, disponibile su https://github.com/baitisj/copypasta . Non gestisce ancora RTF e HTML correttamente e le immagini di grandi dimensioni pongono problemi, ma sentiti libero di biforcare e inviare patch.


1

Per il formato RTF utilizzo questa procedura: copio il testo negli Appunti nell'applicazione. Se non sono sicuro che si tratti di RTF o altro, utilizzo questo comando per verificare:

xclip -selection clipboard -o -t TARGETS

Quando stampa qualcosa del genere:

OBIETTIVI

text / rtf

testo / RTF

Quindi non posso resistere ad esclamare ad alta voce: "Accidenti, è geniale! Dio benedica Linux!" Dopo quella preghiera, segue solo una cosa ovvia:

xclip  -selection clipboard -o -t text/rtf > mypreciousRTFcontent.rtf

Quindi elaboro tutto in libreoffice e lo invio a tutti i miei amici come spam.

:-)


0

Yo gnomers, questo è quello che ottieni per aver usato CORBA-crap.
Non c'è niente di meglio per il software yar che usare strumenti non installati di default.

Se avessi usato un ambiente desktop adeguato, come KDE-plasma, non avresti avuto quel problema, perché potresti semplicemente usare dbus, da qualunque software ti piaccia, ad esempio la console:

qdbus org.kde.klipper /klipper setClipboardContents "NiHao"
qdbus org.kde.klipper /klipper getClipboardContents

Personalmente, in realtà mi collego a dbus direttamente con C #, il che significa che non ho bisogno di qdbus.
Questo probabilmente non ti sarà utile, dal momento che non hai Klipper, ma ho pensato di menzionarlo comunque, solo per infastidirti per come è stato fatto correttamente.

PS: non copiare quel codice C #, Task.Result potrebbe deadlock.

private static async System.Threading.Tasks.Task<string> GetClipboardContentsAsync()
{
    string clipboardContents = null;

    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        clipboardContents = await klipper.getClipboardContentsAsync();
    } // End Using connection 

    return clipboardContents;
}


private static string GetClipboardContents()
{
    return GetClipboardContentsAsync().Result;
}


private static async System.Threading.Tasks.Task SetClipboardContentsAsync(string text)
{
    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        await klipper.setClipboardContentsAsync(text);
    } // End using connection 

}


private static void SetClipboardContents(string text)
{
    SetClipboardContentsAsync(text).Wait();
}

-1

Si C'è. Provaretmux quale è più avanzato di screen. Per installare tmux, digita questo nel terminale:

sudo apt-get install tmux

Prova anche gpm. I comandi gpme tmuxpotrebbero essere una buona combinazione ...


2
Lo schermo è un emulatore multi-terminale non un gestore di appunti.
Marco Ceppi

Sembra che schermo e tmux solo il lavoro a livello di terminale (non riesco a trovare alcun riferimento al "appunti" in una delle loro informazioni documentazione) ... Quello che sto cercando è un clipboard a livello di sistema di copia e incolla di utilità ... Probabilmente non avrei dovuto usare il terminale come tag ... Il tipo di utility che voglio sarà in grado di leggere / scrivere tramite std-in / std-out o file-in / file-out e gestire Unicode / Formati di appunti Rich-text / Picture / etc ...
Peter.O

Ho appena trovato un riferimento su StackOverflow ... gpmè per un "Appunti" terminale non X, e GNU screenha i suoi "Appunti" anche ... Vedo ora perché li hai menzionati ... Questa è un'ottima informazione, e mi ha portato a una comprensione più profonda di ciò che accade dietro le quinte ... Per ora mi atterrò al "sistema di selezioni" di Xterm (clipboad). Gli "appunti" di Linux sembrano essere così diversi da Windows, che quello che stavo cercando può essere fatto in un modo molto diverso qui .. +1 :)
Peter.O
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.