È possibile combinare le funzionalità di ricerca della cronologia e della cronologia esistenti di Bash. Premere Ctrl-Rper iniziare la ricerca inversa incrementale, quindi iniziare a digitare la parte del percorso che molto probabilmente sarà unica.
Puoi continuare a digitare lettere fino a quando non torni indietro al cd
comando più recente che coinvolge quella directory, oppure puoi premere di Ctrl-Rnuovo per tornare indietro nella cronologia al comando più recente successivo corrispondente a quello che hai digitato finora.
Lo faccio sempre.
In realtà, faccio un ulteriore passo avanti. Una volta che inizio a scoprire sequenze di comandi che vale la pena tenere nella storia ma non vale la pena impegnarmi in uno script di shell, inizio a concatenarle con &&
e ;
combinatori in modo da poter cercare indietro una sottostringa di quell'unico comando lungo, premere Entered eseguire l'intera sequenza in una volta.
Ad esempio, ecco come costruisco ed eseguo uno dei miei programmi durante lo sviluppo:
$ ( cd .. ; make install ) && ./start_my_program
Lo faccio dalla directory di installazione, che si trova sotto la directory di origine di livello superiore. Avvolgendo cd
, costruendo e installando la parte in una sotto-shell, mi assicuro che, qualunque cosa accada durante questo processo, finisco di nuovo nella mia normale shell senza che nulla sia cambiato. Solo se ciò ha esito positivo (&&), avvio il programma creato e installato. Posso trovarlo nella mia storia con solo un Ctrl-Rmomento sta, che essendo tutto ciò che di solito ho bisogno per trovare in modo univoco questa sequenza di comandi.
Un altro esempio di come lo uso è la sequenza che va alla creazione di RPM per questo stesso programma. La maggior parte del lavoro noioso è negli script di shell, ma normalmente ci sono ancora alcuni comandi che dovrei digitare per fare tutto il lavoro di costruzione e distribuzione degli RPM costruiti, che ora raramente devo riscrivere, perché Bash mantiene nella storia per me.
Combina tutto questo con export HISTSIZE=bignum
e shopt histappend
e hai appena costruito una memoria di comando di elefanti.
Un'altra soluzione che ho codificato una volta è nella mia risposta a un'altra domanda qui . Potrebbe dover essere personalizzato per i tuoi scopi e gestisce solo i cd
comandi, mentre l'opzione di ricerca della cronologia funziona ovunque e per ogni comando.