-e
retornará verdadeiro se o destino existir. Não importa se é um arquivo, pipe, dispositivo especial, o que for. A única condição em que algo pode existir e -e
retornará false é no caso de um link simbólico quebrado.
Por exemplo:
$ ln -s foo bar
$ [ -e foo ]; echo $?
1
$ touch bar
$ [ -e foo ]; echo $?
0
No bash, você pode fazer help test
para ver quais opções de teste você tem.
[
geralmente faz parte do seu shell. No bash as opções e comportamentos são definidos pelo bash. Também é uma espécie de sinônimo para test
. No bash você pode fazer help test
para ver todas as opções que ele suporta.
A única diferença real entre [
e test
deve ser que [
requer um ]
após seus argumentos, enquanto test
não. Caso contrário, eles funcionam da mesma forma, [ -e foo ]
é equivalente a test -e foo
.
Há também /usr/bin/[
para shells que não possuem [
embutido. Não existe uma página man para isso. Mas há também um /usr/bin/test
e meu sistema tem um man test
que abrange as opções. Eu não testei, mas aposto que todas as opções suportadas por /usr/bin/test
funcionam em /usr/bin/[
.