Creative Saplings

Hoe correct te controleren of een bestand bestaat in Bash of Shell (met voorbeelden)

februari 13, 2021
No Comments

Inhoudsopgave

In deze tutorial zal ik verschillende attributen behandelen die je kunt gebruiken in bash- of shell-scripting om te vergelijken met bestanden en mappen. U kunt voorwaardelijke bash-expressies gebruiken met ] of test met om te controleren of het bestand bestaat.

We zullen gebruik bash if en else operator voor alle voorbeelden, dus ik zou je aanraden om te lezen: Bash if else gebruiksgids voor absolute beginners

1. Bash / Shell: controleer of het bestand bestaat en een normaal bestand is

Deze sectie toont de voorbeelden om te controleren of een gewoon bestand in bash bestaat.

1.1: Methode-1: gebruik van enkele of dubbele haakjes

Gebruik van dubbele haakjes ]

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

Enkele haakjes gebruiken

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

1.2: Method-2: Testopdracht gebruiken

test -opdracht wordt gebruikt om bestandstypen te controleren en te vergelijken waarden.

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

1.3: Methode-3: Enkele regel

We kunnen hier enkele of dubbele haakjes gebruiken in dit voorbeeld. Ik zou aanraden om altijd dubbele haakjes te gebruiken wanneer je een liner-code in de shell schrijft, omdat het het risico verkleint dat je waarschuwingen op de console krijgt als er woordsplitsing plaatsvindt.

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

De instructie na && zal worden uitgevoerd bij SUCCES. Als de eerste voorwaarde FALSE retourneert, wordt de instructie met || uitgevoerd.

Op dezelfde manier wordt het testcommando gebruikt om te controleren of een normaal bestand bestaat in bash- of shell-script in een enkele regel .

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

2. Bash / Shell: controleer of het bestand bestaat (is leeg of niet leeg)

Om te controleren of het bestand bestaat en als het leeg is of als het wat inhoud heeft, gebruiken we “-s” attribuut

2.1: Methode-1: Gebruik enkele of dubbele haakjes

Controleer of het bestand bestaat en leeg of niet leeg is met dubbele haakjes ]

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

Controleer of bestand bestaat en is leeg of niet leeg met dubbele haakjes

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

2.2: Method-2: Test commando gebruiken

Met test commando combineren we -s attribuut om te controleren of bestand bestaat en is leeg of heeft inhoud:

2.3: Methode-3: Enkele regel

We kunnen zowel dubbele als enkele haakjes gebruiken voor zo’n voering, maar zoals ik al eerder zei, zou ik aanraden om dubbele haakjes te gebruiken.

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

Op dezelfde manier kunnen we met het testcommando && en || gebruiken operator om het bestand te controleren in een enkele regel in ons shellscript.

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

3. Bash / Shell: controleer of de directory bestaat

Ik hoop dat je weet dat onder Linux alles een bestand is. Op die manier wordt een directory dus ook als een bestand beschouwd. We kunnen het kenmerk “-d” gebruiken om te controleren of er een directory bestaat in shell-programmering.

3.1: Methode-1: dubbele of enkele haakjes gebruiken

We kunnen het -d -attribuut binnen enkele of dubbele haakjes ] gebruiken om te controleren if directory bestaat.

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

Evenzo gebruiken we enkele haakjes in dit voorbeeld om te controleren of de directory vooraf is ingesteld in het shellscript.

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

3.2: Methode-2: Testcommando gebruiken

In dit voorbeeld zullen we het testcommando gebruiken om er zeker van te zijn dat er een directory aanwezig is of niet voordat we een bepaalde taak uitvoeren.

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

3.3: Methode-3: Enkele regel

In dit voorbeeld gebruiken we enkele en dubbele haakjes in de vorm van een enkele regel om te controleren voor de directory. De instructie na de && operator wordt uitgevoerd als de eerste voorwaarde WAAR is en als deze ONWAAR is, wordt de instructie van || condition “uitgevoerd .

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

Ik zou aanraden ] te gebruiken in plaats van voor zo’n liner-codes in shell-programmering.

Evenzo kunnen we met && en || het testcommando gebruiken om te controleren if directory bestaat

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

4. Bash / Shell: controleer of de directory bestaat (leeg of niet leeg)

Er zijn geen shell-attributen zoals ik heb gebruikt in alle andere voorbeelden en scenario’s in deze tutorial. Maar we hebben enkele hacks die we kunnen gebruiken om te controleren of de directory leeg is of niet.

4.1: Methode-1: Maak een lijst van de inhoud van de map en verifieer

In dit voorbeeld zullen we de inhoud van de map weergeven, de uitvoer onderdrukken en vervolgens op basis van de afsluitcode controleren of de map leeg is of content

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

We kunnen dit ook omkeren door een NOT (!) voorwaarde te plaatsen. Dus het zou er als volgt uitzien:

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

De uitvoer zou hetzelfde zijn in beide voorbeeldscripts.

4.2: Methode-2: Gebruiken find commando

We kunnen het find commando gebruiken en vervolgens de uitvoer onderdrukken om te controleren of de doelmap inhoud heeft of niet.

#!/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: Methode-3: Maak een lijst van de inhoud

Zoals ik al zei, aangezien er geen gemakkelijke manier is om te controleren of een map leeg is of sommige attributen niet gebruikt, zullen we de inhoud van de map vermelden. Als u geen uitvoer krijgt, is de map leeg of anders niet leeg

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

5. Bash / Shell: lijst met attributen voor testbestand

Evenzo zijn er veel meer attributen die u kunt gebruiken met shellscripts om te controleren op verschillende bestandstypen, zoals symbolische koppelingen, bestandsrechten enz.

Attributen Wat doet het?
-a FILE Waar als FILE bestaat
-b FILE Waar als FILE bestaat en is een speciaal blokbestand.
-c FILE Waar als FILE bestaat en is een speciaal karakterbestand.
-d FILE Waar als FILE bestaat en is een directory.
Waar als FILE bestaat
-f FILE Waar als FILE bestaat en een normaal bestand is
-g FILE Waar als FILE bestaat en de set-group-id-bit is ingesteld
-h FILE Waar als FILE bestaat en een symbolische link is
-k FILE Waar als FILE bestaat en de “sticky” bit is ingesteld
-p FILE Waar als FILE bestaat en een named pipe (FIFO)
-r FILE Waar als FILE bestaat en is leesbaar
-s FILE Waar als FILE bestaat en heeft een grootte groter dan nul
-u FILE Waar als FILE bestaat en de set-user-id-bit is ingesteld
-w FILE Waar als FILE bestaat en schrijfbaar is
-x FILE Waar als FILE bestaat en uitvoerbaar is
-G FILE Waar als FILE bestaat en eigendom is van de effectieve groeps-ID
-L FILE Waar als FILE bestaat en een symbolische link is
-N FILE Waar als FILE bestaat en is gewijzigd sinds het voor het laatst werd gelezen
-o FILE Waar als FILE bestaat en eigendom is van de effectieve gebruikers-ID
-S FILE Waar als FILE bestaat en is een socket
Waar als FILE1 en FILE2 verwijzen naar hetzelfde apparaat en inode-nummers
FILE1 -nt FILE2 Waar als FILE1 is nieuwer (volgens wijzigingsdatum) dan FILE2, of als FILE1 bestaat en FILE2 doet niet
FILE1 -ot FILE2 Waar als FILE1 ouder is dan FILE2, of als FILE2 bestaat en FILE1 niet

Conclusie

Articles
Previous Post

Hoe u kunt zeggen dat u welkom bent in het Frans

Next Post

Externe toegang configureren en verbinding maken met een externe SQL Server-instantie met ApexSQL-tools

Geef een reactie Antwoord annuleren

Meest recente berichten

  • Beste fotografiescholen ter wereld, 2020
  • Soevereine burgers brengen hun antiregeringsfilosofie naar de weg
  • Kostenhandleiding voor stucwerkreparatie
  • Muckrakers
  • Precisie-oncologie

Archief

  • februari 2021
  • januari 2021
  • december 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.