Quando você executa um comando em uma janela do Terminal, a saída do comando é normalmente impressa no Terminal, ou na tela, para que você possa lê-lo imediatamente. Você também pode imprimir a saída de um comando para um arquivo, se quiser salvá-lo.
Salvar a saída de um comando em um arquivo é útil se você estiver tentando diagnosticar um problema. Para obter ajuda do suporte técnico, talvez seja necessário executar determinados comandos no computador e enviar os resultados para a equipe de suporte. Isso é fácil usando o redirecionamento de saída na linha de comando.
Hoje, abordaremos como enviar a saída de um comando para um arquivo de texto no bash shell no Windows, Mac e Linux.
Nota: Nós estaremos usando o Mac Terminal Estes 6 Comandos de terminal impressionantes irão impulsionar o seu MacBook Estes 6 Comandos de terminal impressionantes irão impulsionar o seu MacBook Você só pode empinar tanto na interface gráfica do usuário antes de ficar desordenado, por isso deve vir como não grande surpresa que você pode fazer algumas coisas muito legais usando o Mac Terminal. Leia mais em nosso exemplo, mas funciona da mesma maneira no bash shell no Linux 40+ Comandos de terminal Linux mais usados 40+ Comandos de terminal Linux mais usados Se você está apenas começando ou simplesmente curioso sobre o terminal Linux, aqui estão os comandos mais comuns que o levarão ao longo de todo o seu tempo no Linux. Leia mais e no novo bash shell no Windows 10 Um guia rápido para o shell bash do Linux no Windows 10 Um guia rápido para o shell baseando-se no Windows 10 Agora é possível executar o Linux no Windows. Saiba mais sobre o Bash no Windows, de como e por que você deve instalá-lo, para recursos ocultos que você provavelmente não conhece. Consulte Mais informação .
Redirecionar saída para um arquivo somente
Existem dois operadores para redirecionar a saída de um comando para um arquivo em vez da tela.
O símbolo > cria um novo arquivo, se não estiver presente, ou sobrescreve o arquivo, se já existir. O >> também cria um novo arquivo, se não estiver presente, mas anexa o texto ao final do arquivo, se ele já existir, em vez de sobrescrever o arquivo.
Nota para si: quando você redireciona uma saída de script de shell para um arquivo, ela não será exibida no console :-) #StupidMe
- Xavier Mertens? (@ xme) 5 de agosto de 2017
Para redirecionar a saída de um comando para um arquivo, digite o comando, especifique o operador > ou > e forneça o caminho para o arquivo para o qual deseja redirecionar a saída. Por exemplo, o comando ls lista os arquivos e pastas no diretório atual. Quando você executa o seguinte comando, a lista de arquivos e pastas será gravada no arquivo ls_output.txt na pasta TerminalOutput .
Substitua / path / to / file pelo caminho completo para o arquivo que você deseja usar.
ls>/path/to/file
Este é o comando do nosso exemplo.
ls>/Users/lorikaufman/TerminalOutput/ls_output.txt
Para visualizar o conteúdo do arquivo na janela Terminal, use o comando cat, conforme mostrado no comando a seguir. Novamente, substitua / path / to / file pelo caminho completo para o arquivo que você deseja visualizar.
cat /path/to/file
O operador > substitui o conteúdo de um arquivo existente toda vez que você o utiliza para redirecionar a saída. Se você quiser salvar a saída de vários comandos em um único arquivo, use o operador >> . Isso acrescenta a saída de um comando ao final do arquivo especificado, se já existir. Se o arquivo não existir, ele cria um novo.
Por exemplo, adicionaremos informações do sistema ao final do arquivo que criamos acima. Portanto, na linha a seguir, uname -a é o comando, seguido pelo operador de redirecionamento >> . Em seguida, o caminho completo para o arquivo ao qual queremos anexar a saída do comando uname .
O parâmetro -a no comando uname imprime todas as informações do sistema disponíveis.
uname -a>>/Users/lorikaufman/TerminalOutput/ls_output.txt
Para visualizar o arquivo com as informações anexadas na janela do Terminal, digite o seguinte comando, com o caminho completo para o seu arquivo.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Repita este processo quantas vezes precisar para anexar a saída do comando ao final do arquivo.
Aqui está outro exemplo de envio da saída do comando ls como árvore de diretórios, com subdiretórios listados recursivamente (o parâmetro R ) e um arquivo por linha (o parâmetro 1 ).
ls -1R>/Users/lorikaufman/TerminalOutput/dir_tree.txt
Em seguida, usamos o comando cat, como mencionado anteriormente, para visualizar o conteúdo do arquivo na janela do Terminal.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Imprimir saída para tela e redirecioná-lo para um arquivo
Os operadores > e >> não exibem a saída de um comando na tela. A saída é enviada apenas para um arquivo.
Se você quiser enviar a saída para um arquivo e vê-lo na tela, use o comando tee em vez dos operadores > e >> .
Alerta nerd! Hoje eu descobri o comando `tee`, que canaliza tanto para um arquivo quanto para um padrão. O Unix continua a se deliciar. pic.twitter.com/aClIT8AdJB
- Zeke Sikelianos (@zeke) 29 de agosto de 2017
Para usar o comando tee você deve canalizar a saída do comando que você está executando, como ls, para o comando tee, usando o operador pipe, uma barra vertical ( | ). Por exemplo, o comando a seguir pega a saída do comando ls e a canaliza para o comando tee . O comando tee envia essa saída para a tela e para um arquivo especificado usando o caminho completo para o arquivo.
ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt
O comando acima substitui todo o conteúdo do arquivo ou cria um novo se ele não existir, assim como o operador > . Usamos o seguinte comando cat para visualizar o conteúdo do nosso arquivo na janela do Terminal.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Para usar o comando tee para imprimir a saída na tela e anexá-la ao final de um arquivo, digite o seguinte comando. Aqui, estamos adicionando informações completas do sistema ao final do arquivo usando o comando uname -a, assim como fizemos com o operador >>, mas enviando a saída para a tela também.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
O comando a seguir é a versão tee da impressão de uma árvore de diretório recursivamente para um arquivo e para a tela, um arquivo em cada linha, assim como fizemos com o operador > .
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Em seguida, usamos o comando cat novamente para visualizar o conteúdo do arquivo.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Mas espere, tem mais
Há muitas outras maneiras de redirecionar a saída, incluindo erros, para um arquivo. Você pode ler sobre os diferentes operadores e comandos usados para redirecionar a saída no capítulo Redirecionamento de E / S do Advanced Bash Scripting Guide. Você também pode aprender mais sobre como usar a linha de comando. Um Guia Rápido Para Começar com a Linha de Comando do Linux Um Guia Rápido para Começar a Linha de Comando do Linux Você pode fazer muitas coisas incríveis com comandos no Linux e não é difícil de aprender . Consulte Mais informação .
Eu aprendi uma boa lição hoje. Não redirecione a saída de log de uma iteração de 10 milhões para o loop para um arquivo txt. Resultado: arquivo de 5 gb txt.
- Lloyd (@ lcarswell1) 21 de maio de 2017
Para que você usa o redirecionamento de saída? Qual método você usa? Você aprendeu alguma outra maneira de redirecionar a saída? Compartilhe seus pensamentos e experiências conosco nos comentários abaixo.