Preverite, ali datoteka ali mapa obstaja ali ne (in še več) z zanko IF

Nisem dal ničesar od Bashin to je, da sem med vstopom v čudoviti svet Pythona malo pozabil na tega drugega prijatelja, ki mi je tako pomagal 🙂

Tukaj nekaj dam Bašovim navdušencem, kot piše v naslovu ... Pokazal vam bom, kako preverite, ali v sistemu obstaja datoteka ali mapa, in sicer z uporabo: if

Ustvarili bomo datoteko .sh in ji dali dovoljenja za izvajanje, za to je dovolj, da v terminal vstavimo naslednji ukaz:

test na dotik.sh && chmod + x test.sh

To je ustvarilo datoteko (test na dotik.sh) in tudi dovoljenja za izvajanje (chmod + x test.sh)

Nato zapišimo vanjo naslednje:

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

Kaj to pomeni?

Preprosto 😀

V prvi vrstici - » če je [-d / opt /];

Tu vprašamo, ali obstaja / opt / imenik? Da, imenik / mapa, ker je -d pomeni imenik ali mapo.
Nato bomo v primeru, da obstaja, tiskali v terminalu «Da, obstaja.»(To sta vrstici 2 in 3)
V nasprotnem primeru in / opt / NE obstaja, bomo natisnili «Ne, ne obstaja»(Vrstici 4 in 5)
Nato v zadnji vrstici (številka 6) zapremo if in to je to.

Povezani članek:
Vzpostavite omrežno povezavo med osebnim računalnikom in virtualnimi stroji Virtualbox

Naredite test, pokazal vam bo, da / opt / obstaja.

Če želite, da vam pokažem drugo besedilo (tisto, ki ne obstaja), spremenite / opt / za katero koli drugo mapo, ki ne obstaja v vašem sistemu, na primer: / asd /

Kot lahko vidite, nam -d pomaga vedeti, ali imenik obstaja, zdaj pa, če spremenimo -d v -f, preverimo obstoj datotek (-d = imenik, -f = datoteka / datoteka)

Na primer:

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

Tu je seznam možnosti:

-d - »Preverite, ali obstaja določen imenik

-f - »Preverite, ali obstaja določena datoteka

-w - »Preverite, ali ima določena datoteka dovoljenja za pisanje

-x - »Preverite, ali ima določena datoteka dovoljenja za izvajanje.

In nobenega več ni za dodati 🙂

Vem, da bo to zelo koristno in zanimivo za tiste, ki radi programirajo v Bashu 😉

pozdrav


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Hugo je dejal

    Drug način, da to storite brez, če ... potem..else:

    test -f /etc/hosts && elcomando

    Ali tudi

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

    Itd.

    1.    KZKG ^ Gaara je dejal

      Desno 😀
      ... O_O ... Si Hugo, Hugo s Kube? ... Uporaba Windows8, WTF !!!

      1.    Hugo je dejal

        No ja, seznanjam se s tem operacijskim sistemom in če moram biti odkrit, je edina stvar, ki se mi je zdela koristna, upravitelj kopij, sicer pa se mi osebno zdi škodljivec, zlasti hibridni vmesnik in podzemne aplikacije. Všeč mi je manj kot Vista in 7 (čeprav nekoliko bolj učinkovita od teh), ki pa mi tudi niso bile všeč. Edino za kar ga uporabljam je igranje NFS13 in Skyrim, vendar ta operacijski sistem zavzema toliko prostora, da sem moral izbrisati svojo particijo Linuxa [snif].

        Za vašo mirnost pa vam povem, da sem predvčerajšnjim prenesel Arch ISO za januar in ga nameravam takoj preizkusiti v svoji različici x86-64, takoj ko dobim repo (ga boste dobili?). Zdaj, ko sem videl, da privzeto uporablja podpisane pakete, mi daje več samozavesti, da se potapljam.

        Oče mi je tudi rekel, da mi bo poslal Sony Xperia, ki jo želim izkoristiti, da se naučim nekaj programiranja za Android, kar je bila čakajoča želja. Tako se pomiri, še nisem šel na temno stran sile, buahahahaha 😉

  2.   patz je dejal

    človeški test

    1.    MSX je dejal

      Seveda

  3.   RAW-osnovno je dejal

    Wenas! ..

    Lahko bi naredili istega .. ..ali se imenik posreduje kot parameter ..

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

    In temu pravimo kot:

    ./test.sh / opt /

    Lep pozdrav ..

  4.   shraniti je dejal

    IF ni cikel xD

  5.   Gregory Swords je dejal

    Ustreza mi kot rokavice za scenarij, ki ga delam. Ali velja uporaba nadomestnih znakov? Na primer, če želite ugotoviti, ali obstajajo .mp4, nato na njih zaženite nekaj.

    če je [-f * .mp4];
    ...

    1.    RAW-osnovno je dejal

      Da, popolnoma velja ..

      Tudi skozi parametre .. "* .mp4"

      1.    RAW-osnovno je dejal

        Npr

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

        Če ga pokličete: ./test.sh * .mp4

        Če najde datoteke .mp4, jih izbriše .. .. vendar datotek v tem imeniku ni na seznamu ..

        1.    Gregory Swords je dejal

          Hvala za povratne informacije in nasvete! 🙂

        2.    Joaquin je dejal

          Pogrešali ste f xD

          rm -rf 1 $

          To je bolj razburljivo!

        3.    b1tblu3 je dejal

          Čudovito !!!, Vsak dan, ko se bolj zaljubim v Linux, je Windows premaknjen v nek temen kotiček mojega trdega diska, ki bo kmalu izbrisan, da bo ukinil luč Linuxa.

          1.    RAW-osnovno je dejal

            Odlično! .. ..naprej naredite naslednji korak .. in ga izvlecite ..

            Pred 6 meseci približno Na vseh svojih računalnikih imam samo GNU / Linux in ne potrebujem več .. ..ne W $ .. ali Wine .. ..in tako sem več kot srečen .. 😉

            In okužujem okolico .. saj me vsi vidijo z mojim Archom, hitro, učinkovito in srečno .. ..prosijo me, naj namestim Linux .. .. ja! .. 😀

        4.    Inukaze je dejal

          Lahko jih tudi preverite za različne končnice, lahko uporabite kaj podobnega

          #! / Bin / bash
          Imenik = $ HOME / Prenosi

          če [$ Imenik]; potem
          echo "Tu je seznam vrst datotek:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          z uporabo {} v tem primeru lahko določite več razširitev z uporabo "?" , je nadomestni znak, ki vam omogoča, da vzamete "Kateri koli znak".

          Upam, da vam pomaga

        5.    Pedro je dejal

          Priporočam ukaz find [directory] [search_pattern] –exec [ukaz] {} \

      2.    Carlos je dejal

        Ne deluje, te datoteke sem dal v imenik:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / Bin / bash
        POT = / tmp / TEST
        cd $ POT
        ls -la | awk '{natisni »« $ 9} »
        če je [[-f AB.TXT]]; potem
        echo »Vnesite IF, če obstaja AB
        .TXT »
        fi
        če [-f AB20160422.TXT]; potem
        echo "vnos za določeno datoteko AB"
        fi

        ko postavim [-f AB.TXT] daje napako
        ko postavim [[-f AB
        .TXT]] ne povzroči napake, vendar datoteke ne najde
        deluje samo, ko dam določeno datoteko, na primer:
        če [-f AB20160422.TXT]; potem

        Ne morem doseči, da bi delal z nadomestnimi znaki * ali?

        1.    Pedro je dejal

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

          NEPREMIČNINE

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1 m»
          NC = »\ 033 [0 m»
          RDEČA = »\ 033 [31m»

          če [! "1 USD"];
          POTEM
          echo "manjka parameter"
          izhod $ EXIT_BAD
          fi

          cd "$ 1"

          files = »ls -h1 $ 1»

          za datoteko v $ ($ files); naredi
          echo -e "tukaj lahko naredite karkoli z $ BOLD $ datoteko $ nc"
          opravljeno

          izhod $ EXIT_OK

  6.   MSX je dejal

    @KZ, povej več o tem: «in to je, da vstopam v čudoviti svet Pythona»!

    1.    KZKG ^ Gaara je dejal

      HAHAHAHA ne ... malo po malo 🙂
      Še vedno sem samo začetnik Pythona, komaj imam časa, da bi mu namenil ure in ure, zato sem počasen, počasen, a v svojem učenju prepričan 😀

  7.   audoban je dejal

    Najlepša hvala 😀 ravno včeraj sem razmišljal, kako to narediti.

  8.   Reichsk je dejal

    to z ncurses je super 🙂

  9.   Jazeco je dejal

    z eno besedo ... ODLIČNO!
    Dolgo časa sem izpopolnjeval skript za prenos iz interneta, vendar sem imel težavo, da bo prenesel datoteke, ki jih je zahteval 1, in še enkrat, ne da bi mogel preveriti obstoj 1ro.
    Zelo dober tuto.

  10.   zulan je dejal

    Izjemen prispevek iz Čila je cenjen.
    Vsak dan me LINUX prijetno preseneti,
    Naj živi brezplačna programska oprema MIERDAAAA.

  11.   david je dejal

    služijo za
    preverite, ali je datoteka iz imenika

  12.   Groveher je dejal

    Če želim preveriti obstoj katere koli datoteke na poti «/ tmp / sprejemniki», zaženite mi kateri koli ukaz, kako bi bilo?

    Zelo vam bom hvaležen

    pozdrav

  13.   John je dejal

    Spoštovani, in z IF določiti, ali je datoteka v celoti poseljena ???. To vprašam, ker ko datoteko polnite za prenos, lahko traja tudi s polovico podatkov.

    Lep pozdrav in hvala za vaš odgovor.

  14.   Inukaze je dejal

    No, mislim, da bi morali dodati tudi primer, na primer "Preverite, ali ni" datoteke "ali" imenika ", kot je na primer

    da preverite, ali NE obstaja, na primer uporabite spremenljivko->

    Imenik

    #! / Bin / bash
    Imenik = »$ HOME / Preizkusni imenik»
    Datoteka = »$ HOME / Preizkusna datoteka»

    če [! -d "$ Directory"]; potem
    echo "Ni $ imenika"
    echo "Ustvarjanje ->" $ Directory "
    mkdir "Imenik $"
    ostalo
    echo "Imenik" $ Directory "že obstaja
    fi

    če [! -d "$ File"]; potem
    echo "Datoteka $ ne obstaja"
    echo "Ustvarjanje ->" $ File "
    dotaknite se »$ File«
    ostalo
    echo "Datoteka" $ File "že obstaja
    fi

    1.    Katekyo je dejal

      ko kasneje preverite mkdir, če bi ga lahko ustvaril terminal, ker lahko zlomi kroglice, če gre za mapo kot root ali sistem hhah

  15.   Julius vinachi je dejal

    Lep pozdrav KZKG ^ Gaara poizvedba, kot bi jo uporabil za uporabo curl. Želel bi vedeti, kako na primer od konzole pingam url, da vidim, če je na voljo http://portal.com/directorio/archivo1.php kje bo datoteka1 shranila IP-je za obisk, je za spremljanje ekipe, ki jo moram narediti vsake pol ure, da bom seznanjen z javnim IP-jem, saj se občasno spreminja in se ne morem povezati ssh .

    Lep pozdrav hvala vnaprej Bog te blagoslovi.

    1.    KZKG ^ Gaara je dejal

      Živijo, kako gre

      Najprej morate povedati, da je spremenljivka IP (na primer) vsebina te datoteke, zato morate:
      1. Prenesite datoteko
      2. Oglejte si njegovo vsebino in od tam pridobite IP
      3. Ta IP je spremenljivka

      Na primer:
      Tukaj prenesemo datoteko - »wget http://portal.com/directorio/archivo1.php -o datoteka.html
      Nato spremenljivki dodelimo njeno vsebino: - »: $ {IP: =` cat file.html`}
      .. ob predpostavki, da ima vsebina te datoteke samo IP, če ne, bi morali delati z grep, awk ali head.

      Ko imate IP kot spremenljivko, je ostalo najpreprostejša stvar na svetu 🙂

      Če želite, mi pišite na e-pošto (kzkggaara[at]desdelinux[dot]net) Z veseljem vam bom pomagal

      1.    Julius vinachi je dejal

        Najlepša hvala kzkggaara zelo hvaležna.

  16.   Natalia je dejal

    Živjo, ne razumem veliko računalništva in ne vem, ali je ta objava povezana s težavo, ki jo imam.

    Komentiram, če me preberete, čeprav je prispevek izpred enega leta:
    Izkazalo se je, da sem na namizju ustvaril mapo za shranjevanje nekaterih videoposnetkov. No, te videoposnetke sem izbrisal, ker jih nisem več potreboval, zdaj pa mi ta mapa sporoča, da ne obstajajo (čeprav je vidna na mojem namizju).

    - To je prva težava, ki jo imam:
    Mape ne morem izbrisati.

    - Druga težava in mislim, da je bolj pomembna:
    V poskusu brisanja mape sem dal mapo FOTOGRAFIJE. Zdaj, ko odprem mapo, ki "ne obstaja", je prazna in FOTOGRAFIJ ni.

    Kako lahko obnovim fotografije? V mapi »Pokaži skrite dokumente« sem dal možnost, mapa FOTOGRAFIJE pa se ne prikaže.

    Upam, da lahko veste, kako je to rešeno.
    Hvala.

    1.    valdo je dejal

      Dva glavna uporabnika sta: root in your_user (natalia na primer). Oba imata osebne mape. your_user v / home in root v / (korenski imenik). Z desnim klikom na mapo si oglejte, komu pripada. Če je skrbnik datotek root z uporabo sudo ali gksu ali kdesu, odvisno od okolja, ki ga uporabljate, pojdite v korenski imenik -> root -> Desktop in verjetno boste našli fotografije in mapo lahko izbrisali. Nekateri distribucijski sistemi, ko niste lastnik datoteke ali imenika in nimate dovoljenj za dostop, vam povejo, da imenik / datoteka ne obstaja. Če ste lastnik in niste root, storite enako z upraviteljem datotek s sudo itd. In pojdite v korenski imenik -> / home -> personal_folder -> Desktop in preverite, ali so fotografije tam in ali lahko mapo izbrišete.
      Če to ne deluje, boste morali videti druge možnosti na terminalu (konzoli).

  17.   Pedro Manuel Aguayo Munoz je dejal

    Pozdravljeni, kako ste? Opravljam delo v bashu in bi rad vedel, kako preveriti, ali je na primer s tipkovnice vpisan imenik, na primer

    #! / Bin / bash
    preberite pot
    #Enter ~ / Desktop
    # Potem poskušam krmariti po tem imeniku
    cd $ pot
    # Dobil sem naslednje bash sporočilo: cd: ~ / Desktop: Datoteka ali imenik ne obstaja

    Moje vprašanje je: Kaj lahko storim, da ga vnesem s tipkovnice in vzamem kot pot do imenika?

  18.   Miguel je dejal

    In kako naj vem, če obstaja skupina,

  19.   heidi je dejal

    dobro Imam težavo v kanamu, ko pritisnem gumb cunaguaro, piše, da ni datoteke ali imenika, kot bi to rešili, ostalo pa ne odpre cunaguara, prosim hvala.

  20.   Carlos je dejal

    Kako naredim if v BASH, če ima ime datoteke presledke?
    Na primer:
    Aprilski podatki.xlsx

    Vprašati, ali datoteka obstaja

    1.    Manuel Alcocer Jimenez je dejal

      Carlos, takole:

      če [["$ spremenljivka" == Podatki \ mesec \ od \ April.xlsx]]; nato odmev 'ujemanje'; fi

      Lahko tudi:
      if [["$ variable" == 'Podatki za mesec april.xlsx']]; nato odmev "ujemanje"; fi

      Druga možnost:
      [["$ Variable" == 'Podatki za april.xlsx']] && echo 'se ujema' || echo 'se ne ujema'

      V nekaterih temnih predelih interneta priporočajo uporabo [[]] namesto [] in če boste primerjali številke, potem: ((spremenljivka> = 3)) && echo 'spremenljivka je večja ali enaka 3' || spremenljivka echo 'je manjša od 3'

      Zato za številke:

      če ((število! = 4)); potem echo "$ {number} ni 4"; sicer odmev "$ {number} je 4"; fi

  21.   Cesar Matheus je dejal

    kako lahko naredite kodo za preverjanje, če ima imenik določeno besedilo, da ga lahko uredite.

    primer:

    če (text1)

    delati nič

    ostalo

    spremenite text1 v text2

  22.   Miguel je dejal

    vprašanje, kako bi bilo preveriti vsakih 15 sekund, če datoteka obstaja ali ne, hvala.

  23.   rečni breg je dejal

    Pozdravljeni,
    to:
    če je [-w / home / Komun / Logs / ti]; potem
    Ugotovite, ali je datoteko mogoče zapisovati. Vendar temelji na uporabniških dovoljenjih. Ali je mogoče ugotoviti, ali ima skupina ali drugi dovoljenja?