Wiem, że mogę Upiterować po poprzednich poleceniach. Uruchomienie ostatniego polecenia wymaga po prostu Up+ Enter. Zastanawiałem się jednak nad zakupem Happy Hacking Keyboard, ponieważ spędzam dużo czasu vim
.
Ta klawiatura nie ma klawiszy strzałek, a jedynym sposobem, w jaki wiem, jak uzyskać tego rodzaju zachowanie, jest naciśnięcie Ctrl+ Ri rozpoczęcie powtarzania poprzedniego polecenia.
Czy istnieje prosty sposób emulacji Up+ Enterw terminalu UNIX bez klawiszy strzałek?
shell
keyboard-shortcuts
command-history
ilościowo
źródło
źródło
Odpowiedzi:
Z
csh
lub dowolnej powłoki wykonaniacsh
-jak historia podstawienie (tcsh
,bash
,zsh
)Potem Enter.
Lub alternatywnie :
Potem Enter.
Lub Ctrl+ P,Enter
Magiczna przestrzeń
Zauważ też, że
!!
i!-1
nie będzie się ono automatycznie rozwijało, dopóki ich nie wykonasz (kiedy może być za późno).W przypadku korzystania
bash
, które można umieścićbind Space:magic-space
w~/.bashrc
, a następnie naciskając Spacepo poleceniu zostanie automatycznie rozszerzać je inline, dzięki czemu można je sprawdzić przed wykonaniem. Jest to szczególnie przydatne w przypadku rozszerzania historii od uruchomienia polecenia jakiś czas temu, np.!echo
Spowoduje pobranie ostatniego uruchomienia polecenia, zaczynając odecho
. Dzięki magicznej przestrzeni możesz wyświetlić podgląd polecenia przed jego uruchomieniem.To odpowiednik robienia
bindkey ' ' magic-space
wtcsh
lubzsh
.źródło
magic-space
to jedna słodka opcja!histverify
opcja,shopt
która spowoduje, że readline wykona rozszerzenie historii, ale nie wykona polecenia po pierwszym naciśnięciu klawisza Enter. Który pozwoli Ci ocenić wynik i zdecydować, czy to właśnie chcesz uruchomić.!!
jest użycie jego rozszerzenia w miejscu . Na przykładsudo !!
.Większość powłok z funkcją edycji wiersza poleceń obsługuje powiązania klawiszy Emacsa. (mały podzbiór)
Alternatywnie możesz skonfigurować powłokę do korzystania z trybu edycji poleceń vi, dodając
set -o vi
do pliku startowego powłoki (np~/.bashrc
.). Na przykład możesz!!
). Klawisz minus -działa również jako polecenie „w górę”.!-12
).vi
trybie poleceń, więc trzeba będzie użyćvi
polecenia edycji (np I, A, C, R, lub jednym z ich małych odpowiedników), aby faktycznie dodać do polecenia z historii.Na przykład EsckisudoSpaceEnterjest równoważny
sudo !!
.!-2:- !$
. (Niestety nie wydaje się, aby obsługiwał nazwane bufory).źródło
vi
sztuczka była świetna !!!delete
Ctl + u w ZshMoim ulubionym jest CTRL+, Pa następnie CTRL+O
Działa to domyślnie, nie jest wymagana dodatkowa konfiguracja. ^ P pozwoli ci przejść do ostatniego polecenia, a ^ O pozwoli ci wykonać bieżącą linię
Pamiętaj, że CTRL+ Omoże być używana tyle razy, ile chcesz
źródło
^J
ls
lubpwd
wcześniej.Pewnie! Ponieważ jesteś przyzwyczajony do
vi
skrótów klawiszowych, dlaczego nie skonfigurować swojej powłoki, aby na nie reagowała? Dlabash
umieścić to w swoim~/.inputrc
:Uruchomienie instancji bash nie spowoduje ponownego odczytania pliku, więc wyloguj się i zaloguj ponownie.
zsh
wykryje to nawet za Ciebie: jeśli żaden ze skryptów startowych nie wymusza trybu edycji w taki czy inny sposób,bindkey
a jeśli$EDITOR
wykryjevi
, że zmienna środowiskowa zawiera , to automatycznie włączyvi
skróty klawiszowe. Jeśli musisz to wymusić, umieść to w~/.zshrc
:Następnie użyj, ESCjak zwykle, aby wejść do linii poleceń oraz ki jporuszać się w górę i w dół.
RÓWNIEŻ : Domyślnymi powiązaniami powłoki w większości powłok są wiązania emacs, więc właściwie Crtl-Pi Ctrl-Npowinny już działać bez konieczności zmiany czegokolwiek.
źródło
Z każdej muszli POSIX realizującego Przenośność użytkownika opcji (obejmuje
ksh
,zsh
,bash
,yash
), można również użyćfc
polecenia:Zobacz przykład:
Więcej informacji w Wykonywanie szeregu poleceń z historii odpowiedzi Jonathana Lefflera.
źródło
Dla wszystkich użytkowników komputerów Mac iterm2:
Możesz powiązać ⌘+ Rz
0x0C 0x10 0x0d
. Spowoduje to wyczyszczenie terminala i uruchomienie ostatniego polecenia.źródło
0x10 0x0d
(tzn. Pomiń0x0C
).Uważam, że muszę często powtarzać polecenia jako superużytkownik, więc
ponawia poprzednią komendę, jakbym pamiętał, aby
sudo
w pierwszej kolejności pisać .źródło
ksh
Powłoka posiada domyślny aliasr
, który powtarza ostatnią komendę. Jest związany zfc -s
:Co ciekawe,
bash
dokumentacjafc
wbudowanego (help fc
a także samego podręcznika) nawet o tym wspomina, ale nie jest to domyślny alias w tej powłoce:W
bash
działałoby to również, nawet jeśli wyłączyłeś rozszerzenia historiiset +H
.W
zsh
powłoce znajduje sięr
wbudowane narzędzie, które udokumentowano jako takie samo jakfc -e -
.fc
Narzędzie jest POSIX standardowym narzędziem .źródło
Z
csh
lub dowolnej powłoki realizacjicsh
-Jak Historia podstawienie (tcsh
,bash
,zsh
), można również użyć!<beginning of command>
, aby wywołać ostatnie polecenie rozpoczynające się<beginning of command>
.na przykład jeśli uciekłeś
!ta
wykonałbytail file.txt
źródło
tl; dr
!!
po prostu dołącza ostatnie polecenie do bieżącego polecenia.<backtick>!!<backtick>
wykonuje ostatnie polecenie i dołącza dane wyjściowe do bieżącego polecenia.W rzeczywistości istnieją 2 warianty:
Pokażę 2 przykłady:
Przykład 1
Jak widać powyżej, wykonuję polecenie i zasadniczo dołączam ostatnie polecenie.
Kolejna odmiana
Przykład 2
źródło
vi `!!`
. Bardzo przydatneKiedy korzystam z dobrego emulatora xterm, np. Kit, moim ulubionym sposobem jest wybranie polecenia zawierającego wiersz, skopiowanie go do schowka, a następnie kliknięcie myszą prawym przyciskiem myszy. Powtarza to polecenie jednym kliknięciem. Działa to również dobrze dla sekwencji poleceń oddzielonych średnikami.
źródło
możesz użyć
!n
do wykonania n-tego polecenia w terminalu. gdzie „n” jest numeremhistory
wiersza polecenia.źródło
!?
się do ostatniego polecenia? Czy jesteś pewien, że się z tym nie mieszasz!!
(co zostało już omówione w innych odpowiedziach)?Wpisz History i zanotuj liczbę przed poleceniem, które chcesz wykonać i użyć
!number
Możesz także użyć ! -1 (1 jest ostatnim wykonanym poleceniem, zamień go na liczbę zliczeń, którą otrzymujesz od dołu, zachowując ostatnie wykonanie jako 1)
źródło
Istnieje kilka warstw, w których możesz poprosić o ostatnie polecenie.
Edytor linii
Edytor linii (w którym wpisujesz swoje polecenia) jest dostarczany bezpośrednio przez ksh, przez bibliotekę readline w bash i przez bibliotekę zle w zsh. Inne powłoki, takie jak myślnik, mogą nie mieć biblioteki edycji do zrozumienia tych kluczy (chyba że zostaną skompilowane z
--with-libedit
włączoną opcją).Działa w ksh, bash, zsh:
Ctrl- P# Tryb Emacsa (poprzedni)
Ctrl- N# Tryb Emacsa (następny)
ESC- k Tryb # vi ESC, aby przejść do trybu poleceń ik w górę
ESC- j Tryb # vi ESC, aby przejść do trybu poleceń i j w dół
historia
System historii dostarczany przez wiele powłok pozwala na rozwinięcie niektórych skrótów:
polecenia
Istnieje kilka poleceń, które mogą pobierać polecenia historii.
Podobnie jak dość szczegółowe polecenie (tylko do wydrukowania):
lub starsze, a zatem zwykle bardziej przenośne
fc
polecenie (bezpośrednio ponownie wykonuje):A może prościej
fc -s -1
, ale zsh nie akceptuje takiej opcji dla fc.Jeśli chcesz tylko drukować polecenia, należy:
fc -nl -1 -1
.Aby edytować ustawienia
FCEDIT
do edytora tekstowego (Ex ed, Emacs, vi, itd.) I użyj fc bezpośrednio:fc -1
.źródło