Creative Saplings

Slik sjekker du riktig om filen finnes i Bash eller Shell (med eksempler)

februar 13, 2021
No Comments

Innholdsfortegnelse

I denne opplæringen vil jeg dekke forskjellige attributter du kan bruke i bash- eller shell-skripting for å sjekke mot filer og kataloger. Du kan bruke bash-betingede uttrykk med ] eller bruke test med for å sjekke om filen eksisterer.

Vi vil bruker bash if and else-operatør for alle eksemplene, så jeg vil anbefale deg å lese: Bash if else bruksanvisning for absolutte nybegynnere

1. Bash / Shell: Sjekk om filen eksisterer og er en vanlig fil

Denne delen viser eksemplene for å sjekke om vanlig fil eksisterer i bash.

1.1: Metode-1: Bruk av enkle eller doble parenteser

Bruk av doble parenteser ]

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

Bruk av enkelt parentes

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

1.2: Metode-2: Bruk testkommando

test kommando brukes til å sjekke filtyper og sammenligne verdier.

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

1.3: Metode-3: Enkelt linje

Vi kan bruke enkle eller doble parenteser her i dette eksemplet. Jeg vil alltid anbefale å bruke doble parenteser når du skriver en linjekode i skall, da det minimerer risikoen for å få advarsler på konsollen når ordoppdeling skjer.

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

Uttalelsen etter && vil bli utført hvis SUCCESS. Hvis den første betingelsen returnerer FALSE, vil setning med || kjøres.

På samme måte bruker testkommando for å sjekke om vanlig fil eksisterer i bash- eller shell-skript på en linje .

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

2. Bash / Shell: Kontroller om filen eksisterer (er tom eller ikke tom)

For å sjekke om filen eksisterer og hvis den er tom eller hvis den har noe innhold, bruker vi «-s» -attributtet

2.1: Metode-1: Bruk av enkle eller doble parenteser

Sjekk om filen eksisterer og er tom eller ikke tom ved hjelp av doble parenteser ]

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

Kontroller om filen eksisterer og er tom eller ikke tom ved bruk av doble parenteser

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

2.2: Metode-2: Ved hjelp av testkommando

Ved hjelp av testkommando kombinerer vi -s attributt for å sjekke om filen eksisterer og er tom eller har noe innhold:

2.3: Metode-3: Enkelt linje

Vi kan bruke begge doble eller enkle parenteser for en slik innføring, men som jeg sa tidligere vil jeg anbefale å bruke doble parenteser.

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

På samme måte som testkommandoen kan vi bruke && og || operatør for å sjekke filen i en linjekommando inne i skallskriptet vårt.

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

3. Bash / Shell: Sjekk om katalogen eksisterer

Jeg håper du vet at alt i Linux er en fil. Så på den måten anses en katalog også å være en fil. Vi kan bruke attributtet «-d» for å sjekke om det finnes en katalog i skallprogrammering.

3.1: Metode-1: Bruk av doble eller enkle parenteser

Vi kan bruke -d attributt innen enkelt eller doble parentes ] hvis katalog eksisterer.

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

På samme måte bruker vi enkelt parenteser i dette eksemplet for å sjekke om katalogen er forhåndsinnstilt i skallskriptet.

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

3.2: Metode-2: Bruke testkommando

I dette eksemplet vil vi bruke testkommando for å sikre oss om katalogen er tilstede eller ikke før vi utfører en viss oppgave.

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

3.3: Metode-3: Enkelt linje

I dette eksemplet vil vi bruke enkle og doble parenteser i en linjeform for å sjekke for katalogen. Uttalelsen etter && operatør vil bli utført hvis den første betingelsen er SANT, og hvis den er FALSK, vil || betingelsen «s uttalelse bli utført .

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

Jeg vil anbefale å bruke ] i stedet for for slike linjekoder i skallprogrammering.

Tilsvarende med && og || kan vi bruke testkommando for å sjekke hvis katalogen finnes

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

4. Bash / Shell: Sjekk om katalogen eksisterer (tom eller ikke tom)

Det er ingen skallattributter som jeg har brukt i alle andre eksempler og scenarier i denne opplæringen, men vi har noen hacks som vi kan bruke til å sjekke om katalogen er tom eller ikke tom.

4.1: Metode-1: Liste kataloginnholdet og bekreft

I dette eksemplet vil vi liste innholdet i katalogen, undertrykke utdataene og deretter kontrollere om katalogen er tom eller inneholder noe basert på utgangskoden innhold

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

Vi kan også reversere dette ved å sette en IKKE (!) -tilstand. Så det ville se ut som:

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

Utgangen ville være den samme i begge eksemplene på skriptene.

4.2: Metode-2: Bruk finn kommando

Vi kan bruke finn kommando og deretter undertrykke utdata for å sjekke om målkatalogen har noe innhold eller ikke.

#!/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: Metode-3: Liste innholdet

Igjen som jeg sa, siden det ikke er noen enkel måte å sjekke om en katalog er tom eller ikke bruker noen attributter, vil vi liste innholdet i katalogen. Hvis du ikke får utdata, er katalogen tom eller ellers ikke tom

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

5. Bash / Shell: Liste over attributter til testfil

Tilsvarende er det mange flere attributter som du kan bruke med skallskript for å se etter forskjellige filtyper, for eksempel symbolske lenker, filtillatelser osv.

Attributter Hva det gjør?
-a FILE Sant hvis FILE eksisterer
-b FILE Sant hvis FILE eksisterer og er en blokkeringsfil.
-c FILE Sant hvis FILE eksisterer og er en spesiell tegnfil.
-d FILE Sant hvis FILE eksisterer og er en katalog.
Sant hvis FILE eksisterer
-f FILE Sant hvis FILE eksisterer og er en vanlig fil
-g FILE Sant hvis FILE eksisterer og set-group-id-biten er satt
-h FILE Sant hvis FILE eksisterer og er en symbolsk lenke
-k FILE Sant hvis FILE eksisterer og den «klissete» biten er satt
-p FILE Sant hvis FILE eksisterer og er en kalt pipe (FIFO)
-r FILE Sant hvis FILE eksisterer og kan leses
-s FILE Sant hvis FILE eksisterer og har en størrelse større enn null
-u FILE Sant hvis FILE eksisterer og set-user-id bit er angitt
-w FILE Sann hvis FILE eksisterer og er skrivbar
-x FILE Sant hvis FILE eksisterer og kan kjøres
-G FILE Sant hvis FILE eksisterer og eies av den effektive gruppe-id
-L FILE Sant hvis FILE eksisterer og er en symbolsk lenke
-N FILE Sant hvis FILE eksisterer og er endret siden sist det ble lest
-o FILE Sant hvis FILE eksisterer og eies av den effektive bruker-ID
-S FILE Sant hvis FILE og er en stikkontakt
Sant hvis FILE1 og FILE2 refererer til samme enhet og inode nummer
FILE1 -nt FILE2 Sant hvis FILE1 er nyere (i henhold til modifikasjonsdato) enn FILE2, eller hvis FILE1 eksisterer og FILE2 ikke
FILE1 -ot FILE2 Sant hvis FILE1 er eldre enn FILE2, eller hvis FILE2 eksisterer og FILE1 ikke

Konklusjon

Articles
Previous Post

Hvordan si at du er velkommen på fransk

Next Post

Hvordan konfigurere ekstern tilgang og koble til en ekstern SQL Server-forekomst med ApexSQL-verktøy

Legg igjen en kommentar Avbryt svar

Siste innlegg

  • De beste fotografiskolene i verden, 2020
  • Suverene borgere tar sin regjeringsfilosofi til veiene
  • Veiledning for stukkaturreparasjon
  • Muckrakers (Norsk)
  • Precision Oncology (Norsk)

Arkiv

  • februar 2021
  • januar 2021
  • desember 2020
  • november 2020
  • oktober 2020
  • september 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.