Come posso usare sudo per verificare se esiste un file?

Voglio verificare se esiste un file così

[ -f /path/to/file/ ]

  • Mettere Android sulla networking Ethernet usando VLAN
  • Perché faccio a "ignorare i dati fuori zona" quando riavvii BIND
  • Linux mantiene una cache di membri di gruppi se su LDAP? (Differenza tra gruppi vs gruppo getent))
  • Come fuggire! nella password?
  • Perdi tutto quando si è verificato un errore di disco rigido in un LVM multi-hard disk che NON utilizza RAID?
  • Equivalente server Linux di Cisco Discovery Protocol (CDP)?
  • Tuttavia sto eseguendo questo command come utente normale e il file è di properties; di root. Come posso usare sudo per realizzare questo.

    sudo [ -f /path/to/file/ ] non funziona.

    3 Solutions collect form web for “Come posso usare sudo per verificare se esiste un file?”

    Quello che state descrivendo dovrebbe funzionare bene – fintanto che utilizzi routes assoluti e -f ("File esiste e è un file normale") è veramente il test che si desidera eseguire.

    Vedo una trailing / in ciò che hai inserito nella tua domanda – Stai testando per una directory? Dovrebbe essere -d , o semplicemente -e ("Qualcosa esiste con quel nome – indipendentemente dal tipo")

    Si noti anche che a less che qualcosa non sia leggibile ( [ ) dovrebbe essere in grado di dirvi se esiste o less un file proprietario di root (ad esempio [ -f /root/.ssh/known_hosts ] probabilmente non riesce, perché il / la directory root / .ssh non è (o alless non dovrebbe essere ) leggibile da un normale utente. [ -f /etc/crontab ] dovrebbe riuscire).

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

    prova pagina uomo

    Per completare le cose, dal lato opposto, se si desidera controllare da root se un file o una directory sono leggibili per un determinato utente è ansible utilizzare

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

    Aggiungendo alle altre risposte, la distinzione tra l'authentication del test o del sudo potrebbe essere eseguita eseguendo innanzitutto sudo true . La maggior parte delle implementazioni di sudo che conosco non richiedono la nuova authentication in un breve periodo.

    Per esempio:

     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 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.