Copia il contenuto di un file negli Appunti senza visualizzarne il contenuto


67

Come copiare il contenuto di un file in UNIX senza visualizzare il contenuto del file. Non voglio cat o vi per vedere il contenuto.

Voglio copiarli negli appunti in modo da poterlo incollare nuovamente sul mio blocco note di Windows.

Non riesco a copiare il file da quel server a un altro a causa delle restrizioni di accesso.


Non è possibile accedere al contenuto di un file senza aprirlo ...
123

OK, se è così c'è un modo semplice per copiare un file molto grande. Ho avuto 1000 linee.
Web Nash,

se il tuo file è enorme, gli appunti falliranno comunque. Quando le restrizioni di accesso indicano che non è possibile leggere il file, ci si perde ovviamente. Se non riesci a copiare il file perché non puoi scrivere il file, devi chiederti, se esiste un'altra destinazione su cui puoi scrivere.
ikrabbe,

Molto grande. 1000 linee. Sceglierne uno.
123

2
Che cos'è un blocco note di Windows a proposito?
Stéphane Chazelas,

Risposte:


77

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 CLIPBOARD X11 senza visualizzarlo , è possibile utilizzare l' utilità xclipo xsel.

xclip -sel c < file

O:

xsel -b < file

Per memorizzare il contenuto della fileselezione CLIPBOARD X11.

Si noti che dovrebbe essere memorizzato utilizzando una codifica UTF-8 o altrimenti incollare non funzionerà correttamente. Se il filecodice è codificato usando un altro set di caratteri, dovresti prima convertirlo in UTF-8, come:

iconv -f latin1 -t utf8 | xclip -sel c

Per un file codificato in latino1 / iso8859-1 .

Per memorizzarlo come CUT_BUFFER (quelli sono ancora interrogati da alcune applicazioni come xtermquando nulla rivendica le selezioni CLIPBOARD o PRIMARY X e non è necessario avere un processo in esecuzione per servirlo come per le selezioni), anche se probabilmente non vorrai o bisogno di 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).

Schermo GNU

GNU screenha il readbufcomando di slurp il contenuto di un file nel suo buffer copia-incolla (con il quale si incolla ^A]). Così:

screen -X readbuf file

Apple OS / X

Sebbene Apple OS / X possa usare X11. Per impostazione predefinita, non funziona a meno che non si esegua un'applicazione X11. Saresti in grado di usare xclipo xsellì come OS / X dovrebbe sincronizzare la selezione CLIPBOARD X11 con i buffer di pasteboard OS / X, ma sarebbe un po 'uno spreco per avviare il server X11 proprio per quello.

Su OS / X, è possibile utilizzare il pbcopycomando per archiviare contenuto arbitrario in buffer di pasteboard :

pbcopy < file

(la codifica dei caratteri del file dovrebbe essere quella della locale).

conchiglie

La maggior parte delle shell ha i propri buffer di copia e incolla. In modalità emacs, le operazioni di taglio e copia memorizzano il testo copiato / tagliato su una pila con cui si strappa / incolla Ctrl-Ye si scorre conAlt+Y

zsh CUTBUFFER / killring

In zsh, lo stack è memorizzato $killringnell'array e nella parte superiore dello stack nella $CUTBUFFERvariabile sebbene tali variabili siano 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
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

Il zle-line-initwidget 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.


3
Sto riscontrando questo errore:Error: Can't open display: (null)
Marcelo Filho,

Stesso problema qui in fedora 7
Michael Pacheco

@MarceloFilho xclipe xselsono utility X11, manipolano le selezioni X11, quindi possono essere utilizzate solo in un ambiente X11 dove $DISPLAYè impostato.
Stéphane Chazelas,

2

Forse volevi chiedere questo . Ma qualsiasi file che si desidera leggere deve essere aperto da una chiamata di sistema. Se non hai accesso a un file, non puoi leggerlo. Questa è l'idea di accesso limitato.


Qual è il tuo vero problema? Se riesci a leggere ma non riesci a copiare, potresti non essere in grado di scrivere. Ma quando vuoi copiare devi scrivere i dati da qualche parte.
ikrabbe,

grazie!!! mi hai salvato la vita)
Alena Kastsiukavets il

0

Utilizzando X11:

xclip -o > file

Se riesci a leggere il file, il problema di accesso riguarda il server di destinazione.

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.