Jak wysłać stdin do schowka?

44

Czy istnieje uniksowa funkcjonalność, która pozwala na:

echo "Some Text" | copy-to-clipboard
Stefan
źródło
masz na myśli stdout?
phunehehe
3
to naprawdę zależy od tego, po której stronie rury stoisz: P do polecenia, które wysyła ją do schowka, jego stdin.
Stefan,
2
Ludzie, którzy używają Uniksa od dłuższego czasu, powiedzą ci, że lepiej pisać <longTextFile straightToClipboard. Jest taki sam cat longTextFile straightToClipboard, ale nie wymaga uruchamiania cat. Tylko obserwacja. Możesz to zignorować. Zobacz Nagrodę za bezużyteczne korzystanie z kota, aby uzyskać dodatkowe informacje i przykłady, jeśli jesteś zainteresowany.
Mikel

Odpowiedzi:

34

Istnieje kilka narzędzi zdolnych do pisania w schowku; Używam xsel. Zapisuje flagi do podstawowego wyboru X ( -p), wyboru dodatkowego ( -s) lub schowka ( -b). Pominięcie -ispowoduje, że będzie czytać ze standardowego wejścia, więc chcesz:

$ echo "Some Text" | xsel -i -b
Michał Mrożek
źródło
4
Kolejnym jest xclip; domyślnie przyjmuje standardowe wejście. Używam go tylko dlatego, że jest to pierwsze takie narzędzie, o którym się dowiedziałem.
Shawn J. Goff,
@Shawn Opublikuj jako osobną odpowiedź :)
Michael Mrozek
Myślę, że -inie jest to wymagane w tym przypadku: man xsel1.2.0 mówi:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 24 改造 中心 法轮功 六四 事件
xsel nie działał dla mnie (nie wiem dlaczego), ale xclip (na inne odpowiedzi) działał.
markrian
11

Używając xclip, jak sugerował @Nicolas, jeśli chcesz później wkleić zawartość schowka, na przykład używając Ctrl + V, możesz użyć tego w następujący sposób:

$ echo "Some Text" | xclip -selection clipboard
danidemi
źródło
1
Nie próbuje ożywić starego pytania, ale jeśli jesteś leniwy, to echo "Some Text" | xclip -sel cteż działa.
anonimowy
9

możesz użyć xsel

xsel < file 
jamespo
źródło
10
Pytanie brzmi: który schowek? Serwer Linux X ma 3 (zazwyczaj używane są tylko 2) ... xsel domyślnie korzysta ze schowka PODSTAWOWEGO. Schowek PODSTAWOWY uruchamia się automatycznie za każdym razem , gdy po prostu wybierzesz coś takiego. Wklejasz, naciskając środkowy przycisk myszy. Schowek typu Ctrl + C / Crtr + V nazywa się schowkiem SCHOWEK :) .. więc jeśli chcesz używać schowka Ctrl + C / Ctrl + V ze słowem „xsel”, polecenie brzmi: xsel -ib <file-long-or-short(„Spójrz, nie ma kota!” :) ... lub jeśli chcesz <file-long-or-short xsel -ib... -i jest domyślne. -b jest dla typu clipBoard
Peter.O
terminal gnome. Edytowane. @jamespo - to nie działa.
ripper234
u mnie działa na gnome-terminal w Ubuntu 10.04 za pomocą Xsel w repo (wklej ze środkowego przycisku)
jamespo
7

W Mac OS X są urocze pbcopyi pbpastepolecenia, które są bardzo pomocne :)

cwd
źródło
0

Najprostszy jest prawdopodobnie xclip:

$ echo "Some Text" | xclip

Następnie wklej za pomocą środkowego przycisku myszy.

Na przykład xselzazwyczaj nie jest instalowany domyślnie, więc może być konieczne jego zainstalowanie ( sudo apt-get install xclipna Debianie / Ubuntu).

Nicolas Raoul
źródło
2
xclipwymaga -selection clipboardopcji. Domyślnym wyborem dla strony podręcznika jest coś innego.
Acumenus
0

xclipjest dobrym sposobem, aby przejść zgodnie z odpowiedzią @Nicolas Raoul, ale podczas pipetowania do schowka wszystkiego, co zawiera nową linię, na przykład pwd, nowa linia jest również kopiowana. W niektórych sytuacjach może być pożądane, ale przeważnie nie chce się nowej linii.

Rozwiązaniem jest albo:

echo -n $(pwd) | xclip -selection clipboard

( -nusuwa nowy wiersz z powtórzonego argumentu)

lub:

printf %s $(pwd) | xclip -selection clipboard

""Wokół $(pwd)może być wymagane, ale działa i bez na ubuntu z bash.

calocedrus
źródło