Uso !n dove (n) è il numero di riga per l'esecuzione di una riga nel file di cronologia che voglio venga eseguita al prompt dei comandi che trovo tramite history|less.
Ma c'è un evento della cronologia della riga di comando che desidero modificare manualmente. Come posso inserire nella riga di comando un contenuto di eventi della cronologia senza che sia effettivamente in esecuzione in modo da poter modificare e quindi premere Invio?
Il migliore,
Risposta accettata:
Per richiedere che il comando venga stampato anziché eseguito dopo la sostituzione della cronologia, aggiungi il :p
modificatore, ad es. !42:p
. Il comando risultante verrà inserito anche nella cronologia, quindi puoi premere Su per modificarlo.
Se hai histverify
set di opzioni (shopt -s histverify
), avrai sempre la possibilità di modificare il risultato delle sostituzioni della cronologia.
Il fc
builtin offre un accesso limitato all'espansione della cronologia (nessun designatore di parole) e ti consente di modificare un comando precedente in un editor esterno.
Puoi usare !prefix
per fare riferimento all'ultimo comando che inizia con prefix
e !?substring
per fare riferimento all'ultimo comando che inizia con substring
. Quando sai cosa stai cercando, questo può far risparmiare molto tempo su history | less
.
Un altro modo per cercare nella cronologia precedente è la ricerca incrementale:premi Ctrl +R e inizia a inserire una sottostringa di ciò che stai cercando. Premi Ctrl +R per andare all'occorrenza precedente della stringa di ricerca fino a quel momento e Ctrl +S se sei andato troppo lontano. La maggior parte dei tasti diversi da Ctrl +R , Ctrl +S , Backspace e i caratteri ordinari terminano la ricerca incrementale e hanno il loro effetto abituale (es. tasti freccia per spostare il cursore nella riga raggiunta, Invio per eseguire il comando).