Por padrão a entrada de comando no Shell é o teclado denominado Standard Input ou STDIN, a sua saída o monitor denominado Standard Output ou STDOUT.
Também temos a saída de erro, que são as mensagens indicativa de erro ou avisos gerado por um programa denominado Standard Error Output ou STDERR.
Exemplo:
Utilizando o teclado que é o STDIN vou executar o comando date, na tela será exibido o resultado deste comando que é o STDOUT que mostrara o resultado
Exemplo:
Utilizando o teclado que é o STDIN vou executar o comando date, na tela será exibido o resultado deste comando que é o STDOUT que mostrara o resultado
Agora se digitar no terminal a palavra TUTORIAL, o bash não entenderá pois essa palavra não faz parte de nenhum comando, isso me dará um erro ou um STDERR que também tem a saída na tela.
É importante aprender sobre esta informações e entender o conceito de entrada, saída e erro pois a parti deles você pode trabalhar com direcionamento.
Formas em que posso trabalhar os direcionamentos:
> Redireciona a saída
sobrescrevendo o conteúdo do
arquivo;
>> Redireciona a saída ao
final do arquivo.
2> Redireciona a saída de
erro sobrescrevendo ou criando
conteúdo;
2>> Redireciona a saída de
erro adicionando conteúdo ao
final.
&> Redireciona toda a
saída sobrescrevendo
&>> Redireciona toda a
saída adicionando ao
final;
< O arquivo é a entrado para o comando
Se eu quiser redirecionar a saída de um comando para um arquivo vou utilizar a seguinte sintaxe
ls /etc > lista
Ao usar esse comando eu não terei o comando ls listado na tela e sim adicionado ao arquivo lista, se já existir um arquivo com esse nome o conteúdo dele será sobrescrito.
Para trabalhar com >> o utilizo a mesma sintaxe do comando anterior pois este adiciona o conteúdo que seria exibido na tela no final do arquivo especificado.
ls /var >> lista
Ao usar o comando ls com >> adicione a saída do comando ls no final do arquivo lista.
Agora vamos aprender sobre o < que me permite trabalhar com arquivo alimentando o comando
Vamos usar com exemplo o comando tr que é um comando de substituição e vamos trocar as letras minúsculas para maiúsculas, vejamos.
tr "a-z" "A-z" < lista
Esse comando não altera o conteúdo de lista e sim a sua saída padrão sem alterar o arquivo original.
Também vimos acima o direcionado 2 > que conforme a explicação redireciona a saída padrão de erro para um arquivo. Quando eu executo um comando e eu já estou cinte que ele dará error posso redirecionar sua saída para um arquivo, isso facilitara a análise do erro pois poderei visualizar somente o que deu de errado.
Vou digitar o comando "cat erro" só que não tenho o arquivo erro então a saída do comando será um erro
Supondo que você esta executando um comando e ele esta dando mensagem de acerto e também de error você pode fazer o filtro enviado somente os erros para um determinado arquivo.
cat erro 2> erro.txt
Isso e muito importante quando você tem saída de comandos muito complexos, alem do 2> posso usar o 2>> se quiser adicionar a saída para o final de um arquivo existente.
O comando &> adiciona toda a saída de um comando sobrescrevendo, esse comando adiciona a saída de erro e de acerto para um novo arquivo.
Exemplo:
Pedi para abrir com comando cat o arquivo "/etc/host" e abrir "/etc/", porem somente "/etc/host" e um arquivo então uma das saídas foi um erro. O comando &> novo criou um arquivo com as saídas de erro e acerto.
O "&>>" funciona da mesma maneira que o anterior mas conforme vimos nos comandos acima ele não sobrescreve e sim adiciona a saída no final do arquivo.