Hoe te controleren of een bestand bestaat in bash

How Check If File Exists Bash



Er zijn verschillende manieren om de beschikbaarheid van een bestand in Linux te controleren. Het testcommando in bash-scripting is een van de belangrijkste benaderingen om het bestaan ​​van een bestand te controleren.
De focus van deze handleiding is om het bestaan ​​van een bestand in uw systeem te bespreken door middel van bash-scripting:

Hoe het bestaan ​​van bestanden te controleren met bash-scripting:

1) Door de bestandsnaam in de terminal in te voeren:







Ten eerste moeten we een bash-scriptbestand maken, gebruik de onderstaande opdracht:



$aanrakentestfile.sh

De naam van het bestand dat ik heb gemaakt is testfile.sh, de .sh-extensie geeft het shellscriptbestand aan:







Open de testfile.sh in een willekeurige teksteditor. Schrijf vervolgens het script, sla het op door op opslaan te drukken.

Een manier is om een ​​bestand te vinden door de gebruiker in de terminal om een ​​bestandsnaam te vragen.



Gebruik maken van -F om het bestaan ​​van het bestand te controleren.

Schrijf het onderstaande script:

#!/bin/bash
gooide uit 'Vul je bestandsnaam in'
lezennieuw bestand1
indien [ -F '$nieuwbestand1' ]
dan
gooide uit 'Bestand is gevonden'
anders
gooide uit 'Bestand is niet gevonden'
zijn

Ga terug naar de terminal en voer het bestand uit om de uitvoer af te drukken:

./bestandsnaam.sh

Toestemming geweigerd bericht zou worden weergegeven in de terminal.

Maak het uitvoerbaar door het onderstaande commando uit te voeren:

$chmod+ x testbestand.sh

Voer de bestandsnaam in en het zal de uitvoer afdrukken:

2) Door de bestandsnaam in te voeren tijdens het schrijven van het script:
Een andere manier om een ​​bestand te vinden door de bestandsnaam op te geven tijdens het schrijven van het script. We hebben drie manieren om de beschikbaarheid van het bestand te controleren. De eerste gebruikt het testcommando, de tweede gebruikt if met een uitdrukking tussen vierkante haken, en de derde is ook met if maar dubbele vierkante haken zoals hieronder aangegeven:

  1. UITDRUKKING testen.
  2. als [ EXPRESSIE ]
  3. als [[ EXPRESSIE ]]

Laten we het begrijpen met voorbeelden:

1) testen [ Uitdrukking ]
Kopieer het gegeven script en plak het in de editor, sla het op:

#!/bin/bash
bestandsnaam=bestand1
indien toets -F '$bestandsnaam';
dan
gooide uit '$bestandheeft gevonden.'
anders
gooide uit '$bestandis niet gevonden'
zijn

Uitgang:

Aangezien er geen dergelijk bestand in mijn directory is, geeft de code het bericht Bestand is niet gevonden weer.

2) als [ Uitdrukking ]

Kopieer het volgende script om te controleren of het bestand bestaat of niet:

#!/bin/bash
bestandsnaam=mijnbestand.txt
indien [ -F '$bestandsnaam' ];
dan
gooide uit '$bestandsnaamheeft gevonden.'
anders
gooide uit 'bestandsnaam is niet gevonden'
zijn

Uitgang:

3) als [[ Uitdrukking ]]

Kopieer het onderstaande script en plak het op de terminal:

#!/bin/bash
bestandsnaam=testbestand
indien [[ -F '$bestandsnaam' ]];
dan
gooide uit '$bestandsnaamheeft gevonden.'
anders
gooide uit '$bestandsnaamis niet gevonden'
zijn

Uitgang:

Om de map te controleren:

3) Door de mapnaam in te voeren tijdens het schrijven van een script

Gebruik de -NS vlag om het bestaan ​​van een map te controleren.

In het onderstaande script is dir11 de variabele waarin je het bestand opslaat dat je vindt; in dit voorbeeld wil ik controleren of de mapnaam testDir bestaat of niet.

#!/bin/bash
dir11=testDir
indien [ -NS '$dir11' ]
dan
gooide uit 'Directory heeft gevonden'
anders
gooide uit 'Directory is niet gevonden'
zijn

Uitgang:

2) Door de bestandsnaam in de terminal in te voeren:
Wanneer u de opdracht in de terminal uitvoert om te controleren of de directory bestaat of niet, moet u de directorynaam invoeren waarnaar u zoekt:

#!/bin/bash
gooide uit 'typ je mapnaam.'
lezenDir1
indien [ -NS 'Dir1' ]
dan
gooide uit 'map is gevonden'
anders
gooide uit 'map is niet gevonden'
zijn

Uitgang:

Het bestand controleren zonder het if-statement te gebruiken:

Het testcommando kan worden uitgevoerd zonder het if-statement. Het zal alleen uitvoer weergeven als het bestand bestaat; anders zou er geen uitvoer zijn:

Schrijf script:

  1. toets -Fmijnbestand.txt&& gooide uit 'bestand is gevonden'

  2. [ -Fmijnbestand.txt] && gooide uit '$bestandis gevonden.'

  3. [[ -Fmijnbestand.txt]] && gooide uit '$bestandis gevonden.'

Uitgang:

De directory controleren zonder het if-statement te gebruiken:

Gebruik de onderstaande instructies om te controleren of een map bestaat of niet:

  1. [[ -NStestDir]] && gooide uit 'directory bestaat'

  2. 2) [ -NStestDir] && gooide uit 'directory bestaat'

Uitgang:

Meerdere bestanden/mappen controleren:

1) Meerdere bestanden controleren met if-statements:
Gebruik de vlag -a om het bestaan ​​van verschillende bestanden te controleren in plaats van geneste if/else-instructies:

#!/bin/bash
indien [ -Fnieuw_bestand.txt-tot -Fnieuwbestand.txt];dan
gooide uit 'Beide bestanden bestaan.'
zijn

Een andere manier is:

#!/bin/bash
indien [[ -Fnieuw_bestand.txt&& -Fnieuwbestand.txt]];dan
gooide uit 'Beide bestanden bestaan.'
zijn

Uitgang:

2) Meerdere bestanden controleren zonder het if-statement te gebruiken:
Gebruik de volgende instructie om meerdere bestanden tegelijk te controleren 1zonder gebruik van if:

  1. [[ -Fnieuw_bestand.txt&& -Fnieuwbestand.txt]] && gooide uitBeide bestanden worden afgesloten.

  2. [[ -Fnieuw_bestand.txt&& -Fnieuwbestand.txt]] && gooide uitBeide bestanden worden afgesloten.

Uitgang:

Conclusie:

Dit artikel heeft laten zien hoe je bash-scripting kunt gebruiken om een ​​bestand of een map te controleren. We hebben verschillende opties gebruikt om de beschikbaarheid van een bestand te controleren. Ten eerste gebruiken we het testcommando met verschillende vlaggen. Daarna leerden we het gebruik van if, genest if-else, en zonder de if-statements om het bestand of de map te controleren. We hebben ook gekeken hoe je meerdere bestanden of mappen kunt controleren.