Como salvar a saída de um comando em um arquivo no Bash (também conhecido como Terminal Linux e macOS)

Quando você executa um comando no prompt do bash, ele normalmente imprime a saída desse comando diretamente no terminal para que você possa lê-lo imediatamente. Mas o bash também permite “redirecionar” a saída de qualquer comando, salvando-o em um arquivo de texto para que você possa revisar a saída mais tarde.

Isso funciona no bash em qualquer sistema operacional, desde Linux e macOS até o ambiente bash baseado no Ubuntu do Windows 10 .

Opção um: redirecionar a saída para um arquivo apenas

Para usar o redirecionamento bash, você executa um comando, especifica o operador >ou >>e fornece o caminho de um arquivo para o qual deseja que a saída seja redirecionada.

  •  > redireciona a saída de um comando para um arquivo, substituindo o conteúdo existente do arquivo.
  •  >> redireciona a saída de um comando para um arquivo, acrescentando a saída ao conteúdo existente do arquivo.

Tecnicamente, isso redireciona “stdout” – a saída padrão, que é a tela – para um arquivo.

Aqui está um exemplo simples. O lscomando lista arquivos e pastas no diretório atual. Então. quando você executa o seguinte comando, ls irá listar arquivos e pastas no diretório atual. Mas não os imprimirá na tela – os salvará no arquivo que você especificar.

ls> / caminho / para / arquivo

Você não precisa especificar o caminho para um arquivo existente. Especifique qualquer caminho válido e o bash criará um arquivo nesse local.

Se você visualizar o conteúdo do arquivo, verá a ls saída do comando. Por exemplo, o cat comando imprime o conteúdo de um arquivo no terminal:

cat / caminho / para / arquivo

Lembre-se de que o  operador substitui o conteúdo existente do arquivo pela saída do comando. Se você quiser salvar a saída de vários comandos em um único arquivo, use o operador. Por exemplo, o seguinte comando anexará informações do sistema ao arquivo que você especificar: > >>

uname -a >> / caminho / para / arquivo

Se o arquivo ainda não existir, o bash criará o arquivo. Caso contrário, o bash deixará o conteúdo existente do arquivo sozinho e acrescentará a saída ao final do arquivo.

Recomendado:  Os patches do Windows Spectre chegaram, mas você pode querer esperar

Ao visualizar o conteúdo do arquivo, você verá que os resultados do segundo comando foram anexados ao final do arquivo:

Você pode repetir esse processo quantas vezes quiser para continuar acrescentando a saída ao final do arquivo.

Opção dois: imprimir a saída normalmente e redirecioná-la para um arquivo

Você pode não gostar de redirecionar a saída com os operadores > ou >>, pois não verá a saída do comando no terminal. É para isso que tee serve o comando. O comando tee imprime a entrada que recebe na tela e a salva em um arquivo ao mesmo tempo.

Para canalizar a saída de um comando para tee, imprimi-lo na tela e salvá-lo em um arquivo, use a seguinte sintaxe:

comando | tee / caminho / para / arquivo

Isso substituirá qualquer coisa no arquivo pela saída do comando, assim como o >operador.

Para canalizar a saída de um comando para tee, imprimir para na tela e salvá-lo em um arquivo, mas anexando-o ao final do arquivo:

comando | tee -a / caminho / para / arquivo

Isso acrescentará a saída ao final do arquivo, assim como o >>operador.

O shell bash inclui alguns operadores avançados adicionais que executam funções semelhantes. Eles serão particularmente úteis se você estiver escrevendo scripts bash . Consulte o  capítulo I / O Redirection no Advanced Bash-Scripting Guide para obter informações mais detalhadas.