A linha que você escreveu define uma variável cujo valor é a string ls -f | grep -v /
. Ao usá-lo sem aspas, ele é expandido para uma lista de palavras (a string é dividida em espaço em branco): ls
, -f
, |
, grep
, -v
, /
. O caractere |
não é especial, pois o shell está dividindo a string, não a analisando, portanto, ela se torna o segundo argumento para o comando ls
.
Você não pode inserir um comando em uma string como essa. Para definir um nome abreviado para um comando, use um alias (se o comando estiver completo) ou uma função (se o comando tiver parâmetros e nada mais do que passar alguns argumentos padrão para um único comando). No seu caso, um alias serve.
alias my_File='ls -f | grep -v /'
my_File