Risposte:
Premi Ctrl+ Re digita ssh
. Ctrl+ Rinizierà la ricerca dal comando più recente a quello precedente (ricerca inversa). Se hai più di un comando che inizia con ssh
, premi Ctrl+ Rancora e ancora fino a trovare la corrispondenza.
Una volta trovata la corrispondenza, puoi premere Enterper eseguire il comando o il cursore sinistra / destra per selezionare semplicemente il testo del comando.
Non esiste un'opzione inversa predefinita per Ctrl+ Rper invertire la direzione della ricerca, ma qui troverai alcuni suggerimenti a riguardo.
Faccio una leggera variazione di quanto sopra, funziona bene per me (se ti riferisci alla tua storia bash
Nella mia cartella home creo un file chiamato
.inputrc
Dentro va questo
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Nota: quanto sopra sembra non funzionare più in 14.04 quindi questo fa la stessa cosa -
"\e[A":history-search-backward
"\e[B":history-search-forward
Quindi digitando comunque gran parte di un comando precedente che desidero e usando i pulsanti pagina su / pagina dn si cerca la cronologia, iniziando sempre con pagina su
Ecco un altro metodo che utilizza i comandi classici (è più probabile che funzioni tra le distro). La cronologia dei comandi è memorizzata nel file .bash_history
nella tua home directory, quindi puoi farlo:
grep "ssh" ~/.bash_history
Non dimenticare la -i
bandiera se hai bisogno di ricerca senza distinzione tra maiuscole e minuscole.
history | grep ssh
mostrerò solo la sessione temporanea ssh quindi vorrei andare per questa risposta.
Ho trovato la seguente funzione da qualche parte su Internet e l'ho usata con grande efficacia. Metti questo nel tuo ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Ora ri-caricare la shell: exec bash
. Ora hai un nuovo comando, che puoi usare in questo modo:
hgrep ssh
Ti mostrerà un elenco di comandi corrispondenti dalla tua cronologia. Per eseguire un comando, digitare !
seguito dal numero del comando. Ecco un esempio:
~:$ 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
Mi piace questo approccio meglio di Ctrl+ Rperché consente ricerche molto più flessibili e posso vedere più risultati contemporaneamente.
Se usi shell in Emacs ( M-x shell
) puoi usare M-r
(è equivalente a Ctrl+ Rin un terminale ).
La cronologia è buona ma limitata - Preferisco impostare il mio ambiente bash in modo da registrare tutti i comandi che ho mai eseguito, oltre alla directory in cui sono stati eseguiti. Quindi eseguo un comando per elencare tutti i comandi Ho eseguito nella directory corrente, che posso reindirizzare a grep ecc. - Si chiama 'piatto', vedi:
https://github.com/wolfwoolford/dish
Se vuoi andare al sodo, procedi semplicemente nel tuo .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
C'è anche un comando davvero utile che ottieni gratuitamente chiamato 'dishg' - o piatto globale - che stampa ogni comando mai eseguito, indipendentemente dalla directory. Ovviamente questo è utile solo se usato con grep e tail ecc.
Lo uso da anni ed è letteralmente la prima cosa che installo ogni volta che installo una nuova scatola. Registra i comandi eseguiti in file di testo in una directory nascosta (~ / .dish) .. Non ho mai avuto problemi con lo spazio su disco ...
Volevo scrivere questo come commento a @ssmy ma non sono riuscito a far collaborare la formattazione nel commento.
Dopo aver cercato nella cronologia con history | grep ssh
te puoi quindi eseguire il comando che desideri digitando il suo numero anteposto con un punto esclamativo, ad es !42
.
Esempio:
$ history | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $! 42