Skopiuj zawartość pliku do schowka bez wyświetlania jego zawartości

66

Jak skopiować zawartość pliku w systemie UNIX bez wyświetlania zawartości pliku. Nie chcę kota ani vi, aby zobaczyć zawartość.

Chcę skopiować je do schowka, aby móc wkleić je z powrotem w notatniku systemu Windows.

Nie mogę skopiować pliku z tego serwera na inny z powodu ograniczeń dostępu.

Web Nash
źródło
Nie można uzyskać dostępu do zawartości pliku bez jego otwarcia ...
123
OK, jeśli tak, to czy istnieje prosty sposób na skopiowanie bardzo dużego pliku. Mam około 1000 linii.
Web Nash
jeśli twój plik jest ogromny, schowek i tak się nie powiedzie. Gdy ograniczenia dostępu mówią, że nie możesz odczytać pliku, oczywiście się zgubiłeś. Jeśli nie możesz skopiować pliku, ponieważ nie możesz go zapisać, musisz zadać sobie pytanie, czy jest inne miejsce docelowe, do którego możesz pisać.
ikrabbe
Bardzo duży. 1000 linii. Wybierz jedno.
123
2
Co to jest notatnik systemu Windows BTW?
Stéphane Chazelas

Odpowiedzi:

77

X11

Jeśli używasz X11 (najczęściej używanego GUI w tradycyjnych systemach opartych na Unixie lub Linuksie), aby skopiować zawartość pliku do wyboru SCHOWKA X11 bez wyświetlania , możesz użyć narzędzia xcliplub xsel.

xclip -sel c < file

Lub:

xsel -b < file

Aby zapisać zawartość filejako wybór SCHOWEK X11.

Pamiętaj, że należy go przechowywać przy użyciu kodowania UTF-8, w przeciwnym razie wklejanie nie będzie działać poprawnie. Jeśli filekodowany jest przy użyciu innego zestawu znaków, należy najpierw przekonwertować na UTF-8, na przykład:

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

Dla pliku zakodowanego w latin1 / iso8859-1 .

Aby zapisać go jako CUT_BUFFER (są one nadal sprawdzane przez niektóre aplikacje, np. xtermGdy nic nie twierdzi, że CLIPBOARD lub PODSTAWOWE X wyborów i nie muszą mieć uruchomionego procesu, aby obsługiwać je jak dla wyborów), chociaż prawdopodobnie nie będziesz chciał lub muszę tego obecnie używać:

xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"

(usuwa końcowe znaki nowego wiersza file).

Ekran GNU

GNU screenma readbufpolecenie, aby zasłonić zawartość pliku do własnego bufora kopiuj-wklej (który wklejasz ^A]). Więc:

screen -X readbuf file

Apple OS / X

Chociaż Apple OS / X może używać X11. Domyślnie nie działa, chyba że uruchomisz aplikację X11. Byłbyś w stanie użyć xcliplub xseltam, ponieważ OS / X powinien zsynchronizować wybór SCHOWKA X11 z buforami pasteboard OS / X, ale byłoby to trochę marnotrawstwem, aby uruchomić serwer X11 właśnie do tego.

W systemie OS / X można użyć pbcopypolecenia do przechowywania dowolnej zawartości w buforach stołu roboczego:

pbcopy < file

(kodowanie znaków w pliku powinno być kodowaniem regionalnym).

Muszle

Większość powłok ma własne bufory kopiuj-wklej. W trybie emacsa operacje wycinania i kopiowania przechowują skopiowany / wycięty tekst na stosie, którym szarpiesz / wklejasz Ctrl-Y, i przeglądasz za pomocąAlt+Y

zsh CUTBUFFER / killilling

W zsh, stos jest przechowywana w $killringtablicy i na górze stosu w $CUTBUFFERzmiennej chociaż te zmienne są dostępne tylko z zsh Line Editor (Zle) widgetów i kilka wyspecjalizowanych widżety są preferowanym sposobem manipulowania tymi.

Ponieważ są one dostępne tylko za pośrednictwem ZLE, robienie tego za pomocą poleceń jest nieco skomplikowane:

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       

zle-line-initSpecjalny widget jest wykonywana raz na początku każdego nowego wiersza poleceń. Oznacza to, że plik zostanie skopiowany tylko przy następnym znaku zachęty. Na przykład, jeśli wykonasz:

file-copy file; sleep 2

Plik zostanie skopiowany dopiero po tych 2 sekundach.

Stéphane Chazelas
źródło
3
Mam do czynienia z tym błędem:Error: Can't open display: (null)
Marcelo Filho,
Ten sam problem tutaj w Fedorze 7
Michael Pacheco
@MarceloFilho xclipi xselsą narzędziami X11, manipulują zaznaczeniami X11, więc można ich używać tylko w środowisku X11, w którym $DISPLAYjest ustawiony.
Stéphane Chazelas
2

Może chciałeś o to zapytać . Ale każdy plik, który chcesz odczytać, musi zostać otwarty przez jakieś wywołanie systemowe. Jeśli nie masz dostępu do pliku, nie możesz go odczytać. To jest idea ograniczonego dostępu.

ikrabbe
źródło
Więc jaki jest twój rzeczywisty problem? Jeśli umiesz czytać, ale nie możesz kopiować, możesz nie być w stanie pisać. Ale kiedy chcesz skopiować, musisz gdzieś zapisać dane.
ikrabbe
Dziękuję Ci!!! uratowałeś mi życie)
Alena Kastsiukavets
0

Za pomocą X11:

xclip -o > file

Jeśli możesz odczytać plik, problem z dostępem dotyczy serwera docelowego.

tjombka
źródło