Hur man kontrollerar om det finns en fil i bash

How Check If File Exists Bash



Det finns flera sätt att kontrollera tillgängligheten av en fil i Linux. Testkommandot i bash scripting är en av de viktigaste metoderna för att kontrollera en fils existens.
Fokus för den här guiden är att diskutera förekomsten av en fil i ditt system genom bash scripting:

Hur man kontrollerar filens existens med bash scripting:

1) Genom att ange filnamnet i terminalen:







För det första måste vi skapa en bash-skriptfil, använd kommandot nedan:



$Rörtestfile.sh

Namnet på filen jag skapade är testfile.sh, tillägget .sh anger skalskriptfilen:







Öppna testfile.sh i valfri textredigerare. Skriv sedan manuset, spara det genom att trycka på spara.

Ett sätt är att hitta en fil genom att be om ett filnamn från användaren i terminalen.



Använda sig av -f för att kontrollera filens existens.

Skriv nedanstående skript:

#!/bin/bash
kastade ut 'Ange ditt filnamn'
läsanyfil1
om [ -f '$ newfile1' ]
sedan
kastade ut 'Filen hittades'
annan
kastade ut 'Filen hittades inte'
vara

Gå tillbaka till terminalen och kör filen för utskrift:

./filnamn.sh

Meddelande om tillstånd nekad skulle visas i terminalen.

Gör det körbart genom att köra kommandot nedan:

$chmod+ x testfil.sh

Ange filnamnet så skrivs utmatningen ut:

2) Genom att ange filnamnet medan du skriver manuset:
Ett annat sätt att hitta en fil genom att ange filnamnet medan du skriver manuset. Vi har tre sätt att kontrollera tillgängligheten för filen. Den första använder testkommandot, den andra använder if med ett uttryck inom hakparenteser, och den tredje är även med ifall dubbla hakparenteser enligt nedan:

  1. test UTTRYCK.
  2. om [UTTRYCK]
  3. om [[UTTRYCK]]

Låt oss förstå det med exempel:

1) test [Uttryck]
Kopiera det givna skriptet och klistra in det i redigeraren, spara det:

#!/bin/bash
filnamn= fil1
om testa -f '$ filnamn';
sedan
kastade ut '$ filhar funnit.'
annan
kastade ut '$ filhar inte hittats '
vara

Produktion:

Eftersom det inte finns någon sådan fil i min katalog, visar därför koden meddelandet Fil hittades inte.

2) om [Uttryck]

Kopiera följande skript för att kontrollera om filen finns eller inte:

#!/bin/bash
filnamn= minfil.txt
om [ -f '$ filnamn' ];
sedan
kastade ut '$ filnamnhar funnit.'
annan
kastade ut 'filnamn har inte hittats'
vara

Produktion:

3) om [[Uttryck]]

Kopiera det nedan skrivna skriptet och klistra in det på terminalen:

#!/bin/bash
filnamn= testfil
om [[ -f '$ filnamn' ]];
sedan
kastade ut '$ filnamnhar funnit.'
annan
kastade ut '$ filnamnhar inte hittats '
vara

Produktion:

För att kontrollera katalogen:

3) Genom att ange katalognamnet medan du skriver ett manus

Använd -d flagga för att kontrollera att det finns en katalog.

I nedanstående skript är dir11 variabeln där du lagrar filen som du hittar; i det här exemplet vill jag kontrollera katalognamnet testDir finns eller inte.

#!/bin/bash
dir11= testDir
om [ -d '$ dir11' ]
sedan
kastade ut 'Katalogen har hittat'
annan
kastade ut 'Katalogen har inte hittats'
vara

Produktion:

2) Genom att ange filnamnet i terminalen:
När du kör kommandot i terminalen för att kontrollera om katalogen finns eller inte, måste du ange det katalognamn som du söker efter:

#!/bin/bash
kastade ut 'skriv ditt katalognamn.'
läsaDir1
om [ -d 'Dir1' ]
sedan
kastade ut 'katalogen har hittats'
annan
kastade ut 'katalogen har inte hittats'
vara

Produktion:

Kontrollera filen utan att använda if -satsen:

Testkommandot kan köras utan if -satsen. Den visar bara utdata om filen finns; annars skulle det inte finnas någon utdata:

Skriv manus:

  1. testa -fmyfile.txt&& kastade ut 'filen har hittats'

  2. [ -fmyfile.txt] && kastade ut '$ filhar hittats.'

  3. [[ -fmyfile.txt]] && kastade ut '$ filhar hittats.'

Produktion:

Kontrollera katalogen utan att använda if -satsen:

Använd nedanstående uttalanden för att kontrollera att det finns en katalog eller inte:

  1. [[ -dtestDir]] && kastade ut 'katalog finns'

  2. 2) [ -dtestDir] && kastade ut 'katalog finns'

Produktion:

Kontrollera flera filer/kataloger:

1) Kontrollera flera filer med if -satser:
Använd -a -flaggan för att kontrollera förekomsten av olika filer istället för att använda kapslade if/else -uttalanden:

#!/bin/bash
om [ -fnew_file.txt-till -fnewfile.txt];sedan
kastade ut 'Båda filerna finns.'
vara

Ett annat sätt är:

#!/bin/bash
om [[ -fnew_file.txt&& -fnewfile.txt]];sedan
kastade ut 'Båda filerna finns.'
vara

Produktion:

2) Kontrollera flera filer utan att använda if -satsen:
Använd följande uttalande för att kontrollera flera filer samtidigt 1 utan att använda om:

  1. [[ -fnew_file.txt&& -fnewfile.txt]] && kastade utBåda filerna avslutas.

  2. [[ -fnew_file.txt&& -fnewfile.txt]] && kastade utBåda filerna avslutas.

Produktion:

Slutsats:

Den här artikeln har visat hur du använder bash scripting för att kontrollera en fil eller en katalog. Vi använde olika alternativ för att kontrollera tillgängligheten av en fil. För det första använder vi testkommandot med olika flaggor. Sedan lärde vi oss användningen av if, nested if-else, och utan if-satserna för att kontrollera filen eller katalogen. Vi tittade också över hur man kontrollerar flera filer eller kataloger.