O pipe (|) representa a condição "ou", mesmo nos operadores lógicos é utilizado || para realizar a operação de "ou" lógico. O "e" é representado por & e no lógico é &&, mas é necessário salientar que nesse contexto, estamos trabalhando com o glob do shell, que tem algumas semelhanças com expressões regulares, mas não é uma ER.
Essas funções glob são muito legais e também muito perigosas, é possível fazer o seguinte teste:
>-l
>arquivo1.txt
>arquivo2.txt
ls
O que nós veremos? O comando ls vai listar 3 arquivos e nada demais irá acontecer, mas se utilizarmos o glob do shell:
ls *
Tivemos um comportamento inesperado do sistema, porque o * é expandido antes do comando ls ser executado e o arquivo -r passa a ser interpretado como um parâmetro do comando. Tanto o * é expandido antes do comando, que o seguinte comando pode ser usado para realizar um ls sem usar o ls:
echo *
Por que isso é perigoso? Pense no arquivo sudoers, que tem os comandos que podemos colocar para outras pessoas executarem como superusuário, será que conseguirímos fazer o comando no sudoers executar algo que não deveria ser executado e ganharmos acesso de root? :D
Se isto respondeu sua pergunta, não esqueça de marcar o tópico como resolvido, mas só se você quiser