2011-11-22 12 views
5

Vorrei sapere come/se posso riutilizzare un comando dalla cronologia del terminale, ma in una versione modificata. Ecco un esempio:Cerca e sostituisci comandi dalla cronologia dei terminali

$ filter_script file2 > output_file2 
$ # ... 
# now run the same command, but replace '2' with '4' 
$ filter_script file4 > output_file4 

Questo è un esempio molto semplice, e naturalmente può semplicemente accedere al comando dalla storia e sostituire manualmente i due 2 s, ma c'è un modo più elegante?

Grazie mille per il vostro tempo!

risposta

12

Se c'è solo uno istanza di qualunque cosa sia che si desidera sostituire, bash(1) ha una caratteristica semplice la prima volta nel csh(1):

^old^new 

sostituirà la prima istanza di old con new:

$ filter_script file2 > output_file2 
$ ^2^4 
filter_script file4 > output_file2 

Se si desidera sostituire tutte le le istanze, che richiede più digitando:

$ filter_script file2 > output_file2 
$ !:gs/2/4/ 
filter_script file4 > output_file4 

Il g specifica il globale sostituzione sulla riga di comando. Lo ! si riferisce a una linea dalla cronologia, che potrebbe essere più specifica, se si desidera estrarre un comando da un altro punto indietro nella cronologia del comando immediatamente precedente. Vedere la sezione bash(1) su Event Designators.

+0

Ottimo, funziona come un incantesimo - grazie mille :) – canavanin

+1

Roba di qualità, vota! – plundra

+0

wow questo è davvero fantastico. –

Problemi correlati