Ellenőrizze, hogy létezik-e fájl vagy mappa (vagy még több) IF hurokkal

Nem tettem fel semmit Bash, és amikor belépek a Python csodálatos világába, egy kicsit megfeledkeztem erről a másik barátomról, aki annyira segített nekem 🙂

Itt tettem valamit a Bash rajongóinak, amint a cím mondja ... Megmutatom, hogyan lehet ellenőrizni, hogy létezik-e fájl vagy mappa a rendszerben, csupán: if

Létrehozunk egy .sh fájlt, és végrehajtási engedélyeket adunk neki, ehhez elegendő a következő parancsot egy terminálba tenni:

touch test.sh && chmod + x test.sh

Ez létrehozta a fájlt (érintésteszt.sh), és végrehajtási engedélyeket is ad (chmod + x teszt.sh)

Akkor írjuk bele a következőket:

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

Mit csinál ez?

Egyszerű 😀

Az első sorban - » ha [-d ​​/ opt /];

Itt azt kérdezzük, hogy létezik-e az / opt / könyvtár? Igen könyvtár / mappa, mert a -d könyvtárat vagy mappát jelent.
Majd ha létezik, akkor kinyomtatjuk a terminálba «Igen, létezik.»(Ez a 2. és 3. sor)
Ellenkező esetben és / opt / NEM létezik, akkor kinyomtatjuk a «Nem, nem létezik»(4. és 5. sor)
Ezután az utolsó sorban (6. szám) bezárjuk az if-t és ennyi.

Kapcsolódó cikk:
Hozza létre a hálózati kapcsolatot a PC és a Virtualbox virtuális gépek között

Hajtsa végre a tesztet, és megmutatja, hogy létezik / opt /.

Ha azt akarod, hogy mutassam meg neked a másik szöveget (azt, amely nem létezik), akkor változtasd meg / opt / bármely más mappához, amely nem létezik a rendszeredben, például:

Amint láthatja, a -d segít megtudni, hogy létezik-e a könyvtár, és ha a -d értéket -f-re változtatjuk, az a fájlok létezésének ellenőrzése (-d = könyvtár, -f = fájl / fájl)

Például:

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

Itt található a lehetőségek listája:

-d - »Ellenőrizze, hogy létezik-e bizonyos könyvtár

-f - »Ellenőrizze, hogy létezik-e egy bizonyos fájl

-w - »Ellenőrizze, hogy egy bizonyos fájl rendelkezik-e írási engedéllyel

-x - »Ellenőrizze, hogy egy bizonyos fájl rendelkezik-e végrehajtási engedélyekkel.

És hát nincs sokkal több hozzáfűzhető 🙂

Tudom, hogy ez nagyon hasznos és érdekes lesz azok számára, akik szeretnek programozni Bash-ban

Üdvözlet


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Hugo dijo

    Egy másik módszer anélkül, hogy… akkor ...

    test -f /etc/hosts && elcomando

    Vagy szintén

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

    Stb.

    1.    KZKG ^ Gaara dijo

      Jobb 😀
      … O_O… Hugo vagy, Kubából származó Hugo? ... Windows8, WTF használatával !!!

      1.    Hugo dijo

        Nos, igen, ismerkedem ezzel az operációs rendszerrel, és ha őszintének kell lennem, az egyetlen dolog, amit hasznosnak találtam, az a copy manager, különben személy szerint kártevőnek találom, főleg annak hibrid felülete és a metró alkalmazásai. Kevésbé tetszik, mint a Vista és a 7 (bár ezeknél valamivel hatékonyabb), ami nekem sem tetszett. Az egyetlen dolog, amire használom, az NFS13 és a Skyrim lejátszása, de ez az operációs rendszer annyi helyet foglal el, hogy törölnem kellett a Linux partíciómat [snif].

        A nyugalom kedvéért azonban elmondom, hogy tegnapelőtt letöltöttem az Arch ISO januárt, és azt tervezem, hogy teszek egy kis tesztet x86-64-es verziójában, amint megkapom a repót ( megvan?). Most, hogy láttam, alapértelmezés szerint aláírt csomagokat használ, nagyobb önbizalmat ad a merüléshez.

        És apám azt is elmondta, hogy küld nekem egy Sony Xperiát, amelyet ki akarok használni, hogy megtanuljak valamilyen programozást az Android számára, ami várakozás volt. Szóval nyugodj meg, még nem mentem az erő sötét oldalára, buahahahaha 😉

  2.   patz dijo

    ember teszt

    1.    MSX dijo

      Persze.

  3.   RAW-Basic dijo

    Wenas! ..

    Készíthetnénk ugyanazt .. ..de a könyvtárat paraméterként adjuk át ..

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

    És így hívjuk:

    ./test.sh / opt /

    Üdvözlet..

  4.   megváltás dijo

    IF nem ciklus xD

  5.   Gregory Swords dijo

    Úgy illik hozzám, mint egy kesztyű egy forgatókönyvhöz, amit csinálok. Érvényes helyettesítő karakterek használata? Például, hogy megtudja, vannak-e .mp4 fájlok, futtasson rajtuk valamit.

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

    1.    RAW-Basic dijo

      Igen, teljesen érvényes ..

      Még a paraméterek révén is. "* .Mp4"

      1.    RAW-Basic dijo

        Pl.

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

        Ha hívod: ./test.sh * .mp4

        Ha talál .mp4 fájlokat, akkor törli őket ... ... de nem sorolja fel a fájlokat abban a könyvtárban ...

        1.    Gregory Swords dijo

          Köszönjük a visszajelzéseket és tippeket! 🙂

        2.    Joaquin dijo

          Hiányzott az f xD

          rm -rf $ 1

          Ez izgalmasabb!

        3.    b1tblu3 dijo

          Csodálatos !!!, minden nap jobban beleszeretek a Linuxba, a Windows a merevlemezem egyik sötét sarkába került, amelyet hamarosan kitörölnek, hogy utat engedjen a Linux fényének.

          1.    RAW-Basic dijo

            Kiváló! .. ..majd tedd meg a következő lépést .. és vedd ki ..

            6 hónappal ezelőtt kb. Az összes gépemen csak GNU / Linux van, és nincs szükségem többre .. ..nem W $ .. vagy Bor .. ..és több mint boldog vagyok így .. 😉

            És megfertőzöm a környezetemet .. mivel mindannyian az Archommal látnak, gyors, hatékony és boldog .. ..és Linuxot telepítenek .. .. igen! .. ..

        4.    Inukaze dijo

          Azt is ellenőrizheti, hogy vannak-e különféle kiterjesztések, használhat ilyesmit

          #! / bin / bash
          Directory = $ HOME / Letöltések

          ha [$ Directory]; akkor
          echo "Itt található a fájltípusok listája:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          a {} használatával több kiterjesztést adhat meg ebben az esetben, a "?" , egy helyettesítő karakter, amely lehetővé teszi, hogy "Bármely karaktert" vegyen fel.

          Remélem, segít

        5.    pedro dijo

          Javaslom a find [könyvtár] [keresési_minta] –exec [parancs] {} \ parancsot

      2.    Carlos dijo

        Nem működik, ezeket a fájlokat a könyvtárba tettem:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        keresés.sh

        #! / bin / bash
        PATH = / tmp / TESZT
        cd $ ROUTE
        ls -la | awk '{print »« $ 9}'
        ha [[-f AB.TXT]]; akkor
        echo »Adja meg az IF-t, ha van AB
        .TXT »
        fi
        ha [-f AB20160422.TXT]; akkor
        echo "bemenet egy adott AB fájlhoz"
        fi

        amikor feltettem az [-f AB.TXT] hibát ad
        amikor feltettem az [[-f AB
        .TXT]] nem ad hibát, de nem találja meg a fájlt
        csak akkor működik, ha egy adott fájlt teszek fel, például:
        ha [-f AB20160422.TXT]; akkor

        Nem tudom működtetni helyettesítő karakterekkel * vagy?

        1.    pedro dijo

          #! / usr / bin / env bash
          #.kódolás = utf-8.

          FOLYTATÓK

          EXIT_OK = 0
          EXIT_BAD = 66

          Merész = »\ 033 [1m»
          NC = »\ 033 [0m»
          PIROS = »\ 033 [31m»

          ha [! "$ 1"];
          akkor
          echo "hiányzik egy paraméter"
          lépjen ki a (z) $ EXIT_BAD menüből
          fi

          CD "$ 1"

          fájlok = »ls -h1 $ 1»

          fájlhoz a $ -ban ($ fájl); csináld
          echo -e "itt bármit megtehetsz a $ BOLD $ fájl $ nc használatával"
          csinált

          kilépés $ EXIT_OK

  6.   MSX dijo

    @KZ, mesélj erről többet: «és ez azért van, mert belépek a Python csodálatos világába»!

    1.    KZKG ^ Gaara dijo

      HAHAHAHA nah ... apránként 🙂
      Még mindig csak újonc vagyok a Pythonban, alig van időm órákat és órákat szánni rá, ezért lassú vagyok, igen, lassú, de biztos vagyok a tanulásban 😀

  7.   audoban dijo

    Nagyon köszönöm 😀 tegnap azon gondolkodtam, hogyan lehet ezt megtenni.

  8.   reichsk dijo

    ez ncurses-szel nagyszerű 🙂

  9.   Jazeco dijo

    1 szóval ... KIVÁLÓ!
    Hosszú ideig tökéletesítettem egy szkriptet az internetről történő letöltésekhez, de az volt a problémám, hogy az 1-es és újabb fájlokat kért le anélkül, hogy ellenőrizni tudta volna az 1ro létét.
    Nagyon jó tuto.

  10.   zulan dijo

    Óriási hozzájárulás, itt Chiléből értékelik.
    A LINUX minden nap kellemesen meglep,
    Éljen a MIERDAAAA szabad szoftver.

  11.   david dijo

    szolgálni
    ellenőrizze, hogy egy fájl könyvtárból származik-e

  12.   groveher dijo

    Ha ellenőrizni akarom, hogy létezik-e fájl a «/ tmp / Receivers» elérési útvonalon, hajtson végre bármilyen parancsot, hogy lenne az?

    Nagyon hálás leszek

    Üdvözlet

  13.   János dijo

    Kedves, és IF-vel meghatározni, hogy a fájl teljesen kitöltött-e ???. Ezt azért kérdezem, mert amikor kitölti a fájlt egy továbbításhoz, az akár az adatok felével is elviheti.

    Üdvözlet és köszönet a válaszért.

  14.   Inukaze dijo

    Nos, szerintem adjon hozzá egy példát is, például "Ellenőrizze, hogy nincs-e" fájl "vagy" könyvtár ", például

    hogy ellenőrizze, hogy NEM létezik-e, használjon például egy változót ->

    Könyvtár

    #! / bin / bash
    Directory = »$ HOME / Tesztkönyvtár»
    File = »$ HOME / Tesztfájl»

    ha [! -d "$ Directory"]; akkor
    echo "Nincs $ Directory"
    echo "Létrehozás ->" $ Directory "
    mkdir "$ Directory"
    más
    echo "A" Directory "könyvtár már létezik
    fi

    ha [! -d "$ File"]; akkor
    echo "$ fájl nem létezik"
    echo "Létrehozás ->" $ File "
    érintse meg a "$ File" elemet
    más
    echo A "$ File" fájl már létezik
    fi

    1.    Katekyo dijo

      amikor később elvégzi az mkdir-t, ellenőrizze, hogy a terminál képes-e létrehozni, mert megtörheti a golyókat, ha ez egy mappa root vagy system hhah

  15.   Julius vinachi dijo

    Üdvözlet KZKG ^ Gaara egy lekérdezés, ahogy én tenném a curl használatához. Szeretném tudni, hogyan csinálom a konzolból, hogy pingeljek egy URL-t, hogy megnézzem, elérhető-e például http://portal.com/directorio/archivo1.php Ahol a file1 tárolja a látogatás IP-címeit, egy csapat megfigyeléséhez kell fél óránként elkészítenem azt a PIN-kódot, hogy tisztában legyek a nyilvános IP-vel, mivel időnként változik, és nem tudok ssh-vel csatlakozni.

    Üdvözlet előre is köszönöm Isten áldja meg.

    1.    KZKG ^ Gaara dijo

      Szia, hogy vagy,

      Először azt kell mondania, hogy az IP változó (például) a fájl tartalma, ehhez meg kell:
      1. Töltse le a fájlt
      2. Nézze meg a tartalmát, és szerezze be onnan az IP-t
      3. Ez az IP a változó

      Például:
      Itt letöltjük a fájlt - »wget http://portal.com/directorio/archivo1.php -o fájl.html
      Ezután hozzárendeljük annak tartalmát egy változóhoz: - »: $ {IP: =` macskafájl.html`}
      .. feltételezve, hogy a fájl tartalmának csak az IP-je van, ha nincs, akkor a grep-vel, az awk-val vagy a fejjel kell dolgoznia.

      Ha változója van az IP-nek, a többi a világ legegyszerűbb dolga 🙂

      Ha szeretnél, írj nekem emailben (kzkggaara[kukac]desdelinux[pont]net) Szívesen segítek

      1.    Julius vinachi dijo

        Nagyon köszönöm kzkggaara nagyon hálás.

  16.   Natalia dijo

    Szia, nem sokat értek a számítástechnikához, és nem tudom, hogy ez a bejegyzés kapcsolódik-e a problémámhoz.

    Kommentálok arra az esetre, ha elolvasnál, pedig a bejegyzés egy évvel ezelőtti:
    Kiderült, hogy az asztalomon létrehoztam egy mappát néhány videó tárolására. Nos, töröltem azokat a videókat, mert már nincs szükségem rájuk, és most ez a mappa azt mondja nekem, hogy nem létezik (annak ellenére is, hogy az asztalomon látható).

    - Ez az első problémám:
    Nem tudom törölni a mappát.

    - Második probléma, és fontosabbnak tartom:
    A mappa törlésére egy PHOTOS mappát tettem. Most, amikor megnyitom a "nem létező" mappát, az üres és a FOTÓK nincsenek ott.

    Hogyan tudom helyreállítani a fényképeket? Megadtam a lehetőséget a "Rejtett dokumentumok megjelenítése" mappában, de a PHOTOS mappa nem jelenik meg.

    Remélem, tudhatja, hogyan oldják meg.
    Köszönöm.

    1.    valdo dijo

      Két felhasználó van, akik a legfontosabbak: a root és a felhasználó_felhasználó (például natalia). Mindkettőjüknek vannak személyes mappái. a_felhasználó a / home-ban és a root a / -ben (gyökérkönyvtár). A jobb egérgombbal kattintson a mappára, és nézze meg, hogy ki tartozik. Ha ez a fájlkezelő root, a sudo, a gksu vagy a kdesu használatával, a használt környezettől függően menjen a gyökérkönyvtárba -> root -> Asztal, és valószínűleg megtalálja a fényképeket, és törölheti a mappát. Egyes terjesztések, ha Ön nem a fájl vagy könyvtár tulajdonosa, és nincs hozzáférési jogosultsága, azt mondja, hogy a könyvtár / fájl nem létezik. Ha te vagy a tulajdonos, és nem vagy root, akkor ugyanezt tedd a fájlkezelővel a sudo stb. Segítségével, és lépj a gyökérkönyvtárba -> / home -> personal_folder -> Desktop, és nézd meg, hogy vannak-e a fotók, és törölheted-e a mappát.
      Ha ez nem működik, akkor a terminál (konzol) más lehetőségeit kell látnia.

  17.   Pedro Manuel Aguayo Munoz dijo

    Szia, hogy vagy? Bash-ban dolgozom, és szeretném tudni, hogyan lehet ellenőrizni, hogy van-e például egy könyvtár a billentyűzetről

    #! / bin / bash
    útvonal olvasása
    #Enter ~ / Asztal
    # Aztán megpróbálok navigálni abban a könyvtárban
    cd $ elérési út
    # A következő bash üzenetet kapom: cd: ~ / Desktop: A fájl vagy könyvtár nem létezik

    A kérdésem az, hogy mit tehetek úgy, hogy beírjam a billentyűzetről, és könyvtárkönyvtárként vegyem?

  18.   Miguel dijo

    És honnan tudhatom, hogy létezik-e csoport,

  19.   huncut dijo

    jó Van egy problémám a kanaimban, amikor megnyomom a cunaguaro gombot, azt mondja, hogy nincs fájl vagy könyvtár, mivel ez megoldaná ezt a problémát, és a többi nem nyitja meg a cunaguaro-t, kérem, köszönöm.

  20.   Carlos dijo

    Hogyan csinálod a BASH-ban, ha a fájlnévnek van szóköz?
    Például:
    Április adatai.xlsx

    Megkérdezni, hogy létezik-e a fájl

    1.    Manuel Alcocer Jimenez dijo

      Carlos, így:

      if [["$ változó" == Adatok \ április \ április \ xxx]]; majd visszhangozza a 'meccset'; fi

      Ön is:
      if [["$ variable" == 'Adatok április hónapra.xlsx']]; majd visszhangozza a 'meccset'; fi

      Egy másik lehetőség:
      [["$ Variable" == 'Április hónap adatai.xlsx']] && echo 'egyezik' || echo 'nem egyezik'

      Az internet bizonyos sötét területein a [] helyett a [[]] használatát javasolják, és ha a számokat fogja összehasonlítani, akkor: ((változó> = 3)) && echo 'változó nagyobb vagy egyenlő 3' | | echo 'változó kisebb, mint 3'

      Ezért a számok esetében:

      if ((szám! = 4)); akkor a "$ {number} nem 4" visszhang; else echo "$ {number} is 4"; fi

  21.   Cesar Matheus dijo

    hogyan készíthet kódot az érvényesítéshez, ha a könyvtárnak van egy konkrét szövege, hogy szerkeszthesse azt.

    például:

    if (text1)

    ne csinálj semmit

    más

    módosítsa a text1 szöveget text2-re

  22.   Miguel dijo

    Kérdés, hogy lenne az, hogy 15 másodpercenként ellenőrizzem, hogy létezik-e a fájl, vagy sem, köszönöm.

  23.   folyópart dijo

    Helló,
    ez:
    if [-w / home / Komun / Logs / ti]; akkor
    Tudja meg, hogy a fájl írható-e. De a felhasználói engedélyeken alapul. Meg lehet-e tenni annak kiderítésére, hogy a csoport vagy a többiek rendelkeznek-e engedélyekkel?