Eu encontrei esta postagem que explica meu problema. Suponha que haja um arquivo chamado file.txt
que contém “foo World”.
A resposta postada por Tyler explica muita coisa, mas estou confuso sobre como
cat file.txt | grep "foo"
é semelhante a
grep "foo" file.txt
Eu pensei que grep
exigisse o seguinte
grep input argument // input is the string to search for (i.e) foo and // argument is the file path (./file.txt)
Agora, a saída de cat file.txt
é o conteúdo do arquivo que é foo World
isso se torna a entrada do grep
? Estou correcto? Se sim, pensei que grep
requeria um caminho de arquivo como uma string?
Comentários
Resposta
A maioria dos comandos pode lidar com a entrada é um arquivo que eles precisam abrir para entrada ou como um fluxo de dados que é passado para o comando via STDIN.
Quando o conteúdo de cat file.txt
é enviada para outro comando através de um tubo (|
) a saída via STDOUT que “é passada para o tubo no lado esquerdo, é configurada e alimentada para o comando que “s no lado direito do tubo” s STDIN.
Se o conteúdo não está sendo passado via STDOUT -> STDIN por meio de um tubo, os comandos podem receber dados abrindo arquivos que são passados por nome via argumentos de linha de comando.
Exemplos
Envia a saída para STDOUT.
$ cat file 1 2 3 4 5
Saída de cat file
é enviado via STDOUT para grep
” s STDIN via pipe.
$ cat file | grep 5 5
Processando o arquivo como um argumento de linha de comando.
$ grep 5 file 5
Processando o conteúdo do arquivo via STDIN diretamente.
$ grep 5 < <(cat file) 5
Aqui, “m demonstrando que o conteúdo de file
pode ser direcionado para grep
via STDIN acima.
grep(1)
página do manual (digiteman grep
), você verá “grep [options] PATTERN [FILE …]”. O fato de “FILE” ser seguido por “…” significa que pode haver vários argumentos de arquivo; o fato de estar entre colchetes ([
…]
) significa que o argumento do arquivo é opcional (ou seja, não tem para ser qualquer). Continue lendo e você verá que “ Grep pesquisa os ARQUIVOS de entrada nomeados (ou entrada padrão, se nenhum arquivo for nomeado, ou o nome do arquivo-
é fornecido)…. ” Então: se nenhum arquivo for especificado, grep pesquisa a entrada padrão.