GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu použít sudo ke kontrole, zda soubor existuje?

Řešení 1:

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

testovací manuálovou stránku

Abychom to dokončili, na druhé straně, pokud chcete z rootu zkontrolovat, zda je soubor nebo adresář čitelný pro určitého uživatele, můžete použít

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

Řešení 2:

To, co popisujete, by mělo fungovat dobře – pokud používáte absolutní cesty a -f („Soubor existuje a je běžným souborem“) je skutečně test, který chcete provést.

Vidím na konci / v tom, co jste zveřejnili ve své otázce - Testujete adresář? Mělo by to být -d , nebo jednoduše -e ("Něco s tímto jménem existuje - bez ohledu na typ")

Všimněte si také, že pokud něco na cestě není čitelné test ([ ) by vám měl sdělit, zda soubor vlastněný uživatelem root existuje nebo ne (např. [ -f /root/.ssh/known_hosts ] pravděpodobně selže, protože adresář /root/.ssh není (nebo alespoň neměl by ) čitelné pro běžného uživatele. [ -f /etc/crontab ] by měl uspět).

Řešení 3:

Přidání dalších odpovědí, rozlišení mezi neúspěšným testem nebo sudo autentizací lze provést nejprve spuštěním sudo true . Většina implementací sudo, o kterých vím, nebude vyžadovat opětovné ověření během krátké doby.

Například:

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. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Jak mohu zkontrolovat, zda adresář existuje?

  1. Jak zkontrolovat, zda proměnná existuje v prohlášení „if“?

  2. Jak mohu přidat běžného uživatele do souboru sudoers?

  3. Jak připojit k souboru jako sudo?

  1. Jak zkontrolovat syntaxi sudoers

  2. Jak zkontrolovat průběh běhu Cp?

  3. Existuje jedna vložka ke kontrole souboru?