-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/[ .