Acabei de abrir um script de shell herdado (escrito no antigo ksh88 no Solaris) e encontrei o seguinte repetido em todo o código:
[ -f $myfile ] && \rm -f $myfile
A barra invertida que escapa me parece estranha.
Eu sei que é deliberado, já que esse tipo de escape (aparentemente inútil) é repetido em todo o código. O autor original já se foi, não consigo entrar em contato com ele para perguntar.
Isso é simplesmente uma idiossincrasia engraçada do autor ou é algum tipo de boa prática obsoleta que fez sentido em algum momento? Ou talvez seja realmente a maneira recomendada de fazer as coisas e estou perdendo alguma coisa?
Responder1
Isso é usado para proteção de alias:
$ ls
.bashrc a b
$ alias ls
alias ls='ls $LS_OPTIONS'
$ \ls
a b
Responder2
Geralmente é uma boa prática incluir algumas salvaguardas no rm, o que normalmente é conseguido por meio de alias. Em ambientes multiusuário, muitas dessas proteções serão frequentemente implementadas.
Para um praticante de script de shell, muitas vezes é útil desabilitar essas proteções, pois presumivelmente ele sabe o que está fazendo. Isso, como mencionado, é feito prefaciando o comando com uma extensão \
.
Ao contrário da sugestão de @Sorpigal, eu definitivamente desaconselho a desativação dos aliases, para que o script não devolva ao usuário suas salvaguardas. Além disso, usar um caminho completo também não é aconselhável, pois rm pode estar em um caminho auxiliar por uma razão - ou seja, GNU rm vs. BSD rm. Substituí-lo por um caminho estrito seria anular o propósito de ter PATHs, ou seja, escalar e lidar com muitas arquiteturas, ambientes e usuários.