Kontrolloni nëse një skedar apo dosje ekziston apo jo (dhe më shumë) me lak IF

Unë nuk kam vënë asgjë nga Përplas, dhe është se kur jam duke hyrë në botën e mrekullueshme të Python kam harruar pak për këtë mik tjetër që më ndihmoi aq shumë

Këtu u vë diçka entuziastëve të Bash, siç thotë titulli ... Unë do t'ju tregoj se si të kontrolloni nëse ekziston apo jo një skedar ose dosje në sistem, thjesht duke përdorur: if

Ne do të krijojmë një skedar .sh dhe do t'i japim asaj leje ekzekutimi, për këtë mjafton të vendosni komandën e mëposhtme në një terminal:

provë prekje.sh && chmod + x provë.sh

Ajo që bëri kjo është krijimi i skedarit (provë prekëse.sh) dhe gjithashtu t'ju japë leje ekzekutimi (provë chmod + x.sh)

Atëherë le të shkruajmë sa vijon në të:

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

Çfarë bën kjo?

E thjeshtë

Në rreshtin e parë - » nëse [-d / opt /];

Këtu pyesim, a ekziston direktoria / opt /? Po direktori / dosje, sepse -d do të thotë direktori ose dosje.
Pastaj në rast se ekziston ne do të shtypim në terminal «Po, ekziston vërtet.»(Kjo është linja 2 dhe 3)
Përndryshe dhe / opt / NUK ekziston, atëherë ne do të shtypim «Jo nuk ekziston»(Rreshtat 4 dhe 5)
Pastaj në rreshtin e fundit (numri 6) mbyllim if-in dhe kaq.

Artikulli i lidhur:
Vendosni lidhjen e rrjetit midis PC dhe makinave virtuale Virtualbox

Bëni provën, do t'ju tregojë se / zgjedhni / ekziston.

Nëse dëshironi që unë t'ju tregoj tekstin tjetër (ai që nuk ekziston) ndryshoni / zgjedhni / për çdo dosje tjetër që nuk ekziston në sistemin tuaj, për shembull: / asd /

Siç mund ta shihni, -d na ndihmon të dimë nëse drejtoria ekziston, mirëpo nëse ndryshojmë -d në -f është për të kontrolluar ekzistencën e skedarëve (-d = drejtori, -f = skedari / skedari)

Për shembull:

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

Këtu është lista e opsioneve:

-d - »Kontrolloni nëse ekziston një direktori e caktuar

-f - »Kontrolloni nëse ekziston një skedar i caktuar

-w - »Kontrolloni nëse një skedar i caktuar ka leje shkrimi

-x - »Kontrolloni nëse një skedar i caktuar ka leje ekzekutimi.

Dhe mirë, nuk ka shumë më shumë për të shtuar

E di që kjo do të jetë shumë e dobishme dhe interesante për ata që duan të programojnë në Bash

të fala


Përmbajtja e artikullit i përmbahet parimeve tona të etika editoriale. Për të raportuar një gabim klikoni këtu.

42 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Hugo dijo

    Një mënyrë tjetër për ta bërë atë nëse ... atëherë..tjetër:

    test -f /etc/hosts && elcomando

    Ose gjithashtu

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

    Etj

    1.    KZKG ^ Gaara dijo

      Djathtas
      O_O… A je Hugo, Hugo nga Kuba? … Përdorimi i Windows8, WTF !!!

      1.    Hugo dijo

        Epo po, unë jam duke u njohur me këtë sistem operativ dhe nëse duhet të jem i sinqertë, e vetmja gjë që kam parë e dobishme është menaxheri i kopjimit, përndryshe unë personalisht e shoh atë një dhimbje, veçanërisht ndërfaqen e saj hibride dhe aplikacionet e metrosë. Më pëlqen më pak se Vista dhe 7 (megjithëse pak më efikase se këto), të cilat as mua nuk më pëlqyen. Gjithë sa po e përdor është të luaj NFS13 dhe Skyrim, por ky OS merr aq shumë hapësirë ​​sa më është dashur të fshij ndarjen time Linux [snif].

        Sidoqoftë, për qetësinë tuaj mendore, do t'ju tregoj se pardje kam shkarkuar Arch ISO për Janar dhe kam në plan ta bëj një provë të vogël në versionin e tij x86-64, posa të marr repon (do ta keni?). Tani që siç e pashë përdor paketa të nënshkruara si parazgjedhje, kjo më jep më shumë besim për t'u zhytur.

        Dhe babai im gjithashtu më tha se ai do të më dërgonte një Sony Xperia, të cilin dua të përfitoj për të mësuar disa programe për Android, i cili ishte një dëshirë e pritur. Kështu që qetësohu, unë ende nuk kam shkuar në anën e errët të forcës, buahahahaha

  2.   patz dijo

    provë njeriu

    1.    MSX dijo

      Sigurt.

  3.   RAW-Bazë dijo

    Wenas! ..

    Ne mund të bëjmë të njëjtën .. ..po drejtoria kalon si një parametër ..

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

    Dhe ne e quajmë atë si:

    ./test.sh / opt /

    Pershendetje ..

  4.   savo dijo

    NESE nuk eshte cikël xD

  5.   Gregorio Espadas dijo

    Më përshtatet si doreza për një skenar që po bëj. A është e vlefshme përdorimi i kartave të egra? Për shembull, për të zbuluar nëse ka .mp4, atëherë ekzekutoni diçka mbi to.

    nëse [-f * .mp4];
    ...

    1.    RAW-Bazë dijo

      Po, është plotësisht e vlefshme ..

      Edhe përmes parametrave .. "* .mp4"

      1.    RAW-Bazë dijo

        P.sh.

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

        Nëse e quani: ./test.sh * .mp4

        Nëse gjen skedarë .mp4, i fshin ... ... por nuk rendit skedarët në atë direktori ...

        1.    Gregorio Espadas dijo

          Faleminderit për komentet dhe këshillat! 🙂

        2.    Joaquin dijo

          Ju ka munguar f xD

          rm -rf $ 1

          Kjo është më emocionuese!

        3.    b1tblu3 dijo

          E mrekullueshme !!!, Çdo ditë që dashurohem më shumë me Linux, Windows-i është zhvendosur në një cep të errët të Hard Drive-ut tim, i cili do të fshihet për t'i dhënë rrugë dritës së Linux.

          1.    RAW-Bazë dijo

            Shkelqyeshem! .. .. atehere hidhni hapin tjeter .. dhe nxirreni jashte ..

            6 muaj më parë rreth. Unë kam vetëm GNU / Linux në të gjitha makinat e mia dhe nuk kam nevojë për më shumë .. .. jo W $ .. ose verë .. .. dhe unë jam më se i lumtur kështu ..

            Dhe unë po infektoj rrethinat e mia .. meqenëse të gjithë më shohin me Arch-in tim, të shpejtë, efikas dhe të lumtur .. .. dhe ata më kërkojnë të instaloj Linux .. ..po! .. 😀

        4.    Inukaze dijo

          Ju gjithashtu mund t'i kontrolloni ato për shtesa të ndryshme, mund të përdorni diçka të tillë

          #! / bin / bash
          Drejtoria = $ HOME / Shkarkimet

          nëse [$ Directory]; atëherë
          echo "Këtu është një listë e llojeve të skedarëve:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          duke përdorur {} ju lejon të specifikoni shtesa të shumta në këtë rast, përdorimi i "?" , është një kartolinë, e cila ju lejon të merrni "Çdo Karakter".

          Shpresoj të të ndihmojë

        5.    pedro dijo

          Unë rekomandoj komandën gjeni [direktoria] [search_pattern] –exec [komanda] {} \

      2.    Carlos dijo

        Nuk funksionon, unë i vendos këto skedarë në direktori:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        kërko.sh

        #! / bin / bash
        Rruga = / tmp / TESTI
        cd $ Rruga
        ls -la | awk '{print ”« $ 9} »
        nëse [[-f AB.TEKST]]; atëherë
        jehonë »Futni NESE nëse ka ndonjë AB
        .TEKST "
        fi
        nëse [-f AB20160422.TXT]; atëherë
        echo "input për një skedar specifik AB"
        fi

        kur vendos [-f AB.TXT] jep gabim
        kur vendos [[-f AB
        .TXT]] nuk jep një gabim por nuk mund ta gjejë skedarin
        funksionon vetëm kur vendos një skedar specifik, për shembull:
        nëse [-f AB20160422.TXT]; atëherë

        Nuk mund ta bëj të punojë me karta të egra * apo?

        1.    pedro dijo

          #! / usr / bin / env bash
          #.kodimi = utf-8.

          KUSHTETANTT

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1 milion»
          NC = »\ 033 [0 milion»
          KUQ = »\ 033 [31 milion»

          nëse [! "$ 1"];
          pastaj
          jehona "mungon një parametër"
          dilni nga $ EXIT_BAD
          fi

          cd "$ 1"

          skedarë = »ls -h1 $ 1»

          për skedarin në $ ($ skedarë); bëj
          echo -e "ju mund të bëni gjithçka me $ BOLD $ skedar $ nc këtu"
          e bërë

          dilni nga $ EXIT_OK

  6.   MSX dijo

    @KZ, trego më shumë për këtë: "dhe kjo sepse po hyj në botën e mrekullueshme të Python"!

    1.    KZKG ^ Gaara dijo

      HAHAHAHA nah ... pak nga pak
      Unë jam ende vetëm një fillestar në Python, vështirë se kam kohë t'i kushtoj orë dhe orë të tëra, kështu që jam i ngadaltë po, i ngadaltë por i sigurt në mësimin tim ...

  7.   Audoban dijo

    Faleminderit shumë ... vetëm dje po mendoja se si ta bëja këtë.

  8.   ReichSk dijo

    kjo me ncurses eshte e mrekullueshme

  9.   jazeco dijo

    me 1 fjale… E SHKELQYER!
    Për një kohë të gjatë po përsosja një skenar për të bërë shkarkime nga interneti, por isha përballur me problemin e shkarkimit të skedarëve që kërkova 1 dhe përsëri pa qenë në gjendje të verifikoja ekzistencën 1ro.
    Shumë mirë tuto.

  10.   zulan dijo

    Kontributi i jashtëzakonshëm, këtu nga Kili vlerësohet.
    Çdo ditë më shumë LINUX më befason këndshëm,
    Rroftë Software-i i Lirë MIERDAAAA.

  11.   david dijo

    shërbejnë për
    kontrolloni nëse një skedar është nga një direktori

  12.   Grovher dijo

    Nëse dua të kontrolloj ekzistencën e ndonjë skedari në një rrugë «/ tmp / marrës», ekzekutoj ndonjë komandë, si do të ishte?

    Unë do të jem shumë mirënjohës

    të fala

  13.   John dijo

    I dashur, dhe të përcaktohet nga IF nëse skedari është i mbushur plotësisht ??? E pyes këtë sepse kur jeni duke mbushur skedarin për një transmetim, mund ta marrë atë edhe me gjysmën e të dhënave.

    Përshëndetje dhe faleminderit për përgjigjen tuaj.

  14.   Inukaze dijo

    Epo mendoj se duhet të shtoni edhe një shembull, si p.sh. "Kontrolloni që nuk ka skedar" ose "direktori" si për shembull

    për të kontrolluar që NUK ekziston, për shembull përdorni një ndryshore->

    Një Drejtori

    #! / bin / bash
    Drejtoria = »$ HOME / Drejtoria e Testimit»
    Skedar = »$ HOME / Skedar Test»

    nëse [! -d "$ Directory"]; atëherë
    jehonë "Nuk ka $ Directory"
    echo "Krijimi ->" $ Directory "
    mkdir "$ Directory"
    tjetër
    echo "Drejtoria" $ Directory "ekziston tashmë
    fi

    nëse [! -d "$ File"]; atëherë
    jehona "Dosja $ nuk ekziston"
    echo "Krijimi ->" $ File "
    prek "$ File"
    tjetër
    jehona "Skedari" $ File "ekziston tashmë
    fi

    1.    Katekyo dijo

      kur e kontrolloni më vonë mkdir nëse terminali mund ta krijojë atë sepse mund të thyejë topa nëse është një dosje si rrënjë ose sistem hhah

  15.   Xhulio Vinachi dijo

    Përshëndetje KZKG ^ Gaara një pyetje siç do të bëja për të përdorur curl. Do të doja të dija se si bëj nga tastiera te ping një url për të parë nëse është në dispozicion për shembull http://portal.com/directorio/archivo1.php Aty ku skedari1 do të ruajë IP-të e vizitës, është për të monitoruar një ekip që duhet ta bëj atë pin çdo gjysmë ore në mënyrë që të jem i vetëdijshëm për IP-në publike pasi ndryshon herë pas here dhe nuk mund të lidhem me ssh.

    Përshëndetje faleminderit paraprakisht Zoti ju bekoftë.

    1.    KZKG ^ Gaara dijo

      Hi si po shkon

      Së pari, duhet të thuash që ndryshorja IP (për shembull) është përmbajtja e asaj skedari, për këtë duhet të:
      1. Shkarkoni skedarin
      2. Shikoni përmbajtjen e tij dhe merrni IP nga atje
      3. Kjo IP është variabla

      Për shembull:
      Këtu shkarkojmë skedarin - »wget http://portal.com/directorio/archivo1.php -o skedar.html
      Pastaj caktojmë një variabël përmbajtjen e saj: - »: $ {IP: =` skedar mace.html`}
      .. duke supozuar që përmbajtja e asaj skedari ka vetëm IP, nëse jo, do të duhej të punonit me grep, awk ose head.

      Pasi të keni IP-në si një variabël, pjesa tjetër është gjëja më e thjeshtë në botë

      Nëse dëshironi më shkruani në email (kzkggaara [at] desdelinux [dot] net) që me kënaqësi do t'ju ndihmoj

      1.    Xhulio Vinachi dijo

        Faleminderit shumë kzkggaara shumë mirënjohës.

  16.   Natalia dijo

    Përshëndetje, unë nuk kuptoj shumë për informatikën dhe nuk e di nëse ky postim ka të bëjë me problemin që kam.

    Unë komentoj në rast se më lexoni, edhe pse postimi është i një viti më parë:
    Rezulton se kam krijuar një dosje në desktopin tim për të ruajtur disa video. Epo, unë i fshiva ato video sepse nuk më duheshin më dhe tani kjo dosje më tregon se nuk ekziston (edhe pse është e dukshme në desktopin tim).

    - Ky është problemi i parë që kam:
    Nuk mund ta fshij dosjen.

    - Problemi i dytë dhe mendoj se është më i rëndësishëm:
    Në një përpjekje për të fshirë dosjen, unë vendos një dosje PHOTOS. Tani kur hap dosjen që "nuk ekziston", ajo është bosh dhe FOTOT nuk janë atje.

    Si mund t'i rikuperoj fotot? Unë kam dhënë mundësinë brenda dosjes "Trego dokumentet e fshehura" por dosja PHOTOS nuk shfaqet.

    Unë shpresoj se ju mund të dini se si zgjidhet.
    Ju faleminderit.

    1.    Valdo dijo

      Ekzistojnë dy përdorues që janë më kryesorët: root dhe your_user (natalia për shembull). Të dy kanë dosje personale. përdoruesi juaj në / shtëpi dhe rrënjosni në ((direktoria rrënjë). Duke klikuar me të djathtën në dosje shikoni se kujt i përket. Nëse është root me menaxherin tuaj të skedarëve duke përdorur sudo ose gksu ose kdesu në varësi të mjedisit që përdorni shkoni në direktorinë root -> root -> Desktop dhe me siguri do të gjeni fotot dhe mund ta fshini dosjen. Disa distro kur nuk jeni zotëruesi i skedarit ose direktorisë dhe nuk keni leje hyrjeje ju tregojnë që direktoria / skedari nuk ekziston. Nëse ju jeni pronari dhe nuk jeni root, bëni të njëjtën gjë me menaxherin e skedarëve me sudo, etj. dosjen.
      Nëse kjo nuk funksionon, do të duhet të shihni opsione të tjera nga terminali (tastiera).

  17.   Pedro Manuel Aguayo Muñoz dijo

    Përshëndetje, si jeni? Unë jam duke bërë një punë në bash dhe do të doja të dija si të verifikoja nëse ka një direktori të futur nga tastiera, për shembull

    #! / bin / bash
    lexoni rrugën
    #Enter / Desktop
    # Atëherë unë përpiqem të lundroj në atë drejtori
    cd $ shteg
    # Marr mesazhin vijues bash: cd: ~ / Desktop: Skedari ose direktoria nuk ekziston

    Pyetja ime është, çfarë mund të bëj që ta fus nga tastiera dhe ta marr si një rrugë direktorie?

  18.   Miguel dijo

    Dhe si mund ta di nëse ekziston një grup,

  19.   i shëndetshëm dijo

    mire une kam nje problem ne canaima tim kur shtyp butonin cunaguaro thuhet se nuk ka skedar apo direktori sic do te bente per te zgjidhur ate problem dhe pjesa tjeter nuk hap cunaguaro ju faleminderit.

  20.   Carlos dijo

    Si e bëni nëse në BASH nëse emri i skedarit ka hapësira?
    Për shembull:
    Të dhënat e prillit.xlsx

    Për të pyetur nëse skedari ekziston

    1.    Manuel Alcocer Jimenez dijo

      Carlos, si kjo:

      nëse [["$ variabli" == Të dhënat \ muaji \ \ Prill.xlsx]]; pastaj jehonë 'ndeshje'; fi

      Ju gjithashtu mund të:
      if [["$ variable" == 'Të dhëna për muajin prill.xlsx']]; pastaj jehonë 'ndeshje'; fi

      Një tjetër mundësi:
      [["$ Variable" == 'Të dhëna për Prillin.xlsx']] && jehonë 'ndeshjet' || jehona 'nuk përputhet'

      Në disa zona të errëta të internetit ata rekomandojnë përdorimin e [[]] në vend të [], dhe nëse do të krahasoni numrat atëherë: ((ndryshore> = 3)) & & echo 'ndryshorja është më e madhe ose e barabartë me 3' | | echo 'ndryshorja është më pak se 3'

      Prandaj, për numrat:

      nëse ((numri! = 4)); atëherë jehona "$ {number} nuk është 4"; tjetër jehonë "$ {number} është 4"; fi

  21.   Cezar Mateus dijo

    si mund të krijoni një kod për të vërtetuar nëse drejtoria ka një tekst specifik, për të qenë në gjendje ta redaktoni atë.

    shembull:

    nëse (teksti1)

    mos bej gje

    tjetër

    ndryshoni tekstin1 në tekstin2

  22.   Miguel dijo

    një pyetje, si do të ishte të kontrollonit çdo 15 sekonda nëse skedari ekziston apo jo, faleminderit.

  23.   bregu i lumit dijo

    Përshëndetje,
    kjo:
    nëse [-w / home / Komun / Logs / ti]; atëherë
    Gjeni nëse skedari është i shkruar. Por bazohet në lejet e përdoruesve. A mund të bëhet për të zbuluar nëse grupi ose të tjerët kanë leje?