Jak podłączyć do schowka standardowe wyjście terminala (standardowe wyjście)?

106

Na przykład,

Powiedz, że chcę wyświetlić zawartość folderu i wkleić je bezpośrednio w oknie czatu, aby znajomy mógł je zobaczyć.

Zdaję sobie sprawę, że mogę zrobić ls > filename.txtplik (filename.txt) z tymi treściami; Musiałbym wtedy otworzyć lub wydrukować plik i ręcznie wybrać i skopiować blok tekstowy ( co może być denerwujące / żmudne ). Oczywiście mogłem również wybrać i skopiować wynik lsbezpośrednio z okna terminala.

O wiele szybciej / łatwiej byłoby po prostu przesłać standardowe wyjście do schowka .

Jakie polecenie terminalu pozwala mi to zrobić?

Insperatus
źródło
1
unix.stackexchange.com/questions/3892/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

122

Można to zrobić za pomocą narzędzi wiersza poleceń xsel lub xclip . Ponieważ żaden program nie jest domyślnie wyposażony w Ubuntu, musisz najpierw zainstalować je za pomocą oprogramowania Ubuntu lub terminala. Oto jak w terminalu (ale pamiętaj, że potrzebujesz tylko jednego z tych dwóch).

sudo apt install xsel
sudo apt install xclip

Teraz kilka przykładów. Jeśli chcesz skopiować wynik lsdo schowka, wykonaj następujące czynności:

Z xsel:

ls | xsel -ib

Z xclip:

ls | xclip -sel clip

Można to oczywiście wykorzystać również w przypadku innych poleceń terminala . Powiedzmy, że chcesz wkleić informacje o sieci na forum pomocy.

Z xsel:

sudo lshw -C network | xsel -ib

Z xclip:

sudo lshw -C network | xclip -sel clip

Spraw, aby było to jeszcze łatwiejsze dzięki nowemu aliasowi bash!

Edytuj ~/.bash_aliasesplik (jeśli jeszcze nie istnieje, utwórz go najpierw za pomocą touch ~/.bash_aliases)

Następnie dodaj jeden (w zależności od programu, z którego zdecydowałeś się wybrać):

alias copy='xclip -sel clip'

lub

alias copy='xsel -ib'

Następnie zapisz i zamknij.

Teraz (po zrestartowaniu terminala) możesz wysłać standardowe wyjście do schowka po prostu przesyłając je do „kopiowania” (lub cokolwiek, co zdecydujesz nazwać nowy alias)

Na przykład:

ls | copy
Insperatus
źródło
1
Z nowszymi wersjami Ubuntu powinieneś używać apt. Więc sudo apt install xsellub sudo apt install xclip.
wisbucky,
1
Dzięki za odpowiedź, ale czy wiesz coś tylko o terminalu Linux?
Mohamad
1
@jpaugh. Porównaj dokumentację zarządzania pakietami Ubuntu dla wersji 16.04 vs 14.04 . W 16.04 tylko wspomina, apta nie apt-get. Nadal możesz używać apt-get, ale oni próbują zachęcić ludzi do korzystania apt.
wisbucky
2
Nie musisz ponownie uruchamiać terminalu; możesz po prostusource ~/.bash_aliases
Rob K
1
@Mohamad Są one przeznaczone do działania na serwerze X (ponieważ zapewnia on funkcję schowka). Jeśli tego nie masz, musisz to zrobić w emulatorze terminali. Jak to zrobić, zależy od faktycznego oprogramowania, którego używasz, ponieważ nie ma na to de facto standardu.
Thorbjørn Ravn Andersen
2

Jeśli próbujesz skopiować do schowka za pomocą Ubuntu w Windows Subsystem for Linux (WSL), xsel lub xclip nie będą działać, chyba że używasz X Windows, ponieważ schowek jest tylko dla grafik. Aby jednak użyć standardowego wyjścia terminala do schowka w WSL Ubuntu, możesz użyć clip.exe. Następnie możesz wkleić do terminalu WSL Ubuntu za pomocą standardowych poleceń wklejania, a skopiowany tekst będzie również dostępny w systemie Windows. Na przykład,

pwd | clip.exe 

skopiuje bieżący katalog roboczy do schowka (Windows).

Ten wynik wyszukiwania pojawia się u góry, gdy szukasz sposobów kopiowania / wklejania tekstu w WSL, więc myślę, że warto o tym wspomnieć, aby czytelnicy nie musieli niepotrzebnie instalować xsel lub xclip w Ubuntu i zamiast tego używać clip.exe.

Snap Shot
źródło