Kontrolearje as in bestân as map bestiet of net (en mear) mei IF-loop

Ik haw neat fan set Bash, en it is dat ik, wylst ik de prachtige wrâld fan Python yngean, in bytsje fergetten bin fan dizze oare freon dy't my sa folle holp

Hjir set ik wat foar Bash-entûsjasters, lykas de titel seit ... Ik sil jo sjen litte hoe't jo kontrolearje as d'r in bestân of map yn it systeem is, allinich mei: if

Wy sille in .sh-bestân meitsje en tagongsrjochten foar útfiering jaan, hjirfoar set gewoan it folgjende kommando yn in terminal:

oanreitsje test.sh && chmod + x test.sh

Dit wat hy die is it bestân oanmeitsje (oanreitsje test.sh) en jou jo ek útfieringsmachtigingen (chmod + x test.sh)

Litte wy dan it folgjende dêryn skriuwe:

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

Wat docht dit?

Ienfâldich 😀

Yn 'e earste rigel - » as [-d / opt /];

Hjir freegje wy, bestiet de / opt / map? Ja map / map, om't de -d betsjut map of map.
As it bestiet dan sille wy yn 'e terminal drukke «Ja, it bestiet.»(Dit is rigel 2 en 3)
Oars en / opt / bestiet NET, dan sille wy ôfdrukke «Nee it bestiet net»(Regel 4 en 5)
Dan yn 'e lêste rigel (nûmer 6) slute wy it if en dat is it.

Ferlykber artikel:
Meitsje netwurkferbining tusken de virtuele masines fan PC en Virtualbox

Doch de test, it sil jo sjen litte dat / opt / bestiet.

As jo ​​wolle dat ik jo de oare tekst sjen lit (dejinge dy't net bestiet) feroarje / opt / foar elke oare map dy't net yn jo systeem bestiet, bygelyks: / asd /

Sa't jo sjogge, helpt -d ús om te witten as de map bestiet, no as wy -d feroarje nei -f is it om it bestean fan bestannen te kontrolearjen (-d = map, -f = bestân / bestân)

Bygelyks:

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

Hjir is de list mei opsjes:

-d - »Kontrolearje oft in bepaalde map bestiet

-f - »Kontrolearje oft in bepaald bestân bestiet

-w - »Kontrolearje oft in bepaald bestân skriuwrjochten hat

-x - »Kontrolearje as in bepaald bestân útfieringsmachtigingen hat.

En goed, d'r is net folle mear te foegjen 🙂

Ik wit dat dit tige nuttich en ynteressant sil wêze foar dyjingen dy't graach programmearje yn Bash 😉

groetnis


De ynhâld fan it artikel hâldt him oan ús prinsipes fan redaksje etyk, Om in flater te melden klikje hjir.

42 opmerkingen, lit jo

Lit jo reaksje efter

Jo e-mailadres wurdt net publisearre.

*

*

  1. Ferantwurdlik foar de gegevens: Miguel Ángel Gatón
  2. Doel fan 'e gegevens: Control SPAM, kommentaarbehear.
  3. Legitimaasje: jo tastimming
  4. Kommunikaasje fan 'e gegevens: De gegevens wurde net oan tredden kommunisearre, útsein troch wetlike ferplichting.
  5. Gegevensopslach: Databank hoste troch Occentus Networks (EU)
  6. Rjochten: Op elk momint kinne jo jo ynformaasje beheine, herstelle en wiskje.

  1.   hugo sei

    In oare manier om it te dwaan sûnder as ... dan..else:

    test -f /etc/hosts && elcomando

    Of ek

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

    Etc.

    1.    KZKG ^ Gaara sei

      Rjochts 😀
      ... O_O ... Binne jo Hugo, Hugo út Kuba? ... Windows8, WTF brûke !!!

      1.    hugo sei

        No ja, ik wurd fertroud mei dit bestjoeringssysteem en as ik earlik wêze moat, is it iennichste ding dat ik nuttich fûn haw de kopiemanager, oars fyn ik it persoanlik in pine, foaral de hybride ynterface en de metro-tapassingen. Ik fyn it minder leuk dan de Vista en de 7 (al is it in bytsje effisjinter dan dizze), wat ik ek net leuk fûn. It iennige wêr't ik it foar brûke is NFS13 en Skyrim spielje, mar dit OS nimt safolle romte dat ik myn Linux-partysje [snif] wiskje moast.

        Foar jo frede fan 'e geast sil ik jo lykwols fertelle dat ik earjuster de Arch ISO foar jannewaris downloade en ik planje it in lytse test te jaan yn' e x86-64 ferzje, sa gau't ik de repo krij (sille jo hawwe it?). No dat, lykas ik seach, standert tekene pakketten brûkt, jouwt it my mear fertrouwen om yn te dûken.

        En myn heit fertelde my ek dat hy my in Sony Xperia stjoere soe, wêr't ik gebrûk fan meitsje wol om wat programmearjen foar Android te learen, wat in wachtsjende winsk wie. Dus bedarje, ik bin noch net nei de tsjustere kant fan 'e krêft gien, buahahahaha 😉

  2.   patz sei

    man test

    1.    msx sei

      Wis.

  3.   RAW-Basic sei

    Wenas! ..

    Wy koenen deselde meitsje .. ..maar de map wurdt trochjûn as parameter ..

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

    En wy neame it as:

    ./test.sh / opt /

    Groet..

  4.   savo sei

    IF is gjin syklus xD

  5.   Gregory Swords sei

    It past my as in want foar in skript dat ik doch. Is it jildich wildcards te brûken? Bygelyks om út te finen oft d'r .mp4's binne, draaf dan wat derop.

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

    1.    RAW-Basic sei

      Ja, it is folslein jildich ..

      Sels fia parameters .. "* .mp4"

      1.    RAW-Basic sei

        Bygelyks,

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

        As jo ​​it neame: ./test.sh * .mp4

        As it .mp4-bestannen fynt, wisket se se .. .. mar de bestannen yn dy map wurde net neamd.

        1.    Gregory Swords sei

          Tank foar de feedback en tips! 🙂

        2.    Joaquin sei

          Jo hawwe de f xD mist

          rm -rf $ 1

          Dit is spannender!

        3.    b1tblu3 sei

          Prachtich !!!, Elke dei dat ik mear fereale wurde op Linux, is Windows ferwidere nei in donkere hoeke fan myn hurde skiif, dy't op it punt wurdt wiske om plak te jaan foar it ljocht fan Linux.

          1.    RAW-Basic sei

            Prachtich! .. .. nim dan de folgjende stap .. en helje dy út ..

            6 moannen lyn sawat. Ik haw allinich GNU / Linux op al myn masines en ik hoech net mear .. .. net W $ .. of Wyn .. ..en ik bin soks mear dan bliid .. 😉

            En ik ynfektearje myn omjouwing .. om't elkenien my mei myn Arch sjocht, rap, effisjint en lokkich .. ..en se freegje my om Linux te ynstallearjen .. ..yeah! .. 😀

        4.    Inukaze sei

          Jo kinne se ek kontrolearje op ferskate tafoegings, jo kinne sokssawat brûke

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

          as [$ Directory]; dan
          echo "Hjir is in list mei triemtypen:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          mei help fan {} kinne jo yn dit gefal meardere tafoegings oantsjutte, it gebrûk fan "?" , is in jokerteken, wêrmei jo "Any Character" nimme kinne.

          Ik hoopje dat it jo helpt

        5.    Pedro sei

          Ik advisearje it kommando fine [map] [search_pattern] –exec [kommando] {} \

      2.    carlos sei

        It wurket net, ik set dizze bestannen yn 'e map:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / bin / bash
        PATH = / tmp / TEST
        cd $ ROUTE
        ls -la | awk '{print »« $ 9}'
        as [[-f AB.TXT]]; dan
        echo »Fier it IF yn as d'r AB is
        .TXT »
        fi
        as [-f AB20160422.TXT]; dan
        echo "ynfier foar in spesifyk AB-bestân"
        fi

        doe't ik [-f AB.TXT] jout flater
        doe't ik [[-f AB
        .TXT]] jout gjin flater, mar kin it bestân net fine
        it wurket allinich as ik in spesifyk bestân set, bygelyks:
        as [-f AB20160422.TXT]; dan

        Ik kin it net krije om mei jokertekens * te wurkjen of?

        1.    Pedro sei

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

          KONSTANTEN

          EXIT_OK = 0
          EXIT_BAD = 66

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

          as [! "$ 1"];
          dan
          echo "mist in parameter"
          ôfslute $ EXIT_BAD
          fi

          cd "$ 1"

          bestannen = »ls -h1 $ 1»

          foar bestân yn $ ($ bestannen); dwaan
          echo -e "jo kinne alles dwaan mei $ BOLD $ bestân $ nc hjir"
          klear

          útgean $ EXIT_OK

  6.   msx sei

    @KZ, fertel hjir mear oer: "en dat komt om't ik de prachtige wrâld fan Python yn gean"!

    1.    KZKG ^ Gaara sei

      HAHAHAHA né ... bytsje by bytsje 🙂
      Ik bin noch mar in nijeling foar Python, ik ha amper tiid om oeren en oeren der oan te wijen, dus ik bin stadich ja, stadich mar wis yn myn learen 😀

  7.   audoban sei

    Tige tank 😀 juster juster tocht ik hoe dit te dwaan.

  8.   RykSk sei

    dit mei flokken is geweldich 🙂

  9.   Jazeco sei

    yn 1 wurd ... UTSTEKEND!
    Lange tiid perfeksjoneare ik in skript om downloads fan it ynternet te meitsjen, mar ik hie it probleem dat it de bestannen dy't it 1 frege en opnij downloade sûnder it bestean 1ro te ferifiearjen.
    Hiel goede tuto.

  10.   zulan sei

    Geweldige bydrage, hjir út Sily wurdt wurdearre.
    Alle dagen ferrast my LINUX my noflik,
    Lang libje Frije software MIERDAAAA.

  11.   david sei

    tsjinje foar
    kontrolearje oft in bestân út in map komt

  12.   Grovher sei

    As ik it bestean fan in bestân yn in paad «/ tmp / ûntfangers» kontrolearje wol, dan elke kommando útfiere, hoe soe it dan wêze?

    Ik sil heul tankber wêze

    groetnis

  13.   juan sei

    Bêste, en om te bepalen troch IF as it bestân folslein befolke is ???. Ik freegje dit, om't jo it bestân ynfolje foar in oerdracht, it kin it sels mei de helte fan 'e gegevens nimme.

    Groetnis en tank foar jo reaksje.

  14.   Inukaze sei

    No, ik tink dat jo ek in foarbyld moatte tafoegje, lykas "Kontrolearje dat d'r gjin" in "bestân" of "map" is, lykas bygelyks

    om te kontrolearjen dat it NET bestiet, brûk bygelyks in fariabele->

    In map

    #! / bin / bash
    Directory = »$ HOME / Test Directory»
    Bestân = »$ HOME / Testbestân»

    as [! -d "$ Directory"]; dan
    echo "D'r is gjin $ Directory"
    echo "Oanmeitsje ->" $ Directory "
    mkdir "$ Directory"
    oars
    echo "Directory" $ Directory "bestiet al
    fi

    as [! -d "$ Bestân"]; dan
    echo "Bestân $ bestiet net"
    echo "Oanmeitsje ->" $ Bestân "
    reitsje "$ Triem" oan
    oars
    echo "Bestân" $ Bestân "bestiet al
    fi

    1.    Katekyo sei

      as jo de mkdir dogge, kontrolearje dan letter as de terminal it koe oanmeitsje, om't it de ballen kin brekke as it in map is as root as systeem hhah

  15.   Julius vinachi sei

    Groetnis KZKG ^ Gaara in fraach lykas ik soe dwaan om krul te brûken. Ik wol graach wite hoe't ik fan 'e konsole nei ping in url doch om te sjen as it bygelyks beskikber is http://portal.com/directorio/archivo1.php Wêr't file1 de IP's fan 'e besite sil opslaan, is it foar it kontrolearjen fan in team dat ik dizze pin elke heal oere moat meitsje, sadat ik my bewust bin fan' e publike IP, om't it sa no en dan feroaret en ik kin gjin ferbining meitsje fia ssh ,

    Groetnis tanke jo foarôf God segenje jo.

    1.    KZKG ^ Gaara sei

      Hoi is it giet

      Earst moatte jo sizze dat de IP-fariabele (bygelyks) de ynhâld fan dat bestân is, hjirfoar moatte jo:
      1. Download it bestân
      2. Besjoch de ynhâld en helje it IP derôf
      3. Dat IP is de fariabele

      Bygelyks:
      Hjir downloade wy it bestân - »wget http://portal.com/directorio/archivo1.php -o file.html
      Dan jouwe wy in fariabele de ynhâld ta: - »: $ {IP: =` cat file.html`}
      .. oannomend dat de ynhâld fan dat bestân allinich it IP hat, as net, soene jo moatte wurkje mei grep, awk of kop.

      As jo ​​ienris de IP as fariabele hawwe, is de rest it simpelste ding yn 'e wrâld 🙂

      As jo ​​my wolle skriuwe nei de e-post (kzkggaara [at] desdelinux [dot] net) dat sil ik jo graach helpe

      1.    Julius vinachi sei

        Tige tank kzkggaara tige tankber.

  16.   natalia sei

    Hoi, ik begryp net folle oer kompjûterjen en ik wit net oft dizze post relatearre is oan it probleem dat ik haw.

    Ik reagearje as jo my lêze, hoewol it berjocht fan in jier lyn is:
    It docht bliken dat ik in map op myn buroblêd makke om wat fideo's op te slaan. No, ik haw dy fideo's fuortsmiten, om't ik se net mear nedich wie en no fertelt dizze map my dat it net bestiet (hoewol it sichtber is op myn buroblêd).

    - Dat is it earste probleem dat ik haw:
    Ik kin de map net wiskje.

    - Twadde probleem en ik tink wichtiger:
    Yn in besykjen om de map te wiskjen, sette ik in FOTO'S map. No as ik de map iepenje dy't "net bestiet" is dizze leech en de FOTO's binne der net.

    Hoe kin ik de foto's weromhelje? Ik haw de opsje jûn yn 'e map "Ferburgen dokuminten sjen litte", mar de map FOTO's ferskynt net.

    Ik hoopje dat jo kinne wite hoe't it wurdt oplost.
    Thank you.

    1.    valdo sei

      D'r binne twa brûkers dy't de wichtichste binne: root en jo_user (natalia bygelyks). Se hawwe beide persoanlike mappen. jo_user yn / thús en root yn / (root-map). Troch mei de rechtermuisknop op de map te sjen sjen wa't it heart. As it root is mei jo bestânbehearder mei sudo of gksu of kdesu, ôfhinklik fan 'e omjouwing dy't jo brûke, gean dan nei de root-map -> root -> Desktop en jo sille wierskynlik de foto's fine en jo kinne de map wiskje. Guon distros as jo net de eigner binne fan it bestân of map en jo hawwe gjin tagongsrjochten, fertelle dat map / bestân net bestiet. As jo ​​de eigner binne en jo binne net root, doch itselde mei de bestânbehearder mei sudo, etc en gean nei de root-map -> / home -> personal_folder -> Desktop en sjoch as de foto's der binne en as jo de map kinne wiskje.
      As dit net wurket, moatte jo oare opsjes sjen fan 'e terminal (konsole).

  17.   Pedro Manuel Aguayo Munoz sei

    Hoi, hoe giet it? Ik doch in baan yn bash en ik wol graach wite hoe te ferifiearjen as d'r in map is ynfierd fanút it toetseboerd, bygelyks

    #! / bin / bash
    lêzen rûte
    #Enter ~ / buroblêd
    #Dêrnei besykje ik troch dizze map te navigearjen
    cd $ paad
    # Ik krij it folgjende bash-berjocht: cd: ~ / buroblêd: It bestân of map bestiet net

    Myn fraach is, wat kin ik dwaan dat ik it ynfiere fanôf it toetseboerd en nim it as mappaad?

  18.   miguel sei

    En hoe kin ik wite as in groep bestiet,

  19.   heidi sei

    goed Ik ha in probleem yn myn canaima as ik op 'e knop cunaguaro drukke, seit dat d'r gjin bestân of map is, lykas it soe dwaan om dat probleem op te lossen en de rest iepenet cunaguaro net asjebleaft bedankt

  20.   carlos sei

    Hoe dogge jo it if yn BASH as de bestânsnamme spaasjes hat?
    Bygelyks:
    April data.xlsx

    Om te freegjen oft it bestân bestiet

    1.    Manuel Alcocer Jimenez sei

      Carlos, sa:

      as [["$ fariabele" == Gegevens \ moanne \ fan \ April.xlsx]]; dan echo 'match'; fi

      Jo kinne ek:
      as [["$ fariabele" == 'Gegevens foar de moanne april.xlsx']]; dan echo 'match'; fi

      In oare opsje:
      [["$ Variable" == 'Gegevens foar de moanne april.xlsx']] && echo 'matches' || echo 'komt net oerien'

      Yn guon tsjustere gebieten fan it ynternet advisearje se [[]] te brûken ynstee fan [], en as jo getallen fergelykje sille dan: ((fariabele> = 3)) && echo 'fariabele is grutter as of gelyk oan 3' || echo 'fariabele is minder dan 3'

      Dêrom foar getallen:

      as ((getal! = 4)); dan echo "$ {number} is net 4"; oars echo "$ {number} is 4"; fi

  21.   Cesar Matheus sei

    hoe kinne jo in koade meitsje om te validearjen as de map in spesifike tekst hat, om dizze te bewurkjen.

    foarbyld:

    as (tekst1)

    neat dwaan

    oars

    feroarje tekst1 nei tekst2

  22.   miguel sei

    in fraach, hoe soe it wêze om elke 15 sekonden te kontrolearjen as it bestân bestiet of net, tank.

  23.   rivieroever sei

    hallo,
    dizze:
    as [-w / home / Komun / Logs / ti]; dan
    Fyn út as it bestân skriuwber is. Mar it is basearre op brûkersrjochten. Kin it wurde dien om út te finen oft de groep as de oaren tagongsrjochten hawwe?