GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je utiliser sudo pour vérifier si un fichier existe ?

Solution 1 :

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

testez la page de manuel

Pour compléter les choses, à l'opposé, si vous voulez vérifier depuis la racine si un fichier ou un répertoire est lisible pour un certain utilisateur, vous pouvez utiliser

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

Solution 2 :

Ce que vous décrivez devrait fonctionner correctement - tant que vous utilisez des chemins absolus et -f ("Le fichier existe et est un fichier normal") est vraiment le test que vous souhaitez effectuer.

Je vois un / à la fin dans ce que vous avez posté dans votre question - Testez-vous un répertoire ? Cela devrait être -d , ou simplement -e ("Quelque chose existe avec ce nom - quel que soit son type")

Notez également qu'à moins que quelque chose en cours de route ne soit pas lisible test ([ ) devrait pouvoir vous dire si un fichier appartenant à root existe ou non (par exemple [ -f /root/.ssh/known_hosts ] échouera probablement, car le répertoire /root/.ssh ne l'est pas (ou du moins ne devrait pas l'être ) lisible par un utilisateur normal. [ -f /etc/crontab ] devrait réussir).

Solution 3 :

En plus des autres réponses, la distinction entre le test ou l'échec de l'authentification sudo peut être effectuée en exécutant d'abord sudo true . La plupart des implémentations sudo que je connais ne nécessiteront pas de réauthentification dans un court laps de temps.

Par exemple :

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. Comment vérifier la syntaxe sudoers

  2. Comment vérifier si une variable existe dans une instruction "if" ?

  3. Comment vérifier la progression de l'exécution de Cp ?

  4. Une doublure pour vérifier si le fichier existe ?

  5. Comment puis-je vérifier qu'un fichier existe et exécuter une commande sinon?

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment utiliser Sudo et le fichier Sudoers

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment utiliser la commande Truncate sous Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment utiliser gzip sous Linux ?