Múltiplos métodos de entrada de arquivos [duplicados]

1

Qual é a diferença entre os seguintes comandos:

$ input.txt > grep foo

$ grep foo < input.txt

$ cat input.txt | grep foo

$ grep foo input.txt

E não apenas grep . Outros comandos também.

    
por vikarjramun 24.08.2016 / 14:06

1 resposta

3
  1. input.txt > grep foo Este é provavelmente um erro. Ele executa o comando input.txt e redireciona a saída para um arquivo chamado grep . O foo é um argumento para o comando input.txt .

  2. grep foo < input.txt Isso procura a string foo na entrada proveniente de input.txt . grep não obtém um nome de arquivo na linha de comando, então ele funcionará na entrada padrão. O shell, através do redirecionamento, garantirá que o conteúdo do arquivo input.txt seja entregue no fluxo de entrada padrão para grep .

  3. cat input.txt | grep foo É semelhante ao anterior, mas o fluxo de entrada padrão de grep agora está conectado a um canal através do qual o comando cat entrega o conteúdo do arquivo input.txt . O comando cat grava em seu fluxo de saída padrão, que é conectado ao fluxo de entrada padrão de grep pelo canal.

  4. grep foo input.txt Isso faz com que grep abra o arquivo input.txt e procure a string foo nele. Não usa o fluxo de entrada padrão.

Em geral:

  • Um canal ( | ) conecta o fluxo de saída padrão de seu lado esquerdo com o fluxo de entrada padrão de seu lado direito.

  • Um redirecionamento de entrada ( < ) redireciona de um arquivo para o fluxo de entrada padrão.

  • Um redirecionamento de saída ( > ) redireciona a saída padrão para um arquivo.

  • Fluxos de entrada e saída podem ser redirecionados ao mesmo tempo, por exemplo, usando commandname <inputfile >outputfile e um comando pode ler e gravar em um pipe, como o segundo comando em command1 | command2 | command3 .

  • O redirecionamento e a tubulação podem ser combinados: cat <input.txt | grep foo >output.txt .

Muitos utilitários Unix usam um nome de arquivo de entrada como um argumento opcional e usarão a entrada padrão se nenhum nome de arquivo for fornecido.

Alguns utilitários Unix somente funcionam na entrada padrão, como tr , por exemplo.

Bash e alguns outros shells, como ksh , também suportam o redirecionamento de uma string para a entrada padrão usando <<<"string" (chamado here-string ), e a maioria dos shells entendem aqui -documentos (veja isto).

    
por 24.08.2016 / 14:16