Właśnie zadałem powiązane pytanie, ponieważ nie mogę uruchomić XClip podczas logowania do Ubuntu z Git Bash w systemie Windows: stackoverflow.com/q/60117294/470749
Zawsze chciałem to zrobić i znalazłem przyjemny i łatwy sposób. Zapisałem całą procedurę na wypadek, gdyby ktokolwiek jej potrzebował.
Najpierw zainstaluj program 16 kB o nazwie xclip:
sudo apt-get install xclip
Następnie możesz xclipprzesłać dane wyjściowe do skopiowania do schowka:
cat file | xclip
Aby wkleić właśnie skopiowany tekst, użyj:
xclip -o
Aby uprościć życie, możesz ustawić alias w pliku .bashrc tak jak ja:
alias "c=xclip"
alias "v=xclip -o"
Aby zobaczyć, jak to jest użyteczne, wyobraź sobie, że chcę otworzyć moją bieżącą ścieżkę w nowym oknie terminala ( w niektórych systemach mogą istnieć inne sposoby, takie jak Ctrl+ T, ale to tylko w celach ilustracyjnych):
Terminal1:
pwd | c
Terminal2:
cd `v`
Zwróć uwagę na ` ` okolicę v. Wykonuje się vto najpierw jako polecenie, a następnie zastępuje je w miejscu cddo użycia.
Kopiuj tylko zawartość do Xschowka
cat file | xclip
Jeśli chcesz wkleić w innym miejscu niż Xaplikacja, spróbuj tego:
„plik kota | xclip” kopiuje zawartość tylko do schowka „X”, jeśli chcesz wkleić gdzie indziej niż aplikację „X”, wypróbuj ten: „plik kota | xclip - schowek wyboru”
khotyn
5
Twój wybór uchwytu jest odpowiedni!
Matt Joiner
4
Jeśli chcesz usunąć znak nowej linii, aby móc bezpośrednio wkleić i edytować wynik „pwd | c”, możesz zrobić „pwd | tr -d '\ n' | xclip -selection c”
Anake
12
również definiuj alias "cs=xclip -selection clipboard"i alias "vs=xclip -o -selection clipboard"ułatwiaj kopiowanie / wklejanie ze schowka systemowego
Yibo Yang
1
Co z rozwiązaniem, w którym nie mam dostępu sudo, a xclip nie jest zainstalowany?
DanGordon,
179
W systemie OS X użyj pbcopy; pbpasteidzie w przeciwnym kierunku.
możesz także użyć cat, jeśli już z nim pracujesz: cat file.txt | pbcopy
rtrigoso
3
Wiem, że komentarz ma 5 lat, ale na wypadek, gdyby ktoś natknął się na to w przyszłości, aby użyć komendy, wykonajgit merge-base master some-branch | pbcopy
Sam
62
Stworzyłem narzędzie dla Linux / OSX / Cygwin, które jest podobne do niektórych z tych innych, ale nieco unikalne. Nazywam to cbi można go znaleźć w tym githubie .
W tym zestawieniu pokazuję, jak kopiować i wklejać za pomocą wiersza poleceń, używając Linuksa, macOS i Cygwin.
Uwaga: pierwotnie chciałem tylko wspomnieć o tym w moim komentarzu do odpowiedzi Boba Enohpa . Ale potem zdałem sobie sprawę, że powinienem dodać README do mojej treści. Ponieważ edytor treści nie oferuje podglądu Markdown, użyłem tutaj pola odpowiedzi i po skopiowaniu / wklejeniu go do mojej myśli pomyślałem: „Równie dobrze mogę przesłać odpowiedź”.
Działa to idealnie dla mnie, aby skopiować dane wyjściowe polecenia do schowka w terminalu na macOS, dzięki!
Joshua Dyck
46
Napisałem ten mały skrypt, który eliminuje zgadywanie z poleceń kopiowania / wklejania.
Wersja skryptu dla systemu Linux polega na tym, że xclip jest już zainstalowany w twoim systemie. Skrypt nazywa się schowkiem.
#!/bin/bash# Linux version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if command -v xclip 1>/dev/null;thenif[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
xclip -i -selection clipboard
else# stdin is not a pipe# clipboard -> stdout
xclip -o -selection clipboard
fielse
echo "Remember to install xclip"fi
Wersja skryptu dla OS X opiera się na pbcopy i pbpaste, które są preinstalowane na wszystkich komputerach Mac.
#!/bin/bash# OS X version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
pbcopy
else# stdin is not a pipe# clipboard -> stdout
pbpaste
fi
Korzystanie ze skryptu jest bardzo proste, ponieważ po prostu podłączasz lub wyjmujesz, clipboardjak pokazano w tych dwóch przykładach.
Używam nazw pbcopyi pbpastew systemie Linux, więc działa zarówno w systemie Linux, jak i OS X.
StackedCrooked
Aby skrypt działał globalnie w Ubuntu: * Zapisz go w ~/.scripts/clipboard * Ustaw, aby był wykonywalny chmod +x ~/.scripts/clipboard dla bash: * dodaj export PATH=$PATH:~/.scriptsna końcu ~/.bashrc dla fish: * dodaj set PATH ~/.scripts $PATHdo ~/.config/fish/fish.config Jeśli któryś z plików lub folderów jeszcze nie istnieje, po prostu je utwórz.
Hokej
2
Możesz również owinąć ten skrypt jako funkcję clipboard(){ ... }i wkleić go do .bashrc
Sebastian Nowak
Jest to bardzo podobne do tego, które stworzyłem, ale zezwalam na tworzenie łańcuchów date | cb | tee -a updates.log. To wysłałoby dane datewyjściowe polecenia do schowka i przekazało je do tee -apolecenia, które dołącza je do pliku i przekazuje dalej stdout. Ale to jest jak „ szczelny trójnik do schowka”, ponieważ jeśli po prostu nie date | cbdostaniesz żadnego wyjścia. I wreszcie robi to również cb > file.txtgist.github.com/RichardBronosky/...
Bruno Bronosky
Jedna sugestia - usuń końcowy znak nowego wiersza, aby uniknąć wykonania polecenia podczas wklejania (np. W przypadku kopiowania wklejania ścieżki). Robię to, zmieniając polecenie xclip -i -selection clipboardnaxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev,
23
Dodaj to do ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Teraz clip p pasty i c klip kopii - ale można to zrobić również bardziej wyszukane rzeczy:
clipp | sed 's/^/ /'| cclip
↑ wcina twój schowek; dobre dla witryn bez { }przycisku przepełnienia stosu
Możesz go dodać, uruchamiając to:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
@AfshinMoazami, tytuł i samo pytanie są ogólne, tylko tagi wskazują na system unix, a moja odpowiedź dotyczy przypadku, gdy próbujesz uzyskać datę z serwera unix na maszynę z systemem Windows, co może być przydatne dla przyszłych czytelników.
d.raev
1
Pozytywne, ponieważ tak, przydatne dla administratorów Windows, którzy mają tylko Powershell do grania lokalnie (chociaż teraz z faktycznie działającym LSW, mogę wpaść w bash bezpośrednio z Powershell i stamtąd robić moje * nixy rzeczy).
od
echo Hello World | clip
5
W przypadku systemu Mac jest to przykładowy sposób kopiowania (do schowka) wklejania (ze schowka) za pomocą wiersza polecenia
Zrobiłem małe narzędzie zapewniające podobną funkcjonalność, bez użycia xclip ani xsel. stdoutjest kopiowany do schowka i można go ponownie wkleić w terminalu. Widzieć:
Pamiętaj, że to narzędzie nie wymaga sesji X. Ze schowka można korzystać tylko w terminalu i nie trzeba go wklejać Ctrl+Vani klikać środkowym przyciskiem myszy w inne okna X.
Uwaga: To musi być bash, ponieważ TCSH nie obsługuje argumentów wieloliniowych.
Po nim następuje alias TCSH w .cshrc.
alias clipboard xargs -0/path/to/foo
Wyjaśnienie:
xargs -0potoki stdin w jeden argument. Argument ten jest przekazywany do pliku wykonywalnego bash który wysyła „Kopiuj do schowka” wniosek do klipperkorzystania qdbus. Potok do /dev/nullnie ma drukować znaku nowej linii zwracanego przez qdbuskonsolę.
Przykładowe użycie:
ls | clipboard
Spowoduje to skopiowanie zawartości bieżącego folderu do schowka.
Uwaga: działa tylko jako potok. Jeśli chcesz skopiować argument, użyj bezpośrednio pliku wykonywalnego bash .
Zauważ, że jeśli xserver (taki jak vcxsvr lub xming) jest zainstalowany w systemie Windows, wyświetlacz jest włączony i xclipboard jest uruchomiony, możesz właściwie używać xclipa.
bitbyte
0
Wystarczy zakryć przypadek krawędzi :) i ponieważ tytuł pytania pyta (przynajmniej teraz), jak skopiować dane wyjściowe polecenia bezpośrednio do schowka.
Często uważam, że przydatne jest skopiowanie danych wyjściowych polecenia po jego wykonaniu i nie chcę lub nie mogę wykonać polecenia ponownie.
W tym scenariuszu możemy użyć gdm lub podobnego narzędzia myszy i wybrać za pomocą myszy. apt-get install gdma następnie kliknięcie prawym przyciskiem myszy lub kombinacje Cntrl + Shift + c oraz Cntrl + Shift + v do skopiowania i wklejenia w terminalu
Lub, co jest dla mnie preferowaną metodą (ponieważ mysz nie może prawidłowo wybrać w jednym okienku, gdy masz wiele okien obok siebie i musisz wybrać więcej niż jedną linię), używając tmux możemy skopiować do bufora tmux przy użyciu standardowego [, spacja, przejdź do wyboru, wprowadź lub możesz wybrać blok kodu. Jest to również szczególnie przydatne, gdy znajdujesz się na jednym z pasów multipleksera cli, np. Tmux ORAZ musisz wybrać wiązkę tekstu, ale nie numery linii (moja konfiguracja vima wyświetla numery linii)
Następnie możesz użyć polecenia:
bufor zapisu tmux - | xclip -i
Możesz oczywiście aliasować to, co lubisz lub wiązać bezpośrednio w pliku konfiguracyjnym tmux
Ma to na celu dać ci konceptualną odpowiedź na ten przypadek krawędzi, gdy ponowne wykonanie polecenia nie jest możliwe. Jeśli potrzebujesz bardziej szczegółowych przykładów kodu, daj mi znać
apt install xclip
icat file | xclip -sel clip
Odpowiedzi:
Zawsze chciałem to zrobić i znalazłem przyjemny i łatwy sposób. Zapisałem całą procedurę na wypadek, gdyby ktokolwiek jej potrzebował.
Najpierw zainstaluj program 16 kB o nazwie
xclip
:Następnie możesz
xclip
przesłać dane wyjściowe do skopiowania do schowka:Aby wkleić właśnie skopiowany tekst, użyj:
Aby uprościć życie, możesz ustawić alias w pliku .bashrc tak jak ja:
Aby zobaczyć, jak to jest użyteczne, wyobraź sobie, że chcę otworzyć moją bieżącą ścieżkę w nowym oknie terminala ( w niektórych systemach mogą istnieć inne sposoby, takie jak Ctrl+ T, ale to tylko w celach ilustracyjnych):
Zwróć uwagę na
` `
okolicęv
. Wykonuje sięv
to najpierw jako polecenie, a następnie zastępuje je w miejscucd
do użycia.Kopiuj tylko zawartość do
X
schowkaJeśli chcesz wkleić w innym miejscu niż
X
aplikacja, spróbuj tego:źródło
alias "cs=xclip -selection clipboard"
ialias "vs=xclip -o -selection clipboard"
ułatwiaj kopiowanie / wklejanie ze schowka systemowegoW systemie OS X użyj
pbcopy
;pbpaste
idzie w przeciwnym kierunku.źródło
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Stworzyłem narzędzie dla Linux / OSX / Cygwin, które jest podobne do niektórych z tych innych, ale nieco unikalne. Nazywam to
cb
i można go znaleźć w tym githubie .W tym zestawieniu pokazuję, jak kopiować i wklejać za pomocą wiersza poleceń, używając Linuksa, macOS i Cygwin.
Linux
System operacyjny Mac
Cygwin
Uwaga: pierwotnie chciałem tylko wspomnieć o tym w moim komentarzu do odpowiedzi Boba Enohpa . Ale potem zdałem sobie sprawę, że powinienem dodać README do mojej treści. Ponieważ edytor treści nie oferuje podglądu Markdown, użyłem tutaj pola odpowiedzi i po skopiowaniu / wklejeniu go do mojej myśli pomyślałem: „Równie dobrze mogę przesłać odpowiedź”.
cb
Trójnik szczelny do schowka
Ten skrypt jest wzorowany na
tee
(patrzman tee
).To jak normalne polecenia kopiowania i wklejania, ale ujednolicone i zdolne do wyczuwania, kiedy chcesz, aby było łańcuchowe
Przykłady
Kopiuj
Pasta
Łańcuch
Kopiuj przez przekierowanie pliku
(chronologicznie sensowne było pokazanie tego na końcu)
źródło
Napisałem ten mały skrypt, który eliminuje zgadywanie z poleceń kopiowania / wklejania.
Wersja skryptu dla systemu Linux polega na tym, że xclip jest już zainstalowany w twoim systemie. Skrypt nazywa się schowkiem.
Wersja skryptu dla OS X opiera się na pbcopy i pbpaste, które są preinstalowane na wszystkich komputerach Mac.
Korzystanie ze skryptu jest bardzo proste, ponieważ po prostu podłączasz lub wyjmujesz,
clipboard
jak pokazano w tych dwóch przykładach.źródło
pbcopy
ipbpaste
w systemie Linux, więc działa zarówno w systemie Linux, jak i OS X.~/.scripts/clipboard
* Ustaw, aby był wykonywalnychmod +x ~/.scripts/clipboard
dla bash: * dodajexport PATH=$PATH:~/.scripts
na końcu~/.bashrc
dla fish: * dodajset PATH ~/.scripts $PATH
do~/.config/fish/fish.config
Jeśli któryś z plików lub folderów jeszcze nie istnieje, po prostu je utwórz.clipboard(){ ... }
i wkleić go do .bashrcdate | cb | tee -a updates.log
. To wysłałoby danedate
wyjściowe polecenia do schowka i przekazało je dotee -a
polecenia, które dołącza je do pliku i przekazuje dalejstdout
. Ale to jest jak „ szczelny trójnik do schowka”, ponieważ jeśli po prostu niedate | cb
dostaniesz żadnego wyjścia. I wreszcie robi to równieżcb > file.txt
gist.github.com/RichardBronosky/...xclip -i -selection clipboard
naxargs echo -n | xclip -i -selection clipboard
Dodaj to do
~/.bashrc
:Możesz go dodać, uruchamiając to:
źródło
Używam Parcellite i
xsel
aby skopiować ostatnią wiadomość zatwierdzenia zgit
mojego menedżera schowka (z jakiegoś powoduxclip
nie działa):źródło
Bez korzystania z zewnętrznych narzędzi, jeśli łączysz się z widokiem serwera SSH, jest to stosunkowo łatwe polecenie:
Z wiersza polecenia systemu Windows 7+:
Spowoduje to umieszczenie zawartości pliku zdalnego w lokalnym schowku.
(Polecenie wymaga uruchomienia programu Pageant dla klucza lub poprosi o podanie hasła.)
źródło
echo Hello World | clip
W przypadku systemu Mac jest to przykładowy sposób kopiowania (do schowka) wklejania (ze schowka) za pomocą wiersza polecenia
Skopiuj wynik
pwd
polecenia do schowka jakoUżyj zawartości schowka jako
źródło
Zrobiłem małe narzędzie zapewniające podobną funkcjonalność, bez użycia xclip ani xsel.
stdout
jest kopiowany do schowka i można go ponownie wkleić w terminalu. Widzieć:https://sourceforge.net/projects/commandlinecopypaste/
Pamiętaj, że to narzędzie nie wymaga sesji X. Ze schowka można korzystać tylko w terminalu i nie trzeba go wklejać Ctrl+Vani klikać środkowym przyciskiem myszy w inne okna X.
źródło
W systemie Linux z zainstalowanym xclip:
źródło
Na podstawie poprzednich postów skończyłem z następującym lekkim aliasem, który można dodać do
.bashrc
:Przykłady:
źródło
Pochodzę z tłem okrojona KDE i nie mają dostępu do
xclip
,xsel
lub innych wymyślnych rzeczy. Mam konsolę TCSH, co gorsza.Przybory:
qdbus
klipper
xargs
bash
Utwórz plik wykonywalny bash
foo.sh
.Uwaga: To musi być bash, ponieważ TCSH nie obsługuje argumentów wieloliniowych.
Po nim następuje alias TCSH w
.cshrc
.Wyjaśnienie:
xargs -0
potoki stdin w jeden argument. Argument ten jest przekazywany do pliku wykonywalnego bash który wysyła „Kopiuj do schowka” wniosek doklipper
korzystaniaqdbus
. Potok do/dev/null
nie ma drukować znaku nowej linii zwracanego przezqdbus
konsolę.Przykładowe użycie:
Spowoduje to skopiowanie zawartości bieżącego folderu do schowka.
Uwaga: działa tylko jako potok. Jeśli chcesz skopiować argument, użyj bezpośrednio pliku wykonywalnego bash .
źródło
Zazwyczaj uruchamiam to polecenie, gdy muszę skopiować moje
ssh-key
:ctrl+v
gdziekolwiek indziej.źródło
na Wayland xcopy nie działa, zamiast tego użyj schowka wl . np. na fedorze
źródło
Dla tych, którzy używają bash zainstalowanego w systemie Windows (znanym jako Windows Subsystem for Linux (WSL)), próba xclip spowoduje błąd:
Zamiast tego przypomnij sobie, że podsystem linux ma dostęp do plików wykonywalnych systemu Windows. Możliwe jest użycie clip.exe jak
co pozwala na użycie polecenia wklej (ctrl-v).
źródło
Wystarczy zakryć przypadek krawędzi :) i ponieważ tytuł pytania pyta (przynajmniej teraz), jak skopiować dane wyjściowe polecenia bezpośrednio do schowka.
Często uważam, że przydatne jest skopiowanie danych wyjściowych polecenia po jego wykonaniu i nie chcę lub nie mogę wykonać polecenia ponownie.
W tym scenariuszu możemy użyć gdm lub podobnego narzędzia myszy i wybrać za pomocą myszy.
apt-get install gdm
a następnie kliknięcie prawym przyciskiem myszy lub kombinacje Cntrl + Shift + c oraz Cntrl + Shift + v do skopiowania i wklejenia w terminaluLub, co jest dla mnie preferowaną metodą (ponieważ mysz nie może prawidłowo wybrać w jednym okienku, gdy masz wiele okien obok siebie i musisz wybrać więcej niż jedną linię), używając tmux możemy skopiować do bufora tmux przy użyciu standardowego [, spacja, przejdź do wyboru, wprowadź lub możesz wybrać blok kodu. Jest to również szczególnie przydatne, gdy znajdujesz się na jednym z pasów multipleksera cli, np. Tmux ORAZ musisz wybrać wiązkę tekstu, ale nie numery linii (moja konfiguracja vima wyświetla numery linii)
Następnie możesz użyć polecenia:
bufor zapisu tmux - | xclip -i
Możesz oczywiście aliasować to, co lubisz lub wiązać bezpośrednio w pliku konfiguracyjnym tmux
Ma to na celu dać ci konceptualną odpowiedź na ten przypadek krawędzi, gdy ponowne wykonanie polecenia nie jest możliwe. Jeśli potrzebujesz bardziej szczegółowych przykładów kodu, daj mi znać
Twoje zdrowie
źródło