Sé que podemos usar el siguiente formato para redirigir la salida de la pantalla a un archivo:
$ your_program > /tmp/output.txt
Sin embargo, cuando utilicé el siguiente comando, dice "-bash: /home/user/errors.txt: Permiso denegado"
sudo tail /var/log/apache2/error.log > ~/errors.txt
¿Puedo saber cómo funciona esta salida? El ~ / errors.txt no existe. ¿Necesito crear este archivo txt primero antes de usar el comando de redirección?
permissions
sudo
io-redirection
output
Xianlin
fuente
fuente
echo hi > ~/errors.txt
? ¿Es/home/user
su directorio de inicio correcto (o bash de alguna manera se confundió acerca de dónde está su directorio de inicio)?user
El usuario que ejecuta el comando?sudo
.sudo
No permite la redirección. demasiadas maneras para que las personas puedan usar eso para hacer cosas malas que no están incluidas en elsudoers.conf
archivo. Como alternativa, puede ejecutarsudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"
para raspar el final de errors.log al archivo en su directorio de inicio.Respuestas:
Detrás de la tubería, el sudo no funciona. No sé por qué no puedes escribir en tu casa, ¿tal vez el archivo pertenece a la raíz?
Tal vez necesite un usuario diferente detrás de la tubería. Por supuesto, no necesita un archivo preexistente.
fuente
Cuando escribe
sudo somecommand > ~/errors.txt
, el shell que llamasudo
(y se ejecuta como usted) es el que realiza la redirección y la apertura~/errors.txt
. Consulte Redirigir stdout a un archivo para el que no tiene permiso de escritura . Por lo general, el problema en ese caso es que desea que el root escriba en el archivo; vea la pregunta vinculada para saber cómo hacer esto.Aquí, es extraño que no pueda escribir en un archivo en su directorio de inicio. Lo más probable es que previamente haya guardado parte de la salida como raíz
/home/user/errors.txt
, y ese archivo ahora existe y pertenece a la raíz. Elimine el archivo (puede hacerlo siempre que tenga permiso de escritura/home/user
, y luego podrá crearlo como su usuario.Si el archivo realmente no existe, entonces no tiene permiso de escritura en su directorio de inicio. Si bien es técnicamente posible, y de hecho ocasionalmente útil para algunos usuarios restringidos, es muy inusual.
fuente