2013-06-21 9 views
40

Spesso mi dimentico di eseguire comandi con sudo. Sto cercando un modo per fare una funzione bash (o alias) per la ripetizione dell'ultimo comando con sudo. Qualcosa di simile:Ripetere l'ultimo comando con "sudo"

S() { 
    sudo $(history 1) 
} 

Qualche idea?

+0

Altro lavoro necessario per un alias: http://superuser.com/questions/240180/creating-an-alias-contain-bash-history-expansion –

risposta

11

!! può essere utilizzato per fare riferimento l'ultimo comando. Quindi:

sudo !! 
19

Non abbastanza?

sudo !! 

se si desidera che il S semplicemente mettere:

alias S=sudo 

e usarlo

S !! 

il !! significa che il last command

+1

Bello. Il mio uso è stato quello di convertire istantaneamente una riga di comando delicatamente elaborata in una sceneggiatura: 'echo !! > script.sh' – FractalSpace

+8

Ho alias come "per favore". Ha funzionato su mamma, funziona sul mio terminale. –

8

Usa alias redo='sudo $(history -p !!)'. Questa è l'unica cosa che ho trovato che io ho trovato che funziona con gli alias . Le altre risposte non funzionano in alias per qualche ragione, dopo averle provate personalmente, anche se funzionano quando vengono eseguite direttamente.