GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo uso sudo para redirigir la salida a una ubicación en la que no tengo permiso para escribir?

Su comando no funciona porque la redirección la realiza su shell, que no tiene permiso para escribir en /root/test.out . La redirección de la salida no realizado por sudo.

Hay múltiples soluciones:

  • Ejecute un shell con sudo y déle el comando usando el -c opción:

    sudo sh -c 'ls -hal /root/ > /root/test.out'
    
  • Cree un script con sus comandos y ejecute ese script con sudo:

    #!/bin/sh
    ls -hal /root/ > /root/test.out
    

    Ejecutar sudo ls.sh . Consulte la respuesta de Steve Bennett si no desea crear un archivo temporal.

  • Inicie un shell con sudo -s luego ejecuta tus comandos:

    [[email protected]]$ sudo -s
    [[email protected]]# ls -hal /root/ > /root/test.out
    [[email protected]]# ^D
    [[email protected]]$
    
  • Usa sudo tee (si tiene que escapar mucho cuando usa el -c opción):

    sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null
    

    La redirección a /dev/null se necesita para detener tee desde la salida a la pantalla. Para añadir en lugar de sobrescribir el archivo de salida (>> ), utilice tee -a o tee --append (el último es específico de GNU coreutils).

Gracias a Jd, Adam J. Forster y Johnathan por la segunda, tercera y cuarta solución.


Alguien aquí acaba de sugerir sudoing tee:

sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null

Esto también podría usarse para redirigir cualquier comando a un directorio al que no tiene acceso. Funciona porque el programa tee es efectivamente un programa de "eco a un archivo", y la redirección a /dev/null es para evitar que también se envíe a la pantalla para mantenerlo igual que el ejemplo original artificial anterior.


Un truco que descubrí yo mismo fue

sudo ls -hal /root/ | sudo dd of=/root/test.out

Linux
  1. ¿Cómo usar chmod para cambiar el permiso del archivo?

  2. ¿Cómo redirigir la salida de system() a un archivo?

  3. Redirección de salida de comando a archivo y terminal

  4. Cómo redirigir la salida del servicio systemd a un archivo

  5. Cómo redirigir la salida completa de spark-submit a un archivo

Cómo usar el comando tee de Linux

Cómo usar Sudo y el archivo Sudoers

Cómo redirigir la salida del comando de shell

Cómo redirigir la salida a /dev/null en Linux

¿Cómo agregar a un archivo como sudo?

¿Cómo puedo usar sudo para verificar si existe un archivo?