Isso é usado para proteção de alias:
$ ls
.bashrc a b
$ alias ls
alias ls='ls $LS_OPTIONS'
$ \ls
a b
Acabei de abrir um script de shell legado (escrito no antigo ksh88 no Solaris) e encontrei o seguinte repetido em todo o código:
[ -f $myfile ] && \rm -f $myfile
A barra invertida de escape parece-me estranha.
Eu sei que é deliberado, já que esse tipo de fuga (aparentemente inútil) é repetido durante todo o código. O autor original está muito longe, não consigo entrar em contato com ele para perguntar a ele.
Isto é simplesmente uma idiossincrasia engraçada do autor ou é algum tipo de boa prática obsoleta que fazia sentido em algum momento no tempo? Ou talvez seja realmente a maneira recomendada de fazer as coisas e estou perdendo algo completamente?
Geralmente, é uma boa prática lançar algumas salvaguardas em rm, o que geralmente é obtido pelo aliasing. Em ambientes multiusuários, muitas vezes você verá muitas dessas proteções no lugar.
Para um praticante de scripts de shell, geralmente é útil desabilitar essas salvaguardas, presumivelmente, elas sabem o que estão fazendo. Isso, como mencionado, é realizado com o prefácio do comando com \
.
Ao contrário da sugestão do @Sorpigal, eu definitivamente aconselharia contra 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 é insensato, pois rm pode estar em um caminho auxiliar por um motivo - isto é, GNU rm vs. BSD rm. Para substituí-lo por um caminho restrito seria para derrotar o propósito de ter PATHs, ou seja, para dimensionar e lidar com muitas arquiteturas, ambientes e usuários.
Tags ksh shell-script quoting