Je sais que nous pouvons utiliser le format ci-dessous pour rediriger la sortie d'écran vers un fichier:
$ your_program > /tmp/output.txt
Cependant, lorsque j'ai utilisé la commande ci-dessous, elle indique "-bash: /home/user/errors.txt: autorisation refusée"
sudo tail /var/log/apache2/error.log > ~/errors.txt
Puis-je savoir comment faire fonctionner cette sortie? Le fichier ~ / errors.txt n'existe pas. Dois-je d'abord créer ce fichier txt avant d'utiliser la commande de redirection?
permissions
sudo
io-redirection
output
Xianlin
la source
la source
echo hi > ~/errors.txt
?/home/user
Votre répertoire personnel est -il correct (ou bash a-t-il été confus quant à l'emplacement de votre répertoire personnel)?user
utilisateur qui exécute la commande est-il?sudo
.sudo
ne permet pas la redirection. trop de façons pour que les gens puissent l'utiliser pour faire des choses coquines qui ne sont pas incluses dans lesudoers.conf
dossier. Comme alternative, vous pouvez exécutersudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"
pour gratter la fin du fichier errors.log dans le fichier de votre répertoire personnel.Réponses:
Derrière la pipe, le sudo ne fonctionne pas. Je ne sais pas pourquoi vous ne pouvez pas écrire chez vous - peut-être que le fichier appartient à root?
Vous avez peut-être besoin d'un utilisateur différent derrière le tuyau. Pour sûr, vous n'avez pas besoin d'un fichier préexistant.
la source
Lorsque vous écrivez
sudo somecommand > ~/errors.txt
, le shell qui appellesudo
(et s'exécute comme vous) est celui qui effectue la redirection et l'ouverture~/errors.txt
. Voir Rediriger stdout vers un fichier sur lequel vous n'êtes pas autorisé à écrire . Généralement, le problème dans ce cas est que vous voulez que root écrive dans le fichier; voir la question liée pour savoir comment procéder.Ici, il est étrange que vous ne puissiez pas écrire dans un fichier de votre répertoire personnel. Il est probable que vous ayez précédemment enregistré une sortie en tant que root dans
/home/user/errors.txt
, et ce fichier existe maintenant et appartient à root. Supprimez le fichier (vous pouvez le faire tant que vous disposez d'une autorisation d'écriture/home/user
, puis vous pourrez le créer en tant qu'utilisateur.Si le fichier n'existe vraiment pas, vous n'avez pas de permission d'écriture dans votre répertoire personnel. Bien que techniquement possible, et parfois utile pour certains utilisateurs restreints, c'est très inhabituel.
la source