Préift ob eng Datei oder en Ordner existéiert oder net (a méi) mat IF Loop

Ech hunn näischt gesat vun Bash, an et ass datt wann ech an déi wonnerbar Welt vu Python erakommen hunn ech e bëssen iwwer dësen anere Frënd vergiess deen mir sou vill gehollef huet

Hei hunn ech eppes fir Bash Enthusiaster gesat, wéi den Titel seet ... Ech weisen Iech wéi Dir kontrolléiert ob et e Fichier oder Dossier am System ass, just mat: if

Mir kreéieren eng .sh Datei erstellen an et Ausféierungs Permissiounen ginn, dofir just de folgenden Kommando an engem Terminal setzen:

Touch test.sh && chmod + x test.sh

Wat dëst gemaach huet ass d'Datei ze kreéieren (Touch Test.sh) a gitt Iech och Ausféierungs Permissiounen (chmod + x test.sh)

Da schreiwe mir folgend dran:

if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

Wat mécht dat?

Einfach 😀

An der éischter Zeil - » wann [-d / opt /];

Hei froe mir, existéiert de / opt / Verzeechnes? Jo Verzeechnes / Dossier, well den -d heescht Verzeechnes oder Dossier.
Dann am Fall wou et existéiert wäerte mir am Terminal drécken «Jo, et gëtt et.»(Dëst ass d'Linn 2 an 3)
Soss an / opt / existéiert NET, da wäerte mir drécken «Nee et gëtt et net»(Linnen 4 a 5)
Dann an der leschter Zeil (Nummer 6) schloe mir de if zou an da wier et.

Verbonnen Artikel:
Erstelle Netzwierkverbindung tëscht dem PC a virtuelle virtuelle Maschinnen

Maacht den Test, et weist Iech datt / opt / existéiert.

Wann Dir wëllt datt ech Iech deen aneren Text weisen (deen deen net existéiert) ännert / opt / fir all aneren Dossier deen net an Ärem System existéiert, zum Beispill: / asd /

Wéi Dir gesitt, hëlleft -d eis ze wëssen ob de Verzeechnes existéiert, och elo wa mir änneren -d op -f ass et fir d'Existenz vun Dateien ze kontrolléieren (-d = Verzeechnes, -f = Datei / Datei)

Zum Beispill:

if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

Hei ass d'Lëscht vun Optiounen:

-d - »Préift ob e bestëmmte Verzeechnes existéiert

-f - »Kontrolléiert ob e bestëmmten Dossier existéiert

-w - »Préift ob eng gewësse Datei Schreifrechter huet

-x - »Préift ob eng gewëssen Datei Ausféierungs Permissiounen huet.

A bon et gëtt net vill méi derbäi 🙂

Ech weess dat wäert ganz nëtzlech sinn an interessant fir déi, déi gär a Bash programméieren 😉

Wat


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

42 Kommentaren, loosst ären

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.

  1.   Hugo sot

    Eng aner Manéier fir et ze maachen ouni wann ... dann..else:

    test -f /etc/hosts && elcomando

    Oder och

    test ! -f /etc/hosts && echo "no se encontró el archivo"

    Etc.

    1.    KZKG ^ Gaara sot

      Richteg 😀
      ... O_O ... Sidd Dir den Hugo, den Hugo vu Kuba? ... Benotzt Windows8, WTF !!!

      1.    Hugo sot

        Gutt, jo, ech gi mat dësem OS vertraut a wann ech frank muss sinn, ass dat eenzegt wat ech nëtzlech fonnt hunn de Kopie Manager, soss fannen ech et perséinlech e Schued, besonnesch seng Hybrid Interface an Metro Uwendungen. Ech hu se manner wéi d'Vista an d'7 (wann och e bësse méi effizient wéi dës), wat ech och net gär hunn. Dat eenzegt wat ech et benotze fir NFS13 a Skyrim ze spillen, awer dësen OS hëlt sou vill Plaz datt ech meng Linux Partition [snif] läschen.

        Awer fir Äre Fridden am Geescht wäert ech Iech soen datt ech virgëschter den Arch ISO fir Januar erofgelueden hunn an ech plangen et e klengen Test a senger x86-64 Versioun ze maachen, soubal ech de Repo kréien (wäert Dir hunn et?). Elo wéi ech se gesinn hunn ënnerschriwwe Packagen als Standard benotzt, gëtt et mir méi Vertrauen fir ze tauchen.

        A mäi Papp huet mir och gesot datt hie mir eng Sony Xperia géif schécken, vun där ech profitéiere wëll fir e Programméiere fir Android ze léieren, wat e gewënschte Wonsch war. Also berouegt mech, ech sinn nach net op déi däischter Säit vun der Kraaft gaang, buahahahaha 😉

  2.   patz sot

    Mann Test

    1.    msx sot

      Sécher.

  3.   RAW-Basis sot

    Wenas! ..

    Mir kéinten déiselwecht maachen .. .. awer de Verzeechnes gëtt als Parameter weiderginn ..

    if [ -d $1 ];
    then
    echo "Sí, sí existe."
    else
    echo "No, no existe"
    fi

    A mir nennen et als:

    ./test.sh / opt /

    Gréiss ..

  4.   savo sot

    WANN ass keen Zyklus xD

  5.   Gregorio Espadas sot

    Et passt mir wéi en Handschued fir e Skript dat ech maachen. Ass et gëlteg Wildcards ze benotzen? Zum Beispill fir ze wëssen ob et .mp4 gëtt da fuert eppes op hinnen.

    wann [-f * .mp4];
    ...

    1.    RAW-Basis sot

      Jo, et ass ganz valabel ..

      Och duerch Parameteren .. "* .mp4"

      1.    RAW-Basis sot

        Zum Beispill,

        if [ -f $1 ];
        then
        rm -r $1
        else
        ls
        fi

        Wann Dir et nennt: ./test.sh * .mp4

        Wann et .mp4 Dateie fënnt, gëtt se se geläscht .. .. awer et gëtt net d'Fichier'en an deem Verzeechnes opgezielt ..

        1.    Gregorio Espadas sot

          Merci fir de Feedback an d'Tipps! 🙂

        2.    Joaquin sot

          Dir hutt den f xD verpasst

          rm -rf $ 1

          Dëst ass méi spannend!

        3.    b1blu3 sot

          Wonnerbar !!!, All Dag wou ech méi verléift mat Linux sinn, gouf Windows op eng däischter Ecke vu menger Hard Drive zréckgezunn, déi elo geläscht gëtt fir dem Linux Liicht ze ginn.

          1.    RAW-Basis sot

            Exzellent! .. .. da maach de nächste Schrëtt .. an huel en eraus ..

            Viru 6 Méint ca. Ech hu just GNU / Linux op all meng Maschinnen an ech brauch net méi .. .. net W $ .. oder Wäin .. ..an ech si méi wéi frou esou ..

            An ech infizéieren meng Ëmgéigend .. well se all mat mengem Arch gesinn, séier, effizient a glécklech .. .. a si froen mech Linux z'installéieren .. ..yeah! .. ..

        4.    Inukaze sot

          Dir kënnt se och op verschidden Extensiounen iwwerpréiwen, Dir kënnt eppes benotze wéi

          #! / bin / bash
          Verzeechnes = $ HOME / Downloads

          wann [$ Directory]; dann
          Echo "Hei ass eng Lëscht mat Dateitypen:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          benotzt {} erlaabt Iech an dësem Fall méi Extensiounen ze spezifizéieren, mat "?" , ass eng Wildcard, déi Iech erlaabt "All Charakter" ze huelen.

          Ech hoffen et hëlleft Iech

        5.    Pedro sot

          Ech empfeelen de Kommando ze fannen [Verzeechnes] [search_pattern] –exec [Kommando] {} \

      2.    Carlos sot

        Et funktionnéiert net, ech hunn dës Dateien an de Verzeechnes gesat:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        sichen.sh

        #! / bin / bash
        PATH = / tmp / TEST
        cd $ ROUTE
        ls -la | awk '{Drécken »« $ 9}'
        wann [[-f AB.TXT]]; dann
        echo »Gitt d'IF wann et AB ass
        .TXT "
        fi
        wann [-f AB20160422.TXT]; dann
        Echo "Input fir eng spezifesch AB Datei"
        fi

        wann ech [-f AB setzen.TXT] gëtt Feeler
        wann ech [[-f AB
        .TXT]] gëtt kee Feeler awer fënnt d'Datei net
        et funktionnéiert nëmme wann ech eng spezifesch Datei setzen, zum Beispill:
        wann [-f AB20160422.TXT]; dann

        Ech kréien et net mat Wildcards ze schaffen * oder?

        1.    Pedro sot

          #! / usr / bin / env bash
          #.Kodéierung = utf-8.

          KONTANTEN

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1m»
          NC = »\ 033 [0m»
          ROUT = »\ 033 [31m»

          wann [! "$ 1"];
          dann
          Echo "e Parameter feelt"
          Sortie $ EXIT_BAD
          fi

          CD "$ 1"

          Dateien = »ls -h1 $ 1»

          fir Datei an $ ($ Dateien); maachen
          echo -e "Dir kënnt alles mat $ BOLD $ Datei $ nc hei maachen"
          gemaach

          Sortie $ EXIT_OK

  6.   msx sot

    @KZ, erzielt méi iwwer dëst: «an dat ass well ech an déi wonnerbar Welt vu Python erakommen»!

    1.    KZKG ^ Gaara sot

      HAHAHAHA nah ... lues a lues 🙂
      Ech sinn ëmmer nach just en Newbie fir Python, ech hu kaum Zäit Stonnen a Stonnen dofir ze widmen, also sinn ech lues jo, lues awer sécher a mengem Léieren

  7.   Audoban sot

    Villmools Merci 😀 just gëschter hunn ech geduecht wéi ech dat maache soll.

  8.   ReichSk sot

    dëst mat ncuren ass super 🙂

  9.   jazeco sot

    an 1 Wuert ... EXCELLENT!
    Fir eng laang Zäit hunn ech e Skript perfektionéiert fir Downloads vum Internet ze maachen, awer ech hu mam Probleem konfrontéiert d'Dateien erofzelueden déi ech 1 gefrot hunn an erëm ouni datt ech d'Existenz 1ro konnt verifizéieren.
    Ganz gutt Tuto.

  10.   zulan sot

    Enorme Bäitrag, hei aus Chile gëtt geschätzt.
    All Dag iwwerrascht mech méi LINUX agreabel,
    Vive Fräi Software MIERDAAAA.

  11.   david sot

    déngen fir
    préift ob eng Datei aus engem Verzeechnes ass

  12.   Grovher sot

    Wann ech d'Existenz vun iergendeng Datei an engem Wee «/ tmp / Empfänger» kontrolléieren, all Kommando ausféieren, wéi wier et?

    Ech wäert ganz dankbar sinn

    Wat

  13.   Juan sot

    Léif, a fir ze bestëmmen WANN wann d'Datei voll populéiert ass ???. Ech froen dat, well wann Dir d'Datei fir eng Iwwerdroung fëllt, da kann et och mat der Halschent vun den Donnéeën daueren.

    Gréiss a Merci fir Är Äntwert.

  14.   Inukaze sot

    Gutt, ech mengen Dir sollt och e Beispill bäifügen, sou wéi "Kontrolléiert datt et keen" e "Fichier" oder "Verzeechnes" gëtt wéi zum Beispill

    fir ze kontrolléieren datt et NET existéiert, zum Beispill eng Variabel-> benotzen

    E Verzeechnes

    #! / bin / bash
    Directory = »$ HOME / Test Directory»
    Datei = »$ HOME / Test Datei»

    wann [! -d "$ Verzeechnes"]; dann
    Echo "Et gëtt keen $ Directory"
    Echo "Erstelle ->" $ Directory "
    mkdir "$ Verzeechnes"
    aneren
    Echo "Verzeechnes" $ Verzeechnes "gëtt et schonn
    fi

    wann [! -d "$ Datei"]; dann
    Echo "Datei $ gëtt et net"
    Echo "Erstelle ->" $ Datei "
    beréiert "$ Datei"
    aneren
    Echo "Datei" $ Datei "gëtt et schonn
    fi

    1.    Katekyo sot

      wann Dir de mkdir kontrolléiert méi spéit ob den Terminal et kéint erstellen well et kann d'Bäll briechen wann et en Dossier als root oder System ass hhah

  15.   Julius vinachi sot

    Gréiss KZKG ^ Gaara eng Ufro wéi ech géif maachen fir Curl ze benotzen. Ech wéilt gär wëssen wéi ech vun der Konsole bis op eng URL uruffe fir ze kucken ob et zum Beispill verfügbar ass http://portal.com/directorio/archivo1.php Wou Datei1 de Besuch IPs späichert, ass et fir en Team ze iwwerwaachen, dat ech all hallef Stonn dee Pin maache muss, fir datt ech mech der ëffentlecher IP bewosst sinn, well se vun Zäit zu Zäit ännert an ech kann net mat ssh verbannen.

    Gréiss Merci am Viraus Gott préschen dech.

    1.    KZKG ^ Gaara sot

      Hallo wéi geet et

      Als éischt musst Dir soen datt d'IP Variabel (zum Beispill) den Inhalt vun där Datei ass, dofir musst Dir:
      1. Luet d'Datei erof
      2. Kuckt säin Inhalt a kritt d'IP vun do
      3. Dat IP ass d'Variabel

      Zum Beispill:
      Hei luede mir d'Datei erof - - wget http://portal.com/directorio/archivo1.php -o Datei.html
      Da gi mir enger Variabel hiren Inhalt zou: - »: $ {IP: =` cat file.html`}
      .. unzehuelen datt den Inhalt vun där Datei nëmmen d'IP huet, wann net, musst Dir mat grep, awk oder mam Kapp schaffen.

      Wann Dir d'IP als Variabel hutt, ass de Rescht dat einfachst op der Welt 🙂

      Wann Dir mech op d'E-Mail schreift (kzkggaara [at] desdelinux [Punkt] net) datt ech Iech gär hëllefen

      1.    Julius vinachi sot

        Villmools Merci kzkggaara ganz dankbar.

  16.   Natalia sot

    Salut, ech verstinn net vill iwwer Berechnung an ech weess net ob dëse Post mam Problem ass, deen ech hunn.

    Ech kommentéieren am Fall wou Dir mech liest, och wann de Post viru engem Joer ass:
    Et stellt sech eraus datt ech en Ordner op mengem Desktop erstallt hunn fir e puer Videoen ze späicheren. Gutt, ech hunn dës Videoe geläscht well ech se net méi gebraucht hunn an elo dësen Dossier seet mir datt et et net gëtt (och wann et op mengem Desktop sichtbar ass).

    - Dat ass deen éischte Problem deen ech hunn:
    Ech kann den Dossier net läschen.

    - Zweete Problem an ech mengen méi wichteg:
    An engem Versuch den Dossier ze läschen, setzen ech e FOTOEN Dossier. Elo wann ech den Dossier opmaachen deen "existéiert net" ass eidel an d'FOTOEN sinn net do.

    Wéi kann ech d'Fotoen erëmkréien? Ech hunn d'Optioun am "Verstoppt Dokumenter weisen" Ordner ginn awer de FOTOEN Ordner erscheint net.

    Ech hoffen Dir kënnt wësse wéi et geléist gëtt.
    Merci.

    1.    valdo sot

      Et ginn zwee Benotzer déi Haaptleit sinn: root an your_user (natalia zum Beispill). Si hu béid perséinlech Classeure. your_user in / home and root in / (root directory). Mat engem Riets-Klick op den Dossier kuckt zu wiem et gehéiert. Wann et root ass mat Ärem Dateemanager mat Sudo oder Gksu oder Kdesu ofhängeg vun der Ëmwelt déi Dir benotzt gitt an de Stammverzeechnes -> root -> Desktop an Dir fannt wahrscheinlech d'Fotoen an Dir kënnt den Dossier läschen. E puer Distros wann Dir net de Besëtzer vun der Datei oder Verzeechnes sidd an net Zougangs Permissiounen hutt sot Dir Verzeechnes / Datei existéiert net. Wann Dir de Besëtzer sidd an Dir sidd net root, maacht datselwecht mam Dateemanager mat sudo, etc a gitt an de Stammverzeechnes -> / doheem -> personal_folder -> Desktop a kuckt ob d'Fotoen do sinn a wann Dir kënnt läschen den Dossier.
      Wann dëst net funktionnéiert, musst Dir aner Optiounen vum Terminal (Konsole) gesinn.

  17.   Pedro Manuel Aguayo Muñoz sot

    Moien, wéi geet et? Ech maachen eng Aarbecht am Bash an ech géif gären wëssen wéi z'iwwerpréiwen ob e Verzeechnes vun der Tastatur aginn ass, zum Beispill

    #! / bin / bash
    liesen Wee
    #Enter ~ / Desktop
    # Da probéieren ech dat Verzeechnes ze navigéieren
    cd $ Wee
    # Ech kréien déi folgend Bash Message: cd: ~ / Desktop: De Fichier oder Verzeechnes existéiert net

    Meng Fro ass, Wat kann ech maachen fir datt ech se vun der Tastatur aginn an als Verzeechneswee huelen?

  18.   Miguel sot

    A wéi kann ech wëssen ob eng Grupp existéiert,

  19.   heidy sot

    gutt Ech hunn e Problem a mengem Canaima wann ech op de Knäppchen cunaguaro drécken da seet et datt et kee Fichier oder Verzeechnes gëtt wéi et géif maache fir dee Problem ze léisen an de Rescht mécht net op cunaguaro merci.

  20.   Carlos sot

    Wéi maacht Dir den if am BASH wann den Dateinumm Plazen huet?
    Zum Beispill:
    Abrëll Daten.xlsx

    Fir ze froen ob d'Datei existéiert

    1.    Manuel Alcocer Jimenez sot

      Carlos, esou:

      wann [["$ variabel" == Daten \ Mount \ vum \ April.xlsx]]; dann echo 'Match'; fi

      Dir kënnt och:
      wann [["$ variabel" == 'Date fir de Mount Abrëll.xlsx']]; dann echo 'Match'; fi

      Eng aner Optioun:
      [["$ Variabel" == 'Date fir April.xlsx']] && echo 'Matcher' || Echo 'passt net'

      An e puer däischtere Beräicher um Internet recommandéiere se [[]] amplaz [] ze benotzen, a wann Dir Zuele vergläicht dann: ((verännerlech> = 3)) && echo 'Variabel ass méi grouss wéi oder gläich wéi 3' | | Echo 'Variabel ass manner wéi 3'

      Dofir, fir Zuelen:

      wann ((Zuel! = 4)); dann echo "$ {number} is not 4"; soss echo "$ {number} is 4"; fi

  21.   Cesar Mateus sot

    wéi Dir e Code maache kënnt fir ze validéieren wann de Verzeechnes e spezifeschen Text huet, fir et z'änneren.

    Beispill:

    wann (text1)

    näischt maachen

    aneren

    änneren text1 op text2

  22.   Miguel sot

    Eng Fro, wéi wier et fir mech all 15. Sekonnen ze kontrolléieren ob d'Datei existéiert oder net, Merci.

  23.   Flossbank sot

    Hallo,
    dëst:
    wann [-w / doheem / Komun / Logs / ti]; dann
    Fannt eraus ob d'Datei schrëftlech ass. Awer et baséiert op Benotzer Permissiounen. Kann et gemaach ginn fir erauszefannen ob de Grupp oder déi aner Permissiounen hunn?