Creative Saplings

Cum se verifică corect dacă fișierul există în Bash sau Shell (cu exemple)

februarie 13, 2021
No Comments

Cuprins

În acest tutorial voi acoperi diferite atribute pe care le puteți utiliza în scripturile bash sau shell pentru a verifica fișierele și directoarele. Puteți utiliza expresii condiționale bash cu ] sau puteți utiliza testul cu pentru a verifica dacă fișierul există.

folosiți operatorul bash if și else pentru toate exemplele, așa că v-aș recomanda să citiți: Bash if else ghid de utilizare pentru începători absolut

1. Bash / Shell: Verificați dacă fișierul există și este un fișier obișnuit

Această secțiune arată exemplele pentru a verifica dacă există fișier obișnuit în bash.

1.1: Metoda-1: Utilizarea parantezelor simple sau duble

Utilizarea parantezelor duble ]

#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

Utilizarea parantezelor simple

#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

1.2: Metoda-2: Utilizarea comenzii de testare

test Comanda este utilizată pentru a verifica tipurile de fișiere și a compara valori.

#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi

1.3: Metoda-3: Linie simplă

Aici putem folosi paranteze simple sau duble în acest exemplu. Aș recomanda să utilizați întotdeauna paranteze duble atunci când scrieți un cod de linie în shell, deoarece minimizează riscul de a primi avertismente pe consolă atunci când are loc divizarea cuvintelor.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"

Instrucțiunea după && va fi executată dacă SUCCES. Dacă prima condiție returnează FALS, atunci va fi executată declarația cu ||.

În mod similar, folosind comanda test pentru a verifica dacă există fișier obișnuit în script bash sau shell într-o singură linie .

#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"

2. Bash / Shell: Verificați dacă fișierul există (este gol sau nu)

Pentru a verifica dacă fișierul există și dacă este gol sau dacă are un conținut, atunci folosim atributul „-s”

2.1: Metoda-1: Utilizarea parantezelor simple sau duble

Verificați dacă fișierul există și gol sau nu, utilizând paranteze duble ]

#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

Verificați dacă fișierul există și gol sau nu gol folosind paranteze duble

if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

2.2: Metoda-2: Folosind comanda test

Folosind comanda test combinăm atributul -s pentru a verifica dacă fișierul există și este gol sau are un conținut:

2.3: Metoda-3: linie simplă

Putem folosi ambele paranteze duble sau simple pentru o astfel de linie, dar așa cum am spus mai devreme, aș recomanda utilizarea parantezelor duble. / p>

#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

În mod similar, cu comanda de testare putem folosi && și || operator pentru a verifica fișierul într-o singură linie de comandă din scriptul nostru shell.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

3. Bash / Shell: Verificați dacă există director

Sper să știți că în Linux totul este un fișier. Deci, în acest fel, un director este, de asemenea, considerat a fi un fișier. Putem utiliza atributul „-d” pentru a verifica dacă există un director în programarea shell.

3.1: Metoda-1: Utilizarea parantezelor duble sau simple

Putem utiliza atributul -d în cadrul sau paranteze duble ] pentru a verifica dacă directorul există.

#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

În mod similar, folosim paranteze simple în acest exemplu pentru a verifica dacă directorul este presetat în scriptul shell.

#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.2: Metoda-2: Utilizarea comenzii test

În acest exemplu vom folosi comanda test pentru a ne asigura dacă directorul este prezent sau nu înainte de a efectua anumite sarcini.

#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.3: Metoda-3: Linie simplă

În acest exemplu vom folosi paranteze simple și duble sub formă de linie simplă pentru a verifica pentru director. Instrucțiunea după operatorul && va fi executată dacă prima condiție este ADEVĂRATĂ și dacă este FALSĂ instrucțiunea || va fi executată .

#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"

Aș recomanda utilizarea ] în loc de pentru astfel de coduri de linie în programarea shell.

În mod similar cu && și || putem folosi comanda test pentru a verifica dacă directorul există

#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"

4. Bash / Shell: Verificați dacă directorul există (gol sau nu gol)

Nu există atribute shell așa cum am folosit în toate celelalte exemple și scenarii din acest tutorial. Dar avem unele hacks pe care le putem folosi pentru a verifica dacă directorul este gol sau nu – gol.

4.1: Metoda-1: Enumerați conținutul directorului și verificați

În acest exemplu vom lista conținutul directorului, vom suprima ieșirea și apoi pe baza codului de ieșire vom verifica dacă directorul este gol sau conține unele content

#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi

De asemenea, putem inversa acest lucru punând o condiție NU (!). Deci ar arăta ca:

#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

Rezultatul ar fi același în ambele scripturi de exemplu.

4.2: Metoda-2: Utilizarea comanda find

Putem folosi comanda find și apoi suprimăm ieșirea pentru a verifica dacă directorul țintă are sau nu conținut.

#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

4.3: Metoda-3: Enumerați conținutul

Din nou, așa cum am spus, deoarece nu există o modalitate ușoară de a verifica dacă un director este gol sau nu utilizează unele atribute, vom lista conținutul directorului. Dacă nu obțineți nicio ieșire, directorul este gol sau altfel nu este gol

#!/bin/bashDIR="/tmp"if ] ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

5. Bash / Shell: Lista atributelor pentru fișierul de testare

În mod similar, există mai multe atribute pe care le puteți utiliza cu scripturile shell pentru a verifica diferitele tipuri de fișiere, cum ar fi legături simbolice, permisiuni de fișiere etc.

Atribute Ce face?
-a FILE Adevărat dacă FILE există
-b FILE Adevărat dacă FILE există și este un fișier special de bloc.
-c FILE Adevărat dacă FILE există și este un fișier special pentru caractere.
-d FILE Adevărat dacă FILE există și este un director.
Adevărat dacă există FILE
-f FILE Adevărat dacă există FILE și este un fișier obișnuit
-g FILE Adevărat dacă există FILE și bitul său set-group-id este setat
-h FILE Adevărat dacă FILE există și este o legătură simbolică
-k FILE Adevărat dacă există FILE și bitul său „lipicios” este setat
-p FILE Adevărat dacă FILE există și este pipe denumit (FIFO)
-r FILE Adevărat dacă FILE există și este lizibil
-s FILE Adevărat dacă FILE există și are o dimensiune mai mare decât zero
-u FILE Adevărat dacă există FILE și bitul său set-user-id este setat
-w FILE Adevărat dacă FILE există și este scriibil
-x FILE Adevărat dacă FILE există și este executabil
-G FILE Adevărat dacă FILE există și este deținut de ID-ul grupului efectiv
-L FILE Adevărat dacă există FILE și este o legătură simbolică
-N FILE Adevărat dacă FILE există și a fost modificat de la ultima lectură
-o FILE Adevărat dacă FILE există și este deținut de efectiv ID utilizator
-S FILE Adevărat dacă există FILE și este un socket
Adevărat dacă FILE1 și FILE2 se referă la același dispozitiv și numere inode
FILE1 -nt FILE2 Adevărat dacă FILE1 este mai nou (conform datei modificării) decât FILE2 sau dacă există FILE1 și există FILE2 nu
FILE1 -ot FILE2 Adevărat dacă FILE1 este mai vechi decât FILE2 sau dacă există FILE2 și FILE1 nu

Concluzie

Articles
Previous Post

Cum să spui că ești binevenit în franceză

Next Post

Cum se configurează accesul la distanță și se conectează la o instanță SQL Server la distanță cu instrumentele ApexSQL

Lasă un răspuns Anulează răspunsul

Articole recente

  • Cele mai bune școli de fotografie din lume, 2020
  • Cetățenii suverani își duc filosofia anti-guvernamentală la drumuri
  • Ghid de costuri de reparații stuc
  • Muckrakers (Română)
  • Oncologie de precizie

Arhive

  • februarie 2021
  • ianuarie 2021
  • decembrie 2020
  • noiembrie 2020
  • octombrie 2020
  • septembrie 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.