Ho usato
history | less
per ottenere le righe dei comandi precedenti e dai numeri a sinistra ho trovato la riga che volevo ripetere (es. 22) e l'ho fatto
!22
al prompt dei comandi e ha funzionato, eseguendo il set di comandi sulla riga che ho eseguito in quel momento. Non riesco a capire dove viene utilizzato il punto esclamativo, cosa rappresenta in termini di azioni intraprese da bash e dove usarlo. Dalla documentazione non vedo una spiegazione che sia 'tangibile'.
Risposta accettata:
!
invoca l'espansione della cronologia, una funzionalità originariamente apparsa nella shell C, nei giorni prima che si potesse contare sui terminali dotati di tasti freccia. È particolarmente utile se aggiungi il numero del comando corrente al prompt (PS1="!$ "
) in modo da poter guardare rapidamente lo schermo per ottenere i numeri per i comandi passati.
Ora puoi usare i tasti freccia e cose come Ctrl-R per cercare nella cronologia dei comandi, non vedo molto utile per la funzione.
Una sua variante che potresti ancora trovare utile è !!
, che riesegue il comando precedente. Da solo, non trovo ! ! Entra più veloce di ↑ Entra , ma può essere utile se combinato in un comando più grande.
Esempio: Un errore pilota comune su sudo
sistemi basati è dimenticare il sudo
prefisso su un comando che richiede privilegi aggiuntivi. Un principiante riscrive l'intero comando. Lo studente diligente modifica il comando dalla cronologia dei comandi della shell. L'illuminato digita sudo !!
.
Elaborazione !
in questo modo è abilitato in Bash di default nelle shell interattive e può essere disabilitato con set +o histexpand
o set +H
. Puoi disabilitarlo in Zsh con set -K
.