Esegui un comando con l'argomento dall'ultimo comando


34

Quando si eseguono comandi, a volte forse è necessario eseguire un comando con l'argomento dell'ultimo comando. Come puoi farlo?

Naturalmente, salvo l'uso dei tasti freccia e Deltasti: ... DelDelDel... Del<new_command>.

Risposte:


45

Ad esempio, se si esegue questo comando:

mkdir long_path_here/new_dir

molto probabilmente vorresti andare nella directory creata di recente. Puoi farlo usando le prossime "scorciatoie":

  • cd Esc.- digitare cde dopo premere Escseguito da .(non contemporaneamente). Se il comando precedente non ha argomenti, otterrai il comando precedente stesso.
  • cd !*- in questo caso otterrai tutti gli argomenti dal comando precedente. Se il comando precedente non ha argomenti, non otterrai nulla.
  • cd Alt+ .- digitare cde dopo premere Alte .(contemporaneamente). In effetti, usando questo modo e continuando a premere .(senza rilasciare Alt), otterrai l'ultimo argomento per ogni comando dalla storia. Se un comando non ha argomenti, otterrai il comando stesso.

In generale: <command> Esc.oppure <command> !*oppure <command> Alt+ ..


wow, mi hai risparmiato centinaia di ore che avrei finito per perdere nei prossimi due anni
pranavk,

32

Ci sono alcune scorciatoie se vuoi tutti gli argomenti dal comando precedente o solo l'ultimo argomento.

  • Per tutti gli argomenti: <command> !*
  • Solo per l'ultimo argomento: <command> !$

Esempi:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

Se si desidera un singolo argomento da un elenco di argomenti del comando precedente, è possibile utilizzare <command> !!:<argNumber>

Esempio:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

2
Ne hai bisogno solo uno !nella versione arg singola, ad es !:2. Supponendo bash predefinito.
belacqua,

3
Puoi anche usare !^al posto di !:1.
Paddy Landau,

7

Menzionato !*ed !$è una buona cosa, ma quando devi fare un po 'di modifica delle scorciatoie readline vengono in aiuto!

Ad esempio, invece degli innumerevoli ... DelDelDel... Delpuoi semplicemente premere Ctrl-a( vai all'inizio della riga) Alt+d(elimina fino alla fine della parola)

Per maggiori informazioni man readlinee cercare Default key bindings.


4

Per prendere l' nargomento th dal tuo comando precedente, digita Alt+ n+ Alt_. Ad esempio, dopo:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

digitando echoseguito da Alt2Alt_ti darà questo al prossimo prompt:

$ echo 2

Lo "screenshot" dopo aver colpito Alt2è:

(arg: 2) echo

Puoi ripetere Alt_più volte per ottenere in successione l' nargomento dei comandi precedenti.

Un'altra idea utile è definire l'alias r="fc -s". Quindi, è possibile effettuare sostituzioni di comandi:

$ echo 1
1
$ r echo=history
history 1
27755  history 1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.