Bash Sjekk om filen eksisterer – Veiledning og kommandoer som skal brukes

Mens du oppretter et bash-skript, kan du støte på en situasjon der du trenger å finne ut om en fil eksisterer eller ikke å utføre noe med det. Du kan bruke testkommandoen for å sjekke om filen eksisterer og hvilken type den er.

I denne opplæringen vil vi vise deg hvordan du sjekker om filen finnes i Linux-baserte operativsystemer.

Grunnleggende syntaks for testkommando

Den grunnleggende syntaksen til testkommandoen for å sjekke om filen eksisterer som vist nedenfor:

test -e file

Eller

test -f file

Hvor:

  • -e
    Dette alternativet vil sjekke om en fil eksisterer uavhengig av type.
  • -f
    Dette alternativet vil sjekke om en fil bare eksisterer hvis FILEN er en vanlig fil.

Du bør se mannesiden til testkommandoen som vist nedenfor:

man test

Du skal se følgende skjermbilde :

Test om filen eksisterer ved hjelp av kommandolinjen

I denne delen viser vi deg hvordan sjekke om filen eksisterer ved hjelp av kommandolinjen:

Kjør følgende kommando for å sjekke om det finnes en fil med navnet / etc / fstab (T rue):

test -f /etc/fstab

Kjør deretter følgende kommando for å sette utgangskoden til 0 eller 1, når testen lyktes eller ikke.

echo $?

Utgang:

0

Utgangen er 0 som betyr at filen / etc / fstab eksisterer.

Du kan også bruk følgende kommando for å sjekke om filen eksisterer:


echo $0

Output:

0

Kjør deretter følgende kommando for å teste om filen / etc / fabab eksisterer ( Falsk).

test -f /etc/fabab
echo $?

Utgang:

1

Utgangen er 1 som betyr at filen / etc / fabab ikke eksisterer.

Du kan også teste om en fil med navnet /etc/rc.local eksisterer eller ikke bruker den bash-betingede kjøringen som vist nedenfor:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Eller

&& echo "Exists" || echo "Not Exists"

Hvis filen heter /etc/rc.local, bør du se følgende utdata:

Exists

Du kan også sjekke om det finnes flere filer eller ikke med en enkelt kommando:

&& echo "both files exist"

Eller

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Du bør se følgende utdata:

both files exist

Test om filen eksisterer i basken

I denne delen oppretter vi et bash-skript og sjekker om en fil eksisterer eller ikke, ved å skrive ut en melding.

Lar oss lage en fil som heter test.sh og sjekke om en fil /etc/rc.local eksisterer eller ikke:

nano test.sh

Legg til følgende linjer:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Lagre og lukk filen, og kjør skriptet med følgende kommando:

bash test.sh

Du bør se følgende utdata:

The file "/etc/rc.local" exists.

Nå, la oss lage en filtest.sh og teste om filen / etc / rc.localad eksisterer av ikke:

nano test.sh

Legg til følgende linjer:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Lagre og lukk filen, og kjør skriptet med følgende kommando:

bash test.sh

Du bør se følgende utdata:

The file "/etc/rc.localad" is not exists.

Du kan også finne ut om en fil eksisterer eller ikke, og utføre noen handlinger på den i bash-skript.

Finn for eksempel en fil med navnet / etc / hosts og kopier den til / opt-katalogen hvis filen finnes.

For å gjøre det, opprett en fil med navnet test.sh:

nano test.sh

Legg til følgende linjer:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Lagre og lukk filen og kjør skriptet med følgende kommando:

Test nå / opt-katalogen med følgende kommando:

ls /opt/hosts

Du bør se vertsfilen i følgende utdata:

/opt/hosts

Du kan også bruke uttrykket! for å sjekke om filen ikke eksisterer.

Kjør for eksempel følgende kommando for å sjekke om filen / etc / hosting ikke eksisterer:

&& echo "File does not exist"

Eller

test ! -f /etc/hosting && echo "File does not exist"

Du bør se følgende utdata:

File does not exist

Test om katalogen eksisterer

Du kan også finne ut om det finnes en katalog eller ikke ved hjelp av alternativet -d.

Sjekk for eksempel om katalogen / etc / apache2 eksisterer eller ikke.

&& echo "Directory is exists"

Eller

test -d /etc/apache2 && echo "Directory is exists"

Du bør se følgende utgang:

Directory is exists

Du kan også opprette et bash-skript med betingede uttrykk for å sjekke om en katalog eksisterer eller ikke.

Opprett en fil som heter test.sh som vist nedenfor:

nano test.sh

Legg til følgende linjer:

Lagre og lukk filen når du er ferdig. Gi deretter riktig tillatelse med følgende kommando:

chmod 755 test.sh

Test deretter om katalogen / etc / nginx er tilgjengelig eller ikke med følgende kommando:

./test.sh /etc/nginx

Du bør se følgende utdata:

Directory /etc/nginx/ exists.

Test deretter om katalogen / etc / linux er tilgjengelig eller ikke med følgende kommando:

./test.sh /etc/linux

Du bør se følgende utdata:

Directory /etc/linux does not exists

File Testing Operators in Bash

Følgende filtestoperatører hjelper deg med å sjekke om en «fil» eksisterer og har spesifikke typer:

  • -b
    FILE eksisterer og er blokkeringsspesial
  • -c
    FILE eksisterer og er tegnspesial
  • -d
    FILE eksisterer og er en katalog
  • -e
    FIL eksisterer
  • -f
    FIL eksisterer og er en vanlig fil
  • -g
    FIL eksisterer og er set-group-ID
  • -G
    FIL eks ists og eies av den effektive gruppen ID
  • -h
    FILE eksisterer og er en symbolsk lenke (samme som -L)
  • -k
    FILE eksisterer og har dens klebrig bit sett
  • -L
    FILE eksisterer og er en symbolsk lenke (samme som -h)
  • -O
    FILE eksisterer og eies av den effektive brukeren ID
  • -p
    FILE eksisterer og er et navngitt rør
  • -r
    FILE eksisterer og lesetillatelse er gitt
  • -s
    FIL eksisterer og har en størrelse større enn null
  • -S
    FILE eksisterer og er en stikkontakt
  • -u
    FILE eksisterer og dens set-user-ID bit er satt
  • -w
    FILE eksisterer og skrivetillatelse er gitt
  • -x
    FILE eksisterer og utfører (eller søk) tillatelse er gitt

Konklusjon

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *