Meu café da manhã ainda não havia atingido meu cérebro quando esqueci as aspas:
alias grep="grep --color=always"
então, em vez disso, digitei:
alias grep=grep --color=always
me deixando com:
--color=always
grep=grep
nos meus pseudônimos.
Quando tento limpar o --color = sempre usando unalias --color
, recebo:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
Tentei escapar, citando e implorando, mas não consigo descobrir como fazer com que o unalias do comando limpe a bagunça.
(Eu sei que um reinício fará o truque, mas certamente deve haver outra maneira)
bash
bash-alias
Solicitar
fonte
fonte
echo > \\?\c:\windows\x.
, ou daquela vez eurm -rf * ~
por acidente.Respostas:
Você pode evitar que sistemas compatíveis com POSIX interpretem traços em comandos adicionando
--
antes de qualquer argumento.Isso também funciona com outros utilitários, digamos que você tenha um arquivo chamado
-bla
. Se você tentar removê-rm
lo, receberá o seguinte erro:Usando
--
antes do nome do arquivo, você removerá o arquivo:fonte
ls ./-bla
erm ./-bla
(ou especificar os caminhos completos, o que for mais fácil no seu caso). Obviamente, isso não funciona para aliases!Basta usar o mesmo truque que você usou para definir o alias
fonte
unalias unalias --color
Solução rápida
Para corrigir ambos os aliases erradas que você pode simplesmente executar
Entendendo o que aconteceu
Você dá o comando errado
alias grep=grep --color=always
sem"..."
.Você define dois aliases
--color
egrep
; na verdade, você pode lê-lo no lado esquerdo da sua saída (tudo à esquerda do=
comando é um alias):então você precisa desabilitar os dois.
Por que isso aconteceu?
O
...
no sinóptico de alias significa que é possível fazer várias atribuições em uma linha:Na saída de
help alias
você pode ler o sinótico, mas a partir deman bash
você pode ler o que é possível na mesma linha, mesmo para listar e atribuir ao mesmo tempo:Você tem problemas para desabilitar o primeiro
--color
sozinho .Isso porque ele é interpretado como opções para
alias
pelo shell; para evitar isso, você precisa comunicar ao seubash
shell que o que está seguindo não é uma opção.O Santo Graal do Linux :,
man
neste caso,man bash
é um cofre cheio de tesouros úteis em situações como essa.Você pode ler em
man bash
:Conforme relatado em outra resposta, a maneira POSIX é usar a combinação de caracteres especiais
--
.Mas por que
unalias grep --color
está trabalhando? Quero dizer sem usar--
?Como funcionou
alias
mesmounalias
, é possível atribuir mais de um nome ao mesmo tempo (novamente o[...]
).Só posso dar um palpite: um bom hábito de programação é escrever as rotinas de leitura e escrita ao mesmo tempo, abaixo da mesma lógica. Portanto, tem que ser para a opção de analisar as rotinas de
alias
eunalias
.Que isso funcione, você pode ver até mesmo este comando (de um shell aberto para essa finalidade) que não apagará todos os seus aliases:
Observação final
Na seção BUGS,
man bash
entre as poucas coisas relatadas, você pode ler:-)
fonte