Eu sei que podemos usar o formato abaixo para redirecionar a saída da tela para um arquivo:
$ your_program > /tmp/output.txt
No entanto, quando usei o comando abaixo, ele diz "-bash: /home/user/errors.txt: permissão negada"
sudo tail /var/log/apache2/error.log > ~/errors.txt
Posso saber como fazer essa saída funcionar? O ~ / errors.txt não existe. Preciso criar esse arquivo txt antes de usar o comando redirect?
permissions
sudo
io-redirection
output
Xianlin
fonte
fonte
echo hi > ~/errors.txt
? O/home/user
seu diretório pessoal correto (ou o bash de alguma forma ficou confuso sobre onde está o diretório pessoal)?user
usuário que executa o comando?sudo
.sudo
não permite o redirecionamento. muitas maneiras pelas quais as pessoas podem usar isso para fazer coisas impertinentes não incluídas nosudoers.conf
arquivo. Como alternativa, você pode executarsudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"
para arrastar o final de errors.log para o arquivo no seu diretório home.Respostas:
Atrás do tubo, o sudo não funciona. Não sei por que você não pode gravar em sua casa - talvez o arquivo pertença à raiz?
Talvez você precise de um usuário diferente atrás do tubo. Com certeza, você não precisa de um arquivo preexistente.
fonte
Quando você escreve
sudo somecommand > ~/errors.txt
, o shell que está chamandosudo
(e está sendo executado como você) é quem executa o redirecionamento e a abertura~/errors.txt
. Consulte Redirecionando stdout para um arquivo no qual você não tem permissão de gravação . Normalmente, o problema nesse caso é que você deseja que o root grave no arquivo; veja a pergunta vinculada para saber como fazer isso.Aqui, é estranho que você não possa gravar em um arquivo no diretório inicial. As chances são de que você salvou anteriormente alguma saída como raiz
/home/user/errors.txt
e esse arquivo agora existe e pertence à raiz. Remova o arquivo (você pode fazer isso desde que tenha permissão de gravação/home/user
e poderá criá-lo como seu usuário.Se o arquivo realmente não existir, você não terá permissão de gravação no diretório inicial. Embora tecnicamente possível, e na verdade ocasionalmente útil para alguns usuários restritos, é muito incomum.
fonte