Puoi ripetere l'ultimo comando con le bandiere in bash?


1

C'è un modo per ripetere il tuo ultimo comando con bandiere aggiuntive?

Esempio:

Dì che lo faccio:

rm myFavouriteDirectory

Riceverò una risposta:

rm: myFavouriteDirectory/: is a directory

Ovviamente quello che intendevo fare era:

rm -rf myFavouriteDirectory

C'è un modo per ripetere l'ultimo comando con flag come !! -rf (questo non funziona)


Presumo che la modifica della riga precedente non sia un'opzione? (Ad esempio, puntare su e modificare o ESC k $ a opzioni)?
Hennes

Di solito sei più veloce digitando rm -rf $_.
ott--

@ott: Cosa succede se il comando è lungo? Anche $ _ sta solo per l'ultimo parametro? simile a! $? Cosa succede se ci sono più parametri?
jaychris

@jaychris Questo è ciò che è mio Usually è pensato per. $_ è per l'ultimo parametro del comando precedente.
ott--

Risposte:


4

Vedi "ESPANSIONE DELLA STORIA" in man bash.

La cosa più vicina a mia conoscenza sarebbe:
!!:0 -rf !*

!!:0 è la prima parola nel comando precedente, !* è tutto tranne il primo (cioè gli argomenti).

Ma in pratica scriverei sempre:
rm -rf !*

Nelle distribuzioni GNU, !! -rf (cioè mettendo i flag alla fine) funzionerebbe ancora per la maggior parte dei comandi, ma di solito non funziona su BSD e OSX. Dipende da come il comando elabora gli argomenti.


1
Nella mia bash, !! -rf funziona (più semplice di !!: 0! *). Non so se questo dipende dalla versione di bash (come hai menzionato sulla distribuzione GNU). Il mio è "GNU bash, versione 3.00.15 (1)"
jaychris

Come lo strumento (rm in questo caso) elabora gli argomenti è più quello a cui mi riferivo. Gli utilit GNU su Linux generalmente accettano i flag di opzione alla fine dopo altri argomenti, mentre BSD (e OSX) no. Ma tu fai un buon punto, !!:0 !* -rf è completamente inutile e non migliore di !! -rf, Aggiornerò la mia risposta.
Alex Forbes
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.