Patikrinkite, ar failas ar aplankas egzistuoja, ar ne (ir dar daugiau) su IF kilpa

Aš nieko nedėjau Bash, ir tai, kad įžengęs į nuostabų „Python“ pasaulį, šiek tiek pamiršau apie šį kitą draugą, kuris man taip padėjo

Čia aš įdėjau kažką „Bash“ entuziastams, kaip sako pavadinimas ... Aš jums parodysiu, kaip patikrinti, ar sistemoje yra failas ar aplankas, tiesiog naudodamas: if

Mes sukursime .sh failą ir suteiksime jam vykdymo teises, tam pakanka įvesti šią komandą į terminalą:

palieskite test.sh && chmod + x test.sh

Tai jis sukūrė failą (prisilietimo testas.sh), taip pat suteiksite vykdymo teises (chmod + x testas.sh)

Tada parašykime:

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

Ką tai daro?

Paprasta 😀

Pirmoje eilutėje - » jei [-d / opt /];

Čia mes klausiame, ar egzistuoja / opt / katalogas? Taip katalogas / aplankas, nes -d reiškia katalogą ar aplanką.
Tada, jei jis egzistuoja, atspausdinsime terminale «Taip, jis egzistuoja.»(Tai 2 ir 3 eilutės)
Kitu atveju ir / opt / Nėra, tada atspausdinsime «Ne, jo nėra»(4 ir 5 eilutės)
Tada paskutinėje eilutėje (6 numeris) uždarome jei ir viskas.

Susijęs straipsnis:
Užmegzkite tinklo ryšį tarp kompiuterio ir „Virtualbox“ virtualių mašinų

Atlikite testą, jis parodys, kad / opt / egzistuoja.

Jei norite, kad parodyčiau kitą tekstą (neegzistuojantį), pakeiskite / opt / bet kuriam kitam aplankui, kurio jūsų sistemoje nėra, pavyzdžiui: / asd /

Kaip matote, -d padeda mums sužinoti, ar katalogas yra, dabar, jei pakeisime -d į -f, patikrinkite, ar yra failų (-d = katalogas, -f = failas / failas)

Pavyzdžiui:

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

Čia pateikiamas parinkčių sąrašas:

-d - »Patikrinkite, ar yra tam tikras katalogas

-f - »Patikrinkite, ar yra tam tikras failas

-w - »Patikrinkite, ar tam tikras failas turi rašymo teises

-x - »Patikrinkite, ar tam tikras failas turi vykdymo teises.

Na ir nėra ką daugiau pridėti 🙂

Žinau, kad tai bus labai naudinga ir įdomu tiems, kurie mėgsta programuoti „Bash“ 😉

saludos


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Hugo sakė

    Kitas būdas tai padaryti be… jei… tada:

    test -f /etc/hosts && elcomando

    Arba taip pat

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

    Ir kt.

    1.    KZKG ^ Gaara sakė

      Teisingai 😀
      … O_O ... Ar tu Hugo, Hugo iš Kubos? ... Naudojant Windows8, WTF !!!

      1.    Hugo sakė

        Na taip, aš susipažinau su šia OS ir, jei turiu būti atviras, vienintelis dalykas, kurį radau naudingas, yra kopijų tvarkytuvė, kitaip man asmeniškai tai skauda, ​​ypač hibridinė sąsaja ir metro programos. Man jis patinka mažiau nei „Vista“ ir „7“ (nors ir šiek tiek efektyvesni už šiuos), kurie man irgi nepatiko. Viskas, ką aš naudoju, yra žaisti NFS13 ir „Skyrim“, tačiau ši OS užima tiek vietos, kad turėjau ištrinti savo „Linux“ skaidinį [snif].

        Tačiau jūsų ramybės dėlei pasakysiu, kad užvakar parsisiunčiau „Arch ISO“ sausio mėnesiui ir planuoju atlikti nedidelį bandymą x86-64 versijoje, kai tik gausiu repo (ar turėsite?). Dabar, kai pamačiau, kad jis pagal nutylėjimą naudoja pasirašytus paketus, tai suteikia daugiau pasitikėjimo pasinerti.

        Tėvas taip pat man pasakė, kad jis atsiųs man „Sony Xperia“, kuria noriu pasinaudoti, kad išmokčiau programuoti „Android“, o tai buvo laukiantis noras. Taigi nusiramink, aš dar neišėjau į tamsiąją jėgos pusę, buahahahaha 😉

  2.   patz sakė

    žmogaus testas

    1.    MSX sakė

      Tikrai.

  3.   „RAW-Basic“ sakė

    Wenas! ..

    Galėtume padaryti tą patį .. .. bet katalogas perduodamas kaip parametras ..

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

    Mes tai vadiname:

    ./test.sh / opt /

    Sveikinimai ..

  4.   sutaupyti sakė

    IF nėra ciklas xD

  5.   Grigalius Kardai sakė

    Tai man tinka kaip pirštinė scenarijui, kurį darau. Ar teisinga naudoti pakaitos simbolius? Pavyzdžiui, norėdami sužinoti, ar yra .mp4, paleiskite juos.

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

    1.    „RAW-Basic“ sakė

      Taip, tai visiškai galioja ..

      Net per parametrus .. "* .mp4"

      1.    „RAW-Basic“ sakė

        Pavyzdžiui,

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

        Jei tai vadinsite: ./test.sh * .mp4

        Jei randa .mp4 failus, juos ištrina .. ..bet to katalogo failai neišvardyti ..

        1.    Grigalius Kardai sakė

          Dėkojame už atsiliepimus ir patarimus! 🙂

        2.    Joaquinas sakė

          Jūs praleidote f xD

          rm -rf 1 USD

          Tai įdomiau!

        3.    b1tblu3 sakė

          Nuostabu !!!, Kiekvieną dieną aš labiau įsimyliu „Linux“, „Windows“ buvo perkeltas į tamsią mano standžiojo disko kampą, kuris netrukus bus ištrintas, kad užleistų vietą „Linux“ šviesai.

          1.    „RAW-Basic“ sakė

            Puiku! .. ..tada žengi kitą žingsnį .. ir išeik ..

            Maždaug prieš 6 mėnesius Aš visose savo mašinose turiu tik GNU / Linux ir man daugiau jų nereikia .. .. ne W $ .. ar „Wine“ .. ir aš tokia daugiau nei laiminga .. 😉

            Aš užkrėčiau savo aplinką .. kadangi visi mane mato su savo „Arch“, greita, efektyvi ir laiminga .. .. ir jie paprašo manęs įdiegti „Linux“ .. .. taip! .. 😀

        4.    „Inukaze“ sakė

          Taip pat galite patikrinti, ar juose nėra įvairių plėtinių, galite naudoti kažką panašaus

          #! / bin / bash
          Katalogas = $ HOME / Atsisiuntimai

          jei [$ katalogas]; tada
          echo "Čia yra tipų failų sąrašas:"
          aidas "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          Naudojant {}, šiuo atveju galite nurodyti kelis plėtinius, naudodami „?“ , yra pakaitos simbolis, leidžiantis pasirinkti „Bet kokį simbolį“.

          Tikiuosi, kad tai jums padės

        5.    Pedro sakė

          Aš rekomenduoju komandą rasti [katalogas] [paieškos_pattern] –exec [komanda] {} \

      2.    Carlos sakė

        Tai neveikia, aš įdėjau šiuos failus į katalogą:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        paieška.sh

        #! / bin / bash
        PATH = / tmp / TESTAS
        cd $ MARŠRUTAS
        ls -la | awk '{print »« $ 9}'
        jei [[-f AB.TXT]]; tada
        echo »Įveskite IF, jei yra AB
        .TXT »
        fi
        jei [-f AB20160422.TXT]; tada
        echo "įvestis konkrečiam AB failui"
        fi

        kai įdėjau [-f AB.TXT] pateikia klaidą
        kai įdėjau [[-f AB
        .TXT]] nepateikia klaidos, bet negali rasti failo
        jis veikia tik tada, kai dedu konkretų failą, pavyzdžiui:
        jei [-f AB20160422.TXT]; tada

        Negaliu pasiekti, kad jis veiktų su pakaitomis * ar?

        1.    Pedro sakė

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

          NUOLATINIAI

          EXIT_OK = 0
          EXIT_BAD = 66

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

          jei [! „1 USD“];
          tada
          echo "trūksta parametro"
          išeiti iš $ EXIT_BAD
          fi

          kompaktinis diskas „$ 1“

          failai = »ls -h1 $ 1»

          failui $ ($ files); padaryti
          echo -e "čia galite bet ką padaryti naudodami $ BOLD $ failą $ nc"
          Done

          išeiti iš $ EXIT_OK

  6.   MSX sakė

    @KZ, papasakok daugiau apie tai: „Taip yra todėl, kad įžengiu į nuostabų Python pasaulį“!

    1.    KZKG ^ Gaara sakė

      HAHAHAHA nah ... po truputį 🙂
      Aš vis dar esu „Python“ naujokas, vargu ar turiu laiko skirti tam valandų, todėl esu lėtas taip, lėtas, bet tikras mokydamasis 😀

  7.   „Audoban“ sakė

    Labai ačiū 😀 tik vakar galvojau kaip tai padaryti.

  8.   reichskas sakė

    tai su ncurses yra puiku 🙂

  9.   Jazeco sakė

    vienu žodžiu ... Puiku!
    Ilgą laiką tobulinau scenarijų, kad galėčiau atsisiųsti iš interneto, tačiau susidūriau su problema, kad jis atsisiuntė prašomus failus 1 ir dar kartą, negalėdamas patikrinti 1ro egzistavimo.
    Labai geras tuto.

  10.   zulanas sakė

    Čia vertinamas didžiulis indėlis iš Čilės.
    Kiekvieną dieną daugiau LINUX mane maloniai nustebina,
    Tegyvuoja nemokama programinė įranga MIERDAAAA.

  11.   David sakė

    tarnauti
    patikrinkite, ar failas yra iš katalogo

  12.   Grovheris sakė

    Jei noriu patikrinti, ar faile yra kelias „/ tmp / imtuvuose“, atlikite bet kurią komandą, kaip tai būtų?

    Būsiu labai dėkinga

    saludos

  13.   Jonas sakė

    Gerbiamas, ir pagal IF nustatyti, ar failas yra visiškai užpildytas Aš to klausiu, nes kai pildote perdavimo failą, jis gali jį paimti net su puse duomenų.

    Sveikinimai ir ačiū už atsakymą.

  14.   „Inukaze“ sakė

    Na, aš manau, kad jūs taip pat turėtumėte pridėti pavyzdį, pvz., "Patikrinkite, ar nėra" a "failo" ar "katalogo", pavyzdžiui,

    norėdami patikrinti, ar jo nėra, pavyzdžiui, naudokite kintamąjį->

    Katalogas

    #! / bin / bash
    Katalogas = »$ HOME / Bandymų katalogas»
    Failas = »$ HOME / bandymo failas»

    jei [! -d "$ Directory"]; tada
    aidas "Nėra $ katalogo"
    echo "Kurimas ->" $ katalogas "
    mkdir "$ Directory"
    kitas
    echo „Katalogas„ $ Directory “jau yra
    fi

    jei [! -d "$ byla"]; tada
    echo "Failas $ neegzistuoja"
    echo "Kurimas ->" $ failas "
    palieskite „$ File“
    kitas
    echo „Failas„ $ File “jau yra
    fi

    1.    Katekyo sakė

      kai atliksite mkdir vėliau, patikrinkite, ar terminalas galėtų jį sukurti, nes jis gali sulaužyti kamuolius, jei tai yra aplankas kaip šaknis arba sistema hhah

  15.   Julius vinachi sakė

    Sveikinimai KZKG ^ Gaara užklausa, kaip aš norėčiau naudoti garbanoti. Norėčiau sužinoti, kaip iš konsolės atlieku URL, kad sužinotumėte, ar jis yra, pavyzdžiui http://portal.com/directorio/archivo1.php Kur failas1 saugo apsilankymo IP, tai stebint komandą, aš turiu padaryti tą smeigtuką kas pusvalandį, kad žinočiau apie viešąjį IP, nes jis kartkartėmis keičiasi ir negaliu prisijungti naudodamas ssh .

    Sveikinimai iš anksto dėkoja Dievas jus palaimina.

    1.    KZKG ^ Gaara sakė

      Sveiki, kaip tai vyksta

      Pirma, jūs turite pasakyti, kad IP kintamasis (pavyzdžiui) yra to failo turinys, tam turite:
      1. Atsisiųskite failą
      2. Peržiūrėkite jo turinį ir gaukite IP iš ten
      3. Tas IP yra kintamasis

      Pavyzdžiui:
      Čia atsisiunčiame failą - »wget http://portal.com/directorio/archivo1.php -o failas.html
      Tada priskiriame kintamąjį jo turiniui: - »: $ {IP: =` cat file.html`}
      .. darant prielaidą, kad to failo turinys turi tik IP, jei ne, turėsite dirbti su grep, awk ar head.

      Kai jau turite kintamąjį IP, visa kita yra paprasčiausias dalykas pasaulyje 🙂

      Jei norite, rašykite man el. paštu (kzkggaara[at]desdelinux[dot]net) Mielai jums padėsiu

      1.    Julius vinachi sakė

        Labai aciu kzkggaara labai dekinga.

  16.   Natalija sakė

    Sveiki, aš nelabai suprantu apie skaičiavimus ir nežinau, ar šis įrašas yra susijęs su mano turima problema.

    Aš pakomentuoju, jei perskaitytumėte mane, nors įrašas yra prieš metus:
    Pasirodo, kad savo darbalaukyje sukūriau aplanką, kuriame būtų saugomi keli vaizdo įrašai. Na, aš ištryniau tuos vaizdo įrašus, nes man jų nebereikėjo, o dabar šis aplankas man sako, kad jo nėra (nors jis matomas mano darbalaukyje).

    - Tai yra pirmoji problema, kurią turiu:
    Negaliu ištrinti aplanko.

    - Antra problema ir manau, kad svarbesnė:
    Bandydamas ištrinti aplanką, įdėjau aplanką NUOTRAUKOS. Dabar, kai atidarau aplanką, kurio „nėra“, jis tuščias, o NUOTRAUKOS nėra.

    Kaip atkurti nuotraukas? Aš suteikiau parinktį aplanke „Rodyti paslėptus dokumentus“, bet aplankas NUOTRAUKOS nerodomas.

    Tikiuosi, kad galite žinoti, kaip tai išspręsta.
    Ačiū.

    1.    valdo sakė

      Yra du vartotojai, kurie yra pagrindiniai: root ir jūsų_user (pvz., Natalia). Jie abu turi asmeninius aplankus. jūsų_vartotojas / home ir šaknis aplanke / (šakninis katalogas). Dešiniuoju pelės mygtuku spustelėkite aplanką, kad pamatytumėte, kam jis priklauso. Jei tai yra root failų tvarkyklėje, naudojant sudo, gksu ar kdesu, atsižvelgiant į naudojamą aplinką, eikite į šakninį katalogą -> root -> Desktop ir tikriausiai rasite nuotraukas ir galėsite ištrinti aplanką. Kai kurie adresai, kai nesate failo ar katalogo savininkas ir neturite prieigos teisių, pasako, kad katalogo / failo nėra. Jei esate savininkas ir nesate root, atlikite tą patį su failų tvarkykle naudodamiesi sudo ir pan.
      Jei tai neveikia, turėsite pamatyti kitas terminalo (konsolės) parinktis.

  17.   Pedro Manuelis Aguayo Muñozas sakė

    Sveiki, kaip tu? Aš dirbu darbą bash ir norėčiau žinoti, kaip patikrinti, ar, pavyzdžiui, klaviatūroje įvestas katalogas

    #! / bin / bash
    skaityti maršrutą
    #Enter ~ / darbalaukis
    # Tada bandau naršyti tame kataloge
    cd $ kelias
    # Gaunu tokį „bash“ pranešimą: cd: ~ / Desktop: Failo ar katalogo nėra

    Mano klausimas, ką aš galiu padaryti, kad įvesčiau jį iš klaviatūros ir laikyčiau jį katalogo keliu?

  18.   miguel sakė

    Ir kaip aš galiu žinoti, ar yra grupė,

  19.   sveikas sakė

    gerai, turiu problemą savo kanamoje, kai paspaudžiu mygtuką cunaguaro, jis sako, kad nėra failo ar katalogo, nes tai padėtų išspręsti šią problemą, o likusi dalis neatidaro cunaguaro, prašau ačiū.

  20.   Carlos sakė

    Kaip padaryti, jei BASH, jei failo pavadinime yra tarpų?
    Pavyzdžiui:
    Balandžio mėnesio duomenys.xlsx

    Paklausti, ar failas egzistuoja

    1.    Manuelis Alcoceris Jimenezas sakė

      Carlos, taip:

      if [["$ kintamasis = = Data \ mėn. \ balandžio \ xxx]]; tada aidi 'rungtynes'; fi

      Taip pat galite:
      if [["$ variable" == 'Balandžio mėnesio duomenys.xlsx']]; tada aidi 'rungtynes'; fi

      Kitas variantas:
      [["$ Variable" == 'Duomenys apie April.xlsx']] && echo 'atitiktys' || aidas 'neatitinka'

      Kai kuriose tamsiose interneto vietose jie rekomenduoja naudoti [[]], o ne [], o jei ketinate palyginti skaičius: ((kintamasis> = 3)) && echo 'kintamasis yra didesnis arba lygus 3' || echo 'kintamasis yra mažesnis nei 3'

      Todėl skaičiams:

      jei ((skaičius! = 4)); tada aidas "$ {number} nėra 4"; else echo „$ {number} yra 4“; fi

  21.   Cezaris Mateusas sakė

    Kaip galite sukurti kodą patvirtinti, jei kataloge yra konkretus tekstas, kad galėtumėte jį redaguoti.

    pavyzdys:

    jei (tekstas1)

    nieko nedaryti

    kitas

    pakeisti text1 į text2

  22.   miguel sakė

    klausimas, kaip būtų tikrinti kas 15 sekundžių, ar failas egzistuoja, ar ne, ačiū.

  23.   upės krantas sakė

    Sveiki,
    tai:
    if [-w / namai / Komun / Žurnalai / ti]; tada
    Sužinokite, ar failą galima rašyti. Bet tai pagrįsta vartotojo leidimais. Ar tai galima padaryti norint sužinoti, ar grupė ar kiti turi leidimus?