GNU/Linux >> Tutoriales Linux >  >> Linux

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

Solución 1:

if sudo test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

página del manual de prueba

Para completar las cosas, en el lado opuesto, si desea verificar desde la raíz si un archivo o directorio es legible para un determinado usuario, puede usar

if sudo -u username test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

Solución 2:

Lo que estás describiendo debería funcionar bien, siempre que estés usando rutas absolutas y -f ("El archivo existe y es un archivo normal") es realmente la prueba que desea realizar.

Veo un final / en lo que publicaste en tu pregunta:¿estás probando un directorio? Eso debería ser -d , o simplemente -e ("Algo existe con ese nombre, independientemente del tipo")

También tenga en cuenta que a menos que algo en el camino no sea legible test ([ ) debería poder decirle si existe o no un archivo propiedad de root (por ejemplo, [ -f /root/.ssh/known_hosts ] probablemente fallará, porque el directorio /root/.ssh no lo es (o al menos no debería serlo ) legible por un usuario normal. [ -f /etc/crontab ] debería tener éxito).

Solución 3:

Agregando a las otras respuestas, distinguir entre la prueba o la falla de autenticación de sudo podría hacerse ejecutando primero sudo true . La mayoría de las implementaciones de Sudo que conozco no requerirán una nueva autenticación en un período breve.

Por ejemplo:

if sudo true; then
    if sudo test -f "/path/to/file"; then
        echo "FILE EXISTS"
    else
        echo "FILE DOESN'T EXIST"
    fi
else
    echo "SUDO AUTHENTICATION FAILED"
fi

Linux
  1. Cómo verificar la sintaxis de sudoers

  2. ¿Cómo verificar si existe una variable en una declaración 'if'?

  3. ¿Cómo verificar el progreso de la ejecución de Cp?

  4. ¿Existe un delineador para verificar el archivo?

  5. ¿Cómo puedo comprobar que existe un archivo y ejecutar un comando si no es así?

Cómo verificar si existe un archivo o directorio en Bash

Cómo usar Sudo y el archivo Sudoers

Cómo verificar si existe un archivo o directorio en Bash

Cómo usar el comando Truncar en Linux

Cómo verificar si existe un archivo o directorio en Bash Shell

¿Cómo usar gzip en Linux?