Você está usando duas coisas diferentes aqui e deveria estar usando uma terceira. Vamos ver:
-
|: Este é o operador pipe , serve para passar a saída de um processo como entrada para outro:foo | barIsso executa o programa
fooe passa sua saída como entrada para o programabar. -
>,<,>>e<<: estes são os operadores de redirecionamento , eles servem para enviar dados para / de arquivos :-
foo > bar: executa o programafooe salva sua saída no arquivobar, sobrescrevendo 1 seu conteúdo e criá-lo se não existir. -
foo >> bar: executa o programafooe salva sua saída no arquivobar, acrescentando ao seu conteúdo e criando-o se não existe. -
foo < bar: executafoo, informando para ler a entrada do arquivobar. -
O
<<é um caso especial, já que não há sentido em acrescentar "" entrada a um comando, o<<é principalmente (exclusivamente AFAIK) usado para Aqui Documentos :$ cat << EOF > file.txt > Hello World! > EOFA construção
<< SomeStringHere > Out.fileredirecionará todo o texto gravado até encontrar a sequência final (EOFno exemplo acima) no arquivo de destino. Aqui, os documentos permitem que você formate facilmente sequências de várias linhas e inclua variáveis e caracteres especiais.
-
-
O operador
<<<, o Aqui String , é como um Aqui Documento, mas expande as variáveis. Então, por exemplo:grep foo <<< "$bar"O comando acima é equivalente a
echo "$bar" | grep foo. -
O que você está realmente procurando é chamado processo de substituição e é outra maneira de passar a saída de um comando para outro. Consiste em
<(command).foo <(bar)Então, para o seu exemplo
at, você poderia fazerat now < <(echo "notify-send HELLO")O procedimento acima funciona porque a substituição do processo realmente cria um arquivo (leia o link acima para mais detalhes) e é o descritor de arquivo daquele arquivo que é passado com
<toat now.
1 O comportamento padrão é sobrescrever, isso pode ser modificado pela configuração da opção noclobber para bash. Se definido, echo foo > bar falhará se bar existir. Nesse caso, ele pode ser forçado usando echo foo |> bar . Consulte a seção 3.6.2 aqui .