Moja odpowiedź oferuje proste polecenie w trzech różnych składniach, z których wszystkie działają jednakowo, ale jedna jest nieco krótsza i łatwiejsza do napisania niż druga. Trzecia odmiana to tak zwany alias, co oznacza, że możesz przypisać komendzie niestandardową nazwę i wywołać ją, wykonując ją bez konieczności zapamiętywania skomplikowanych elementów.
Przygotowanie:
Najpierw zainstaluj pakiet, xsel
który umożliwia dostęp do schowka X z terminala:
sudo apt-get install xsel
Wariant polecenia 1 (krótki):
Następnie możesz wpisać następujący wiersz, aby skopiować poprzednie polecenie do schowka:
xsel -ib <<<!!:q
Jeśli chcesz skopiować drugie ostatnie polecenie, zamień !!
je na !-2
, dla trzeciego ostatniego użycia !-3
i tak dalej.
Aby wytłumaczyć, co uruchamiasz, tutaj krótki podział polecenia:
xsel
to narzędzie wiersza polecenia umożliwiające dostęp do schowka X.
Aby uzyskać więcej informacji, przeczytaj stronę podręcznika online lub przez uruchomienieman xsel
.
- Ten
-i
parametr mówixsel
czytać ze standardowego wejścia (zwykle oznacza to wprowadzanie z klawiatury, ale tutaj coś przekierujemy)
- Ten
-b
parametr określa użycie schowka zamiast „podstawowych” lub „wtórnych” opcji X.
<<<
to specjalna składnia Basha o nazwie „Here String”.
Zasadniczo rozwija (nie ocenia!) Argument (tylko jeden!) Po nim i przekierowuje go jako ciąg znaków na standardowe wejście (standardowe wejście) polecenia przed / po którym stoi.
!!:q
nazywa się „poleceniem huku” w celu rozszerzenia historii w bash. Zastępuje się dowolnym wcześniej wpisanym wierszem poleceń.
Aby uzyskać więcej informacji, przeczytaj lokalną stronę podręcznika, uruchamiającman history
(strona internetowa nie jest pomocna).
!!
Oznacza poprzedniego wiersza poleceń i jest synonimem !-1
.
Oczywiście !-2
oznacza to drugą ostatnią linię poleceń. Nie zapomnij znaku minus-
, w przeciwnym razie zwróci 2. (3. / ...) polecenie, które kiedykolwiek wpisałeś.
- W
:q
modyfikuje polecenie Bang mówi bashowi dołączyć zastąpienie w apostrofami ( '
), aby zapobiec dalszej ekspansji przez powłokę.
Wariant polecenia 2 (nieco dłuższy):
echo !!:q | xsel -ib
echo
ma proste zadanie wypisania wszystkich argumentów na standardowe wyjście terminala.
!!:q
nazywa się „poleceniem huku” w celu rozszerzenia historii w bash. Zastępuje się dowolnym wcześniej wpisanym wierszem poleceń.
!!
Oznacza poprzedniego wiersza poleceń i jest synonimem !-1
. Oczywiście !-2
oznacza to drugą ostatnią linię poleceń. Nie zapomnij znaku minus-
, w przeciwnym razie zwróci 2. (3. / ...) polecenie, które kiedykolwiek wpisałeś.
- W
:q
modyfikuje polecenie Bang mówi bashowi dołączyć zastąpienie w apostrofami ( '
), aby zapobiec dalszej ekspansji przez powłokę.
|
jest fajką. Przekierowuje wyjście terminala („stdout”) polecenia przed nim do wejścia terminala („stdin”) polecenia po nim.
xsel
to narzędzie wiersza polecenia umożliwiające dostęp do schowka X.
Aby uzyskać więcej informacji, przeczytaj stronę podręcznika online lub przez uruchomienieman xsel
.
- Ten
-i
parametr mówixsel
czytać ze standardowego wejścia (zwykle oznacza to wprowadzanie z klawiatury, ale tutaj coś przekierujemy)
- Ten
-b
parametr określa użycie schowka zamiast „podstawowych” lub „wtórnych” opcji X.
Wariant polecenia 3 (alias):
Alias bash jest fajną rzeczą, jeśli nie chcesz pamiętać długich lub skomplikowanych poleceń, których często używasz. Możesz przypisać to polecenie do prostej nazwy aliasu, którą możesz uruchomić zamiast długiego polecenia, aby osiągnąć to samo.
Niestety, ponieważ polecenia Bang są specjalną funkcją Bash i są rozszerzane przed usunięciem aliasów, nie można po prostu aliasować jednej z powyższych odmian, ponieważ !!
część nie będzie działać. Istnieje jednak obejście.
Aby ustawić alias, uruchom następujący wiersz w swoim terminalu. Pamiętaj, że możesz wybrać dowolną prawidłową nazwę zmiennej Bash zamiast copylastcommand
:
alias copylastcommand='history -p \!\! | xsel -ib'
Jest to jednak trwałe tylko w bieżącej sesji Bash, co oznacza, że alias zniknie po zamknięciu okna terminala. Możesz ustawić go jako trwały w każdej sesji Bash, dodając ten wiersz powyżej na końcu ~/.bashrc
pliku lub do ~/.bash_aliases
pliku, jeśli taki masz.
Ponownie krótki podział linii:
alias name='command'
jest składnią ustawiania aliasu w Bash. command
Zostanie uruchomiony w dowolnym momencie wykonać name
od teraz.
history -p \!\!
wypisuje poprzednio wykonaną linię poleceń na standardowe wyjście (standardowe wyjście). Bez -p
przełącznika nie tylko wydrukowałby, ale także ponownie uruchomił polecenie.
Zauważ, że musimy uciec przed bangs ( !
) za pomocą ukośników odwrotnych ( \
), ponieważ w przeciwnym razie bash rozszerzy je, gdy spróbujemy ustawić alias, co nie ma sensu, ponieważ muszą znajdować się w tym aliasie, jakimi są.
Ponownie możesz również podać [n] -te ostatnie polecenie, zastępując drugi huk -n
np \!-2
.
|
jest fajką. Przekierowuje standardowe wyjście („stdout”) polecenia przed nim do standardu terminala („stdin”) polecenia po nim.
xsel
to narzędzie wiersza polecenia umożliwiające dostęp do schowka X.
Aby uzyskać więcej informacji, przeczytaj stronę podręcznika online lub przez uruchomienieman xsel
.
- Ten
-i
parametr mówixsel
czytać ze standardowego wejścia (zwykle oznacza to wprowadzanie z klawiatury, ale tutaj coś przekierujemy)
- Ten
-b
parametr określa użycie schowka zamiast „podstawowych” lub „wtórnych” opcji X.
<<<"!!" xsel -ib
<<<
nazywa się ta struktura? I myślę, że<<<!!:q xsel -ib
jest lepiej (pozwalając cytatowi na polecenie historii huku), czy też się nie zgadzasz?!!:q
używa pojedynczych cudzysłowów ('
) ...<<<"!!" xsel -ib
. Tak,<<<!!:q xsel -ib
lepiej, idź.xsel
ma ciekawą składnięMożesz użyć
xclip
:Więc w twoim przypadku:
c
oznacza schowek.Może być konieczne
xclip
najpierw zainstalowanie :EDYTOWAĆ:
Jeśli chcesz tylko, aby wpisane polecenie (a nie wynik) zostało skopiowane do schowka, możesz użyć ciągów Here:
Lub rura:
źródło
echo "command" | xclip -selection clipboard
... Albo zrobić to skrypt pod~/.bin
:echo "$@" | xclip -selection clipboard
. Powiedzmy, że zapisałeś go jako „cpy”, wtedy mógłbyścpy youtube-dl stuff
i zostałby skopiowany do schowka bez wykonania.echo "$@" | xclip -selection c && $@
lub coś bardziej sprytnego z eval ...Właśnie stworzyłem mały skrypt dla
zsh
tych zastosowań,xclip
aby to zrobić:Ten skrypt kopiuje ostatnie polecenie wprowadzone w powłoce / terminalu do schowka systemu. Nie działałoby na typowym zdalnym serwerze.
Pomyślałem, że napisanie tego skryptu zajmie mi tylko kilka minut, ale zadziałało zaskakująco długo, zanim potknąłem się o drogę
zsh
historią.tail -n 2
I pierwszysed
w tym do czynienia z faktem, że komenda dla samego tego skryptu jest rejestrowane w historii i tak robi się dwa wiersze historii i usuwa ostatni.Ten skrypt działa i była zabawną łamigłówką, ale jestem naprawdę ciekawy, czy istnieje prostszy lub bardziej elegancki sposób na zrobienie tego
zsh
.źródło
tail
ised
w jedno lub dwa polecenia. Komendy te wykorzystują!!
wyjaśnienie tutaj - powinno być dostępne w ZSH ....!!
rzeczywiście wygląda na to, że byłoby to pomocne tutaj, dzięki!Używam jako menedżera schowka, więc.
Ostatnie polecenie do schowka
Schowek do vim scratch
ZSH specyficzne
Myślę, że te pomysły pomogą ci stworzyć własne rozwiązanie
źródło