Widzę ostatnie polecenie w terminalu, naciskając up arrow
jak w poniższym przykładzie:
Wpisałem cd /
:
Makss-Mac:~ maks$ cd /
... wciśnięty enter
, polecenie cd /
wykonane, a teraz mogę nacisnąć up arrow
i zobaczyć polecenie cd /
ponownie:
Makss-Mac:/ maks$ cd /
Chcę nie tylko zobaczyć ostatnie polecenie, ale skopiować je do schowka.
Być może istnieje skrót, który nie tylko pokazuje ostatnie polecenie w terminalu (jak up arrow
to zrobić), ale jednocześnie kopiuje go do schowka.
A może jest skrót do wybierania wszystkich z bieżącej linii terminalowej. I tak będę mógł skopiować ostatnie polecenie (po naciśnięciu up arrow
), naciskając super+c
. Oczywiście mogę to wybrać za pomocą myszy. Ale kiedy polecenia są 10 razy dłuższe cd /
, może to być zbyt czasochłonne, szczególnie jeśli robisz to co 30 sekund.
A może istnieje sposób na napisanie wtyczki do terminalu
źródło
Odpowiedzi:
Umieść to w swoim
~/.bashrc
~/.bash_profile
lub gdziekolwiek chcesz:Po otwarciu nowego okna (lub uruchomieniu
source ~/.bash_profile
) powinieneś być w stanie uruchomićcopyLastCmd
i mieć polecenie w schowku.Aby wyjaśnić, co się dzieje: w zasadzie używasz polecenia „fix command” (
fc
), aby uzyskać ostatnie polecenie, usuń zarówno początkowe, jak i końcowe białe spacje, aby uzyskać lepsze formatowanie,awk
a następnie skopiuj je na pulpit komputera Macpbcopy
.EDYTOWAĆ:
Teraz, gdy wiemy, że chcesz skopiować i wkleić na inną kartę terminala, istnieje inna opcja: dodaj te linie do swojego
~/.bashrc
~/.bash_profile
lub gdziekolwiek chcesz:Następnie, gdy otworzysz kilka nowych kart (nazwijmy je „kartą A” i „kartą B”):
EDIT 2: Mam zastąpił wykorzystanie
sed
zeawk
w pierwotnej odpowiedzi powyżej, aby zadbać zarówno początkowe i końcowe białe znaki.źródło
awk
:alias copyLastCmd='fc -ln -1 | sed '1s/^[[:space:]]*//' | awk 1 ORS="" | pbcopy '
fc -ln -1 | awk '{$1=$1}1'
usunie zarówno końcowe, jak i wiodące białe znaki.alias copyLastCmd="fc -ln -1 | awk '{\$1=\$1}1' | pbcopy"
. wciąż dostaje moją opinięOto kolejne ujęcie oparte na odpowiedzi @Asmus. Aby jego alias działał w moim skrypcie bash, musiałem trochę cytować, ponieważ pojedyncze cudzysłowy nie działają w aliasie pojedynczego cudzysłowu bez dodatkowych cytatów:
'\''
Będzie w zasadzie zamknąć bieżącą ofertę, a następnie dodać zbiegłego cytat, a następnie ponownie otworzyć rzeczywistej kalkulacji.Powyższa wersja będzie kopiować ostatnią komendę do schowka, a raz go wkleić, to natychmiast wykonywane, ponieważ będzie to miało nowej linii na końcu.
Aby pozbyć się nowego wiersza na końcu, aby móc edytować polecenie przed jego uruchomieniem, możesz wykonać następujące czynności:
ORS=''
(To bez cytowania) będą zdejmować z tyłu znak nowej linii, dzięki czemu można edytować wklejony tekst przed jego uruchomieniem.źródło
Pozwoli to wykorzystać interpretację historii chwycić ostatnią komendę i echo go. Możesz potokować, aby
pbcopy
zapisać ostatnie polecenie w schowku.Jeśli chcesz, aby polecenie z historii nie było ostatnim , możesz uruchomić:
I odwołaj się do żądanego numeru polecenia, takiego jak:
źródło
Przybyłem tutaj, ponieważ wymyśliłem dokładnie tę samą odpowiedź Sama Berry'ego, ale to nie działa dla mnie (OSX 10.14.6).
Udało się to zrobić dzięki cytatom wokół
!!
:echo "!!" | pbcopy
źródło
Możesz ustawić swoją historię, aby ignorowała polecenia zaczynające się od spacji:
A następnie uruchom następujące polecenie, aby uzyskać ostatnie polecenie do schowka (upewnij się, że masz spację na początku):
Prawdopodobnie zechcesz wtedy zapisać polecenie jako alias, aby ułatwić zapamiętanie.
źródło