De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 05 de julho de 2010
Ao emitir o comando find
, se não temos os privilégios do superusuário
(root), e dependendo de onde estamos pesquisando, podemos receber uma enxurrada
de mensagens de erro, que atrapalham e muito na visualização dos resultados:
$ find / -name password\* find: `/lost+found': Permissão negada find: `/etc/ppp/peers': Permissão negada find: `/etc/cups/ssl': Permissão negada find: `/etc/chatscripts': Permissão negada find: `/etc/ssl/private': Permissão negada ./var/lib/pam/password find: `/var/lib/mysql': Permissão negada
E por aí vai, dezenas de linhas deste tipo. Rejeição em massa, um problema grave para quem tem auto estima baixa :-)
Se eu puder ignorar as mensagens de erro com segurança, basta redirecioná-las
para o buraco negro de sistemas *nix, o dispositivo /dev/null
:
$ find / -name password\* 2> /dev/null /var/lib/pam/password /var/cache/debconf/passwords.dat /usr/share/ri/1.8/system/CGI/HtmlExtension/password_field-i.yaml /usr/share/ri/1.8/system/URI/Generic/password-i.yaml /usr/share/ri/1.8/system/URI/Generic/password%3d-i.yaml /usr/share/pixmaps/password.png /usr/lib/pppd/2.4.4/passwordfd.so
2>
representa a saída padrão para erros (standard error output stream).
De forma mais simples, a saída padrão para erros, também conhecida
por stderr, é o local para onde a maior parte dos comandos executados
enviam suas mensagens de erro. As mensagens normais são enviadas para a
saída padrão (stdout), representada pelo número 1.
Mas vejamos uma outra situação. Executemos o mesmo comando, mas redirecionando a saída para um arquivo:
$ find / -name password\* > saida.txt find: `/lost+found': Permissão negada find: `/etc/ppp/peers': Permissão negada find: `/etc/cups/ssl': Permissão negada find: `/etc/chatscripts': Permissão negada find: `/etc/ssl/private': Permissão negada find: `/var/lib/mysql': Permissão negada
No arquivo saida.txt
temos o conteúdo:
/var/lib/pam/password /var/cache/debconf/passwords.dat /usr/share/ri/1.8/system/CGI/HtmlExtension/password_field-i.yaml /usr/share/ri/1.8/system/URI/Generic/password-i.yaml /usr/share/ri/1.8/system/URI/Generic/password%3d-i.yaml /usr/share/pixmaps/password.png /usr/lib/pppd/2.4.4/passwordfd.so ... linhas omitidas
A saída padrão, stdout, foi direcionada para o arquivo saida.txt, mas os erros (stderr), continuaram sendo enviados para a tela. A diferença mais significativa é que o arquivo contém o que me interessa. Mesmo assim, meio trabalhoso, não?
Posso fazer melhor. Eu posso redirecionar a saída padrão para um arquivo e os erros para outro:
$ find / -name password\* 2> /tmp/erros.txt 1> /tmp/saida.txt
Bastante útil. Por exemplo, ao rodar um shell script via cron do sistema, você pode querer que os erros lhe sejam enviados por email, para ver se tudo correu bem. É só fazer um teste e ver se o arquivo de erros tem conteúdo. Se tiver, envie o arquivo para você mesmo para que a situação possa ser analisada e as ações apropriadas sejam tomadas.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários