Estou tentando definir um alias para o sudo !!
Bash. Eu tentei alias sbb='sudo !!
', mas interpreta isso como literal !!
e imprime
sudo: !!: command not found
Se eu usar aspas duplas, ele substituirá o estrondo duplo na própria string, para que não funcione.
Existe alguma maneira de fazer isto funcionar? Ou um alias alternativo? `
bash
sudo
alias
command-history
history-expansion
Manishearth
fonte
fonte
Respostas:
!!
é expandido pelo bash quando você digita. Não é expandido por substituição de alias.Você pode usar o
history
built-in para fazer a expansão:Se o comando for mais do que um comando simples (por exemplo, ele contém redirecionamentos ou pipes), você precisa chamar um shell no sudo:
fonte
man tcsh
e descobri que ele faz a expansão do histórico durante a expansão do alias "como se o comando original fosse a linha de entrada anterior". Interessante. No entanto,alias sbb 'sudo \!-2
não funcionou como esperado (na verdade, substituiu a segunda entrada anterior);alias sbb 'sudo \!\!'
fez trabalho conforme o esperado (substituídosbb
para!!
); e, no final, descobriu-se que o que eu queria era oalias sbb 'sudo \!-1'
que eu esperava que fosse o mesmo\!\!
. (tcsh 6.17.06 (Astron) 15-04-2011) YMMV. Boa sorte.sbb
eu prefeririaprease
como alias como sugerido por @jpschorrExperimentar:
Na verdade, eu prefiro chamá-lo de 'por favor':
Info:
fc
é um comando embutido no shell bash. que lista, edita e reexecuta comandos inseridos anteriormente em um shell interativo.fonte
please
é definitivamente o caminho a percorrer!please
faz parecer que o terminal é uma entidade que eu tenho que ser legal para fazer as coisas. Eu prefiro algo que dá uma melhor sensação de controle - comofuck
;)Agora, há um repositório para essa finalidade no GitHub, que verifica magicamente se precisa de direitos de superusuário, também corrige os erros de digitação:
https://github.com/nvbn/thefuck
fonte
apt-get install thefuck
que existe, mas ele não funciona no meu Ubuntu 15.10; (Isso foi publicado originalmente nesta pergunta, mas posteriormente sugerido para publicação aqui.
Aqui está como você pode usar
fc
ehistory
com o alias para!-
substituições semelhantes. Suponha que, se você deseja usar!-n
(em que n é o dígito do enésimo último comando usado), usefc
ehistory
com o alias da seguinte maneira:Usando
history
:Nota: Aqui
!-n
deve ser incluído com'
ou''
.Usando
fc
:Nota: aqui o 1º e o 2º
-n
são usados para especificar o intervalo da lista de histórico.Aqui eu usei eco antes de executar o comando para derrubar como
!-<n>
.fonte
history -p
efc
. Alguma novidade aqui?-ln -n -n
que isso é intensamente confuso; também o pouco sobre'
ou''
(e também o pouco sobre-<n>
).$(fc -ln -1)
fonte