Odpowiedzi:
Naciśnij Ctrl+ Ri wpisz ssh
. Ctrl+ Rrozpocznie wyszukiwanie od ostatniego polecenia do starego (wyszukiwanie do tyłu). Jeśli masz więcej niż jedno polecenie, które zaczyna się od ssh
, naciśnij Ctrl+ Rraz po raz, aż znajdziesz dopasowanie.
Po znalezieniu dopasowania możesz nacisnąć, Enteraby wykonać polecenie, lub kursor w lewo / w prawo, aby wybrać tekst polecenia.
Nie ma domyślnej opcji odwrotnej dla Ctrl+, Raby odwrócić kierunek wyszukiwania, ale tutaj znajdziesz kilka sugestii na ten temat.
Robię niewielką odmianę powyższego, działa dobrze dla mnie (jeśli masz na myśli historię bashów)
W moim katalogu domowym tworzę plik o nazwie
.inputrc
Wewnątrz jest to
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Uwaga: powyższe wydaje się już nie działać w 14.04, więc robi to to samo -
"\e[A":history-search-backward
"\e[B":history-search-forward
Następnie wpisując dowolną część poprzedniego polecenia, którego pragnę, a przyciskami strona w górę / strona dn przeszukuje historię, zawsze zaczynając od strony w górę
Oto kolejna metoda wykorzystująca klasyczne polecenia (bardziej prawdopodobne, że zadziała między dystrybucjami). Historia poleceń jest przechowywana w pliku .bash_history
w katalogu domowym, więc możesz to zrobić:
grep "ssh" ~/.bash_history
Nie zapomnij -i
flagi, jeśli potrzebujesz wyszukiwania bez rozróżniania wielkości liter.
history | grep ssh
pokaże tylko ssh sesji tymczasowej, więc wybrałbym tę odpowiedź.
Znalazłem następującą funkcję gdzieś w Internecie i wykorzystałem ją z doskonałym skutkiem. Umieść to w ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Teraz ponownie załadować powłokę: exec bash
. Masz teraz nowe polecenie, którego możesz użyć w następujący sposób:
hgrep ssh
Pokaże ci listę pasujących poleceń z twojej historii. Aby uruchomić polecenie, wpisz !
numer polecenia. Oto przykład:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
Podobało mi się to podejście bardziej niż Ctrl+, Rponieważ umożliwia znacznie bardziej elastyczne wyszukiwanie i widzę wiele wyników jednocześnie.
Jeśli używasz powłoki w Emacs ( M-x shell
), możesz jej użyć M-r
(odpowiada to Ctrl+ Rw terminalu ).
Historia jest dobra, ale ograniczona - wolę skonfigurować środowisko bash, aby rejestrować wszystkie polecenia, które kiedykolwiek uruchomiłem, oprócz katalogu, w którym zostały uruchomione. Następnie uruchamiam polecenie, aby wyświetlić listę wszystkich poleceń Uruchomiłem w bieżącym katalogu, który mogę potokować do grep itp. - nazywa się to „dish” patrz:
https://github.com/wolfwoolford/dish
Jeśli chcesz przejść do pościgu, po prostu pobierz to w swoim .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Istnieje również bardzo przydatne polecenie, które otrzymujesz za darmo, o nazwie „dishg” - lub dish global - które wypisuje każde polecenie, które kiedykolwiek uruchomiono, niezależnie od katalogu. Oczywiście ten przydaje się tylko w połączeniu z grepem i ogonem itp.
Używam go od lat i jest to dosłownie pierwsza rzecz, którą instaluję za każdym razem, gdy instaluję nowe pudełko. Rejestruje polecenia uruchamiane w plikach tekstowych w ukrytym katalogu (~ / .dish) .. Nigdy nie miałem problemu z miejscem na dysku ...
Chciałem napisać to jako komentarz do @ssmy, ale nie mogłem uzyskać sformatowania w komentarzu do współpracy.
Po przeszukaniu historii history | grep ssh
możesz wykonać żądane polecenie, wpisując jego numer poprzedzony wykrzyknikiem, np !42
.
Przykład:
$ historia | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $ 42