GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich mit sudo prüfen, ob eine Datei existiert?

Lösung 1:

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

Manpage testen

Um die Sache abzuschließen, können Sie auf der anderen Seite, wenn Sie von root aus überprüfen möchten, ob eine Datei oder ein Verzeichnis für einen bestimmten Benutzer lesbar ist,

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

Lösung 2:

Was Sie beschreiben, sollte gut funktionieren - solange Sie absolute Pfade und -f verwenden ("Datei existiert und ist eine reguläre Datei") ist eigentlich der Test, den Sie durchführen möchten.

Ich sehe eine nachgestellte / in dem, was Sie in Ihrer Frage gepostet haben - Testen Sie für ein Verzeichnis? Das sollte -d sein , oder einfach -e ("Es existiert etwas mit diesem Namen - unabhängig vom Typ")

Beachten Sie auch, dass test nicht lesbar ist, es sei denn, etwas auf dem Weg dorthin ist nicht lesbar ([ ) sollte Ihnen mitteilen können, ob eine Datei, die root gehört, existiert oder nicht (z. B. [ -f /root/.ssh/known_hosts ] wird wahrscheinlich fehlschlagen, weil das Verzeichnis /root/.ssh es nicht ist (oder zumindest nicht sein sollte). ) für einen normalen Benutzer lesbar. [ -f /etc/crontab ] sollte gelingen).

Lösung 3:

Zusätzlich zu den anderen Antworten könnte die Unterscheidung zwischen dem Fehlschlagen der Test- oder Sudo-Authentifizierung erfolgen, indem zuerst sudo true ausgeführt wird . Die meisten mir bekannten sudo-Implementierungen erfordern innerhalb kurzer Zeit keine erneute Authentifizierung.

Zum Beispiel:

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. So überprüfen Sie die Syntax von Sudoers

  2. Wie überprüfe ich den Fortschritt des Laufens von Cp?

  3. Wie verwende ich den Dateityp in Vim?

  4. Wie kann ich überprüfen, ob eine Datei vorhanden ist, und einen Befehl ausführen, wenn dies nicht der Fall ist?

  5. Wie kann ich als sudo an eine Datei anhängen?

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So verwenden Sie Sudo und die Sudoers-Datei

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So verwenden Sie den Truncate-Befehl unter Linux

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

Wie verwende ich gzip unter Linux?