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'