Come ricordi l'ultimo (n-esimo) argomento passato del comando precedente che hai usato con bash?


9

Spesso emetto comandi diversi sullo stesso file. Per esempio:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

C'è un modo per riutilizzare gli argomenti del comando precedente nella corrente in modo da non doverlo riscrivere?

Risposte:


15

alt-.è certamente carino, ma se ti capita già di sapere quale argomento numerato vuoi, puoi essere più veloce: !:nè l' nargomento th del comando precedente.

È spesso utile combinare questo con lo spazio magico. Per abilitarlo, inserisci il tuo .inputrc Space: magic-space. Con quello abilitato, quando digiti spazio dopo !:2, verrà immediatamente espanso al suo valore invece di aspettare che premi Invio. Ti salva dall'afferrare accidentalmente l'argomento sbagliato.


9

In bash puoi usare la scorciatoia Alt+ ..
Colpirlo una volta, ti darà l'ultimo argomento. Colpirlo di più scorrerà tra i tuoi ultimi argomenti.


4

In bash, il designatore dell '"ultima parola nella riga di comando precedente" è !!$:

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

È inoltre possibile utilizzare la "sintassi del cursore" per sostituire la parte iniziale della riga di comando; questo è utile se si desidera eseguire diversi comandi sullo stesso file:

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

Ci sono molte altre possibilità; vedere "Sostituzione della cronologia" nella pagina man bash (1) per i dettagli.


La sintassi del cursore è in realtà più lenta della pressione della freccia in su e della modifica della riga di comando ...
badp

1
!!$può anche essere scritto !$.
Mikel,

3

In bash, puoi anche usare $ _ per l'ultimo argomento della riga di comando dell'ultimo comando che hai digitato:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

diventa:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

Un modo relativamente lento è il richiamo del comando precedente con e la sostituzione del comando precedente con quello più recente.


Spero in qualcosa di più veloce :)
badp
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.