Come copiare il contenuto di un file in UNIX senza visualizzare il contenuto del file. Non voglio cat o vi per vedere i contenuti.
Voglio copiarli negli appunti in modo da poterli incollare di nuovo sul mio blocco note di Windows.
Non riesco a copiare il file da quel server a un altro a causa delle restrizioni di accesso.
Risposta accettata:
X11
Se si utilizza X11 (la GUI più comune sui tradizionali sistemi basati su Unix o Linux), per copiare il contenuto di un file nella selezione degli APPUNTI di X11 senza visualizzare it, puoi usare xclip
o xsel
utilità.
xclip -sel c < file
Oppure:
xsel -b < file
per memorizzare il contenuto di file
come la selezione APPUNTI X11.
Per memorizzare l'output di un comando:
mycommand | xclip -sel c
mycommand | xsel -b
Nota che dovrebbe essere archiviato utilizzando una codifica UTF-8 o altrimenti incollare non funzionerà correttamente. Se il file
è codificato utilizzando un altro set di caratteri, dovresti prima convertire in UTF-8, come:
<file iconv -f latin1 -t utf8 | xclip -sel c
per un file codificato in latin1 /iso8859-1 .
xsel
non funziona con dati binari (non accetta byte nulli), ma xclip
fa.
Per memorizzarlo come CUT_BUFFER (questi sono ancora interrogati da alcune applicazioni come xterm
quando nulla rivendica le selezioni CLIPBOARD o PRIMARY X e non è necessario che sia in esecuzione un processo per servirlo come per le selezioni), anche se probabilmente non vorrai o non dovrai usarlo al giorno d'oggi:
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(rimuove i caratteri di nuova riga finali da file
).
Schermata GNU
GNU screen
ha il readbuf
comando per assorbire il contenuto di un file nel proprio buffer copia-incolla (che incolli con ^A]
). Quindi:
screen -X readbuf file
Apple OS/X
Anche se Apple OS/X può usa X11. Non funziona per impostazione predefinita a meno che non si esegua un'applicazione X11. Potresti usare xclip
o xsel
lì come OS/X dovrebbe sincronizzare la selezione X11 CLIPBOARD con i buffer OS/X pasteboard, ma sarebbe un po' uno spreco avviare il server X11 solo per quello.
Su OS/X, puoi usare pbcopy
comando per memorizzare contenuto arbitrario in pasteboard buffer:
pbcopy < file
(la codifica dei caratteri del file dovrebbe essere quella della locale). Per memorizzare l'output di un comando:
mycommand | pbcopy
Conchiglie
La maggior parte delle shell ha i propri buffer copia-incolla. In modalità emacs, le operazioni di taglio e copia memorizzano il testo copiato/tagliato su una pila che si strappa/incolla con Ctrl-Y e scorrere con Alt+Y
Correlati:prendi la prima colonna da 2 file e scrivila in un terzo file?zsh CUTBUFFER/killring
In zsh
, lo stack è archiviato nel $killring
array e la parte superiore dello stack nel $CUTBUFFER
variabile anche se queste variabili sono disponibili solo dai widget Zsh Line Editor (zle) e alcuni widget specializzati sono il modo preferito per manipolarli.
Poiché quelli sono disponibili solo tramite ZLE, farlo con i comandi è un po' contorto:
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
mycommand | pbcopy
mycommand | pbcopy
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A
Il zle-line-init
widget speciale viene eseguito una volta all'inizio di ogni nuovo prompt dei comandi. Ciò significa che il file verrà copiato solo al prompt successivo. Ad esempio, se lo fai:
file-copy file; sleep 2
Il file verrà copiato solo dopo quei 2 secondi.