Dovresti leggere man bash sul tuo sistema, in particolare la sezione su Readline , poiché questo è il meccanismo di input interattivo di bash. Il manuale di Bash su gnu.org ha una bella sezione sulla modifica della riga di comando che aiuterà a colmare alcune lacune.
Per impostazione predefinita, puoi usarli per spostarti sulla riga di comando (elencandone alcuni qui; vedi il link per un elenco completo):
- Ctrl+ si asposta all'inizio della riga (o in Homebase alle impostazioni del terminale)
- Ctrl+ si esposta alla fine della riga (o End...)
- Meta+ fsposta in avanti una "parola"
- Meta+ bsposta all'indietro una "parola"
Puoi usarli per "uccidere" (aka "tagliare") il testo da una riga:
- Ctrl+ kuccide ("taglia") il testo dalla posizione corrente del cursore alla fine della riga
- Ctrl+ ystrappa ("incolla") il testo ucciso più di recente nel buffer al cursore
Quindi puoi combinarli per selezionare un pezzo di qualche riga di comando che vuoi ripetere, ucciderlo, quindi incollarlo alla fine del tuo prossimo comando.
Ora, per renderlo ancora più divertente, consideriamo l' espansione della storia di bash . Questo è quello !!che la risposta di Studer menzioni . L'espansione della cronologia si suddivide in designatori di eventi , designatori di parole e modificatori .
I designatori di eventi si presentano così (di nuovo, vedere i collegamenti per l'elenco completo):
! - avvia una sostituzione della cronologia
!n- il comando n-esimo nell'elenco della cronologia di bash, per alcuni numeri interi n (funziona anche per i negativi)
!!- il comando precedente; equivalente a!-1
!string- il comando più recente che inizia con la stringa
I designatori di parole selezionano determinate parti da un evento. Utilizzare :per separare l'evento dalla parola designatore. Le parole sono numerate da 0 a partire dall'inizio della riga e inserite nella riga corrente separate da spazi singoli.
$- designa l'ultimo argomento (ad es. !!:$è l'ultimo argomento dell'ultimo comando; può essere abbreviato in !$)
n- indica l' ennesima parola (ad es. !str:2è il secondo argomento del comando più recente che inizia con str ; !!:0è il comando dell'ultimo comando)
Quindi, per dare seguito al tuo esempio, se il tuo ultimo comando è mkdir /some/really/long/path, basta eseguire !!nuovamente il comando. Ma vuoi cdinvece entrare in quel percorso:
$ cd !$
Ora supponiamo che tu esegua alcuni altri comandi e quindi desideri fare nuovamente riferimento a quel percorso. Se quello era l'ultimo comando mkdir che hai eseguito, puoi usarlo per ripetere quel percorso:
$ tar czf ~/foo.tgz !mkdir:$