A volte quando eseguo un comando non mi accorgo che ho bisogno di eseguirlo come super user per avere abbastanza autorizzazioni.
C'è un modo per eseguire di nuovo lo stesso comando ma come un super utente?
A volte quando eseguo un comando non mi accorgo che ho bisogno di eseguirlo come super user per avere abbastanza autorizzazioni.
C'è un modo per eseguire di nuovo lo stesso comando ma come un super utente?
Potresti provare il tasto freccia su per scorrere i vecchi comandi, riscriverli / modificarli e aggiungere sudo
davanti a loro. (il pulsante home sopra i tasti freccia imposta la posizione all'inizio).
Non mi piace l'idea sudo !!
, perché a volte aggiungi un altro comando in mezzo e non ricordo più.
Aggiungerò solo un'alternativa: come breve come digitare sudo !!
e più flessibile:
Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A (place cursor at beginning of line)
"sudo "
Enter
È esattamente lo stesso numero di sequenze di tasti (contiamo "ctrl + A" come uno ...), ma aggiungendo "freccia su" puoi farlo con qualsiasi comando nella tua cronologia.
Ci sono alcuni modi per farlo
Basta inserire nuovamente il comando aggiungendo sudo
prima del comando
Premi freccia su per ottenere l'ultimo comando e metti sudo
davanti a esso.
Inserisci sudo !!
La !!
si espande all'ultimo comando immesso. Puoi fare cose simili con altre cose con la cronologia della riga di comando vedi qui
Questa domanda avrebbe potuto essere generalizzata in " Esegui lo stesso comando ma con qualche modifica ", dal momento che una delle brillanti decisioni di design in Unix è che ciò che viene implementato una volta nella shell, può essere sfruttato da qualsiasi comando invocato dalla shell.
In altre parole, questo trucco non si applica solo a sudo
:
sudo !!
) time !!
) env A=b B=z !!
) !!
) L'espansione della cronologia (nota anche come sostituzione della cronologia) è solo una funzione di shell per rendere più semplice la ripetizione dei comandi precedenti (con una minore pressione di tasti). Controlla la pagina man della shell per history expansion
. Descrive molti altri trucchi e scorciatoie che puoi fare con la cronologia, ad esempio:
È possibile fare riferimento ai comandi precedenti per numero:
!55 # repeat command number 55
!-1 # repeat the previous command, alias for !!
!-2 # repeat the command before the previous command
È possibile fare riferimento a singole parole nei comandi precedenti:
some-command !$ # run some-command on the last arg of previous command
Puoi anche cercare prima di ripetere:
!?awk # repeat the last command including the string 'awk'
Puoi cercare la cronologia e sostituire qualcosa con qualcos'altro:
!?awk?:s/str1/str2/ # repeat previous command matching 'awk' replacing str1 by str2
E molto altro, dal momento che puoi combinare la selezione dei comandi, arg-selection, search e replace indipendentemente.
La pagina man della tua shell (in questo caso man bash
) è tua amica.
Io uso zsh invece di bash e ho questo nel mio ~/.zshrc
, quindi premendo Alt + S inserisce sudo
all'inizio della riga di comando:
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo
Purtroppo non sono riuscito a trovare un modo per fare la stessa cosa in bash.
su -c "!!"
Se non hai il permesso di essere root con sudo o il programma sudo non si installa sul sistema.
Il modo in cui lo preferisco:
Ma potrebbe essere più semplice fare "sudo !!", dipende da te.
Se vuoi farlo in un alias, devi usare alias redo='sudo $(history -p !!)'
per qualche motivo.
Leggi altre domande sui tag command-line sudo