Apenas redirecione a saída.
unalias rm mv cp >/dev/null 2>/dev/null
Eu tenho acesso a algumas contas remotas, que montei via sshfs em subdiretórios do $ HOME / SSHFS. Para lembrar-me de que não estou a trabalhar com ficheiros locais, defini $PROMPT_COMMAND
para uma função prmt_cmd
, em que defino um% diferente $PS1
if $PWD
correspondências $HOME/SSHFS*
. Agora, para adicionar um pouco de proteção extra, gostaria de adicionar os -i
sinalizadores automaticamente aos comandos rm
, mv
e cp
sempre que eu estiver em um subdiretório de $HOME/SSHFS
. Então acabei com algo como
function prmt_cmd () {
if [[ $PWD == $HOME/SSHFS* ]] ; then
PS1=some prompt
alias rm='rm -I'
alias mv='mv -i'
alias cp='cp -i'
else
# Reset the PS1, remove aliases
PS1=my default prompt
unalias rm mv cp
fi
}
(Na definição real, faço algumas outras coisas, mas isso é irrelevante.) No entanto, unalias
reclama quando os aliases não existem, o que significa que recebo três mensagens de erro antes de cada prompt quando não estou SSHFS / *. unalias
não parece ter um interruptor para silenciá-lo. Então, minha pergunta é: existe uma maneira melhor de alcançar o que eu quero? Talvez eu esteja simplesmente fazendo isso (completamente) errado.
Caso seja relevante, $BASH_VERSION = 4.1.5(1)-release
no Ubuntu 10.10.
No bash, você pode fazer o seguinte para unalias apenas um alias, se existir, por exemplo, rm
:
[ -n "'alias -p | grep '^alias rm=''" ] && unalias rm
Outra ideia seria sobrescrever o alias, mesmo que exista:
alias rm='/bin/rm'