Pomocí smyčky IF zkontrolujte, zda soubor nebo složka existuje či nikoli (a více)

Nic z toho jsem nedal PraštitJe to tak, že když vstupuji do úžasného světa Pythonu, zapomněl jsem trochu na tohoto dalšího přítele, který mi tolik pomohl 🙂

Zde jsem dal něco nadšencům Bash, jak název napovídá ... Ukážu vám, jak zkontrolovat, zda v systému existuje soubor nebo složka, pouze pomocí: if

Chystáme se vytvořit soubor .sh a dát mu oprávnění ke spuštění, stačí do terminálu vložit následující příkaz:

klepněte na test.sh && chmod + x test.sh

To, co se stalo, je vytvoření souboru (dotykový test.sh) a také vám udělit oprávnění ke spuštění (chmod + x test.sh)

Pojďme do něj napsat následující:

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

Co to dělá?

Jednoduché 😀

V prvním řádku - » pokud [-d / opt /];

Zde se ptáme, existuje adresář / opt /? Ano adresář / složka, protože -d znamená adresář nebo složku.
Pak, pokud existuje, vytiskneme v terminálu «Ano, existuje.»(Toto jsou řádky 2 a 3)
Jinak / opt / neexistuje, potom vytiskneme «Ne, neexistuje»(Řádky 4 a 5)
Pak v posledním řádku (číslo 6) zavřeme if a je to.

Související článek:
Navažte síťové připojení mezi PC a virtuálními stroji Virtualbox

Proveďte test, který vám ukáže, že / opt / existuje.

Pokud chcete, abych vám ukázal další text (ten, který neexistuje), změňte / opt / pro jakoukoli jinou složku, která ve vašem systému neexistuje, například: / asd /

Jak vidíte, -d nám pomáhá zjistit, zda adresář existuje, pokud nyní změníme -d na -f, zkontrolujeme existenci souborů (-d = adresář, -f = soubor / soubor)

Například:

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

Zde je seznam možností:

-d - »Zkontrolujte, zda existuje určitý adresář

-f - »Zkontrolujte, zda určitý soubor existuje

-w - »Zkontrolujte, zda má určitý soubor oprávnění k zápisu

-x - »Zkontrolujte, zda má určitý soubor oprávnění ke spuštění.

A není toho moc k přidání 🙂

Vím, že to bude velmi užitečné a zajímavé pro ty, kteří rádi programují v Bash 😉

pozdravy


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Hugo řekl

    Další způsob, jak to udělat, pokud ... pak.. jinak:

    test -f /etc/hosts && elcomando

    Nebo také

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

    Atd.

    1.    KZKG ^ Gaara řekl

      Správně 😀
      … O_O… Jsi Hugo, Hugo z Kuby? … Pomocí Windows8, WTF !!!

      1.    Hugo řekl

        Ano, seznamuji se s tímto operačním systémem, a pokud musím být upřímný, jediná věc, kterou jsem považoval za užitečnou, je správce kopií, jinak mi osobně připadá bolest, zejména jeho hybridní rozhraní a aplikace metra. Líbí se mi méně než Vista a 7 (i když o něco efektivnější než tyto), což se mi také nelíbilo. Vše, co používám, je hrát NFS13 a Skyrim, ale tento OS zabírá tolik místa, že jsem musel odstranit svůj linuxový oddíl [snif].

        Pro váš klid však zmíním, že jsem si předevčírem stáhl Arch ISO na leden a plánuji mu dát ochutnat jeho verzi x86-64, jakmile dostanu repo (budete ho mít ?). Nyní, když jsem viděl, že ve výchozím nastavení používá podepsané balíčky, mi dává větší jistotu při potápění.

        A můj otec mi také řekl, že mi pošle Sony Xperia, kterou se chci naučit programovat pro Android, což bylo nevyřízené přání. Takže se uklidněte, ještě jsem nešel na temnou stránku síly, buahahahaha 😉

  2.   patz řekl

    mužský test

    1.    MSX řekl

      Jistě.

  3.   RAW-Basic řekl

    Wenas! ..

    Mohli bychom vytvořit stejný .. .. ale adresář je předán jako parametr ..

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

    A říkáme tomu jako:

    ./test.sh / opt /

    Pozdrav..

  4.   Uložit řekl

    IF není cyklus xD

  5.   Gregory Meče řekl

    Hodí se mi to jako rukavice pro scénář, který dělám. Je platné použití zástupných znaků? Například zjistit, zda existují soubory .mp4, pak na ně něco spustit.

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

    1.    RAW-Basic řekl

      Ano, je to naprosto platné ..

      I přes parametry .. „* .mp4“

      1.    RAW-Basic řekl

        Např

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

        Pokud tomu říkáte: ./test.sh * .mp4

        Pokud najde soubory .mp4, odstraní je ... ... ale neuvádí seznam souborů v tomto adresáři ...

        1.    Gregory Meče řekl

          Děkujeme za zpětnou vazbu a tipy! 🙂

        2.    Joaquin řekl

          Chybělo vám f xD

          rm -rf $ 1

          To je více vzrušující!

        3.    b1tblu3 řekl

          Skvělé !!!, Každý den, co se více zamilovávám do Linuxu, byl Windows odsunut do nějakého temného koutku mého pevného disku, který bude brzy vymazán, aby ustoupil světlu Linuxu.

          1.    RAW-Basic řekl

            Výborně! .. ..pak udělejte další krok .. a dostat se ven ..

            Před 6 měsíci Na všech svých strojích mám pouze GNU / Linux a nepotřebuji víc .. .. ne W $ .. nebo víno .. ..a jsem tak rád, že .. 😉

            A infikuji své okolí .. protože mě každý vidí se svým Archem, rychlý, efektivní a šťastný .. ..a žádají mě, abych nainstaloval Linux .... jo! .. 😀

        4.    Inukaze řekl

          Můžete také zkontrolovat, zda neobsahují různá rozšíření, můžete použít něco jako

          #! / bin / bash
          Adresář = $ HOME / Stahování

          if [$ Directory]; pak
          echo "Zde je seznam typů souborů:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          použití {} umožňuje v tomto případě zadat více přípon, použití "?" , je zástupný znak, který vám umožňuje vzít si „Libovolný znak“.

          Doufám, že se naučíte

        5.    Pedro řekl

          Doporučuji příkaz find [adresář] [search_pattern] –exec [příkaz] {} \

      2.    Carlos řekl

        To nefunguje, vložil jsem tyto soubory do adresáře:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / bin / bash
        PATH = / tmp / TEST
        cd $ ROUTE
        ls -la | awk '{tisk »« $ 9}'
        pokud [[-f AB.TXT]]; pak
        echo »Zadejte IF, pokud existuje AB
        .TXT »
        fi
        pokud [-f AB20160422.TXT]; pak
        echo "vstup pro konkrétní soubor AB"
        fi

        když jsem dal [-f AB.TXT] dává chybu
        když jsem dal [[-f AB
        .TXT]] nedává chybu, ale nemůže najít soubor
        funguje to pouze tehdy, když vložím konkrétní soubor, například:
        pokud [-f AB20160422.TXT]; pak

        Nemohu to dostat do práce se zástupnými znaky * nebo?

        1.    Pedro řekl

          #! / usr / bin / env bash
          #.kódování = utf-8.

          OBSAHUJÍCÍ

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1 m»
          NC = »\ 033 [0 m»
          ČERVENÉ = »\ 033 [31 m»

          pokud [! „$ 1“];
          pak
          echo "chybí parametr"
          opusťte $ EXIT_BAD
          fi

          cd "$ 1"

          soubory = »ls -h1 $ 1»

          pro soubor v $ ($ soubory); dělat
          echo -e "se souborem $ BOLD $ $ nc můžete dělat cokoli"
          hotový

          opusťte $ EXIT_OK

  6.   MSX řekl

    @KZ, řekněte o tom více: „A to proto, že vstupuji do nádherného světa Pythonu“!

    1.    KZKG ^ Gaara řekl

      HAHAHAHA nah ... kousek po kousku 🙂
      Jsem v Pythonu stále jen nováček, stěží mu mám čas věnovat hodiny a hodiny, takže jsem pomalý ano, pomalý ale jistý ve svém učení

  7.   audoban řekl

    Moc děkuji 😀 právě včera jsem přemýšlel, jak to udělat.

  8.   říšsko řekl

    to s ncurses je skvělé 🙂

  9.   jazz řekl

    jedním slovem ... VÝBORNÁ!
    Dlouho jsem zdokonaloval skript pro stahování z internetu, ale narazil jsem na problém, že stáhl soubory, které požadoval 1 a znovu, aniž by mohl ověřit existenci 1ro.
    Velmi dobrá tato.

  10.   zulan řekl

    Obrovský příspěvek, zde z Chile se cení.
    Každý den mě více LINUX příjemně překvapuje,
    Ať žije svobodný software MIERDAAAA.

  11.   david řekl

    sloužit pro
    zkontrolujte, zda je soubor z adresáře

  12.   groveher řekl

    Pokud chci zkontrolovat existenci jakéhokoli souboru v cestě «/ tmp / receivers», provést libovolný příkaz, jak by to bylo?

    Budu velmi vděčný

    pozdravy

  13.   John řekl

    Vážení, a podle IF zjistit, zda je soubor plně naplněn ???. Ptám se na to, protože když vyplňujete soubor pro přenos, může to trvat i s polovinou dat.

    Zdravím a děkuji za vaši odpověď.

  14.   Inukaze řekl

    Myslím, že byste také měli přidat příklad, například „Zkontrolovat, zda neexistuje žádný„ soubor “nebo„ adresář “, například

    zkontrolovat, zda NENÍ, například použít proměnnou->

    Adresář

    #! / bin / bash
    Adresář = »$ HOME / Testovací adresář»
    Soubor = »$ HOME / Testovací soubor»

    pokud [! -d "$ Directory"]; pak
    echo "Neexistuje žádný $ Directory"
    echo "Vytváření ->" $ Directory "
    mkdir "$ Directory"
    jiný
    echo "Adresář" $ Directory "již existuje
    fi

    pokud [! -d "$ Soubor"]; pak
    echo "Neexistuje žádný $ soubor"
    echo "Vytváření ->" $ Soubor "
    klepněte na „$ Soubor“
    jiný
    echo "Soubor" $ Soubor "již existuje
    fi

    1.    Katekyo řekl

      když provedete mkdir, zkontrolujte později, zda jej terminál mohl vytvořit, protože může rozbít koule, pokud je to složka jako root nebo systém hhah

  15.   Julius vinachi řekl

    Zdravím KZKG ^ Gaara dotaz, jak bych udělal použít curl. Chtěl bych vědět, jak to dělám z konzoly na ping na adresu URL, abych zjistil, zda je například k dispozici http://portal.com/directorio/archivo1.php Tam, kde file1 bude ukládat IP adresy návštěvy, je to pro monitorování týmu, který musím každou půlhodinu udělat tento pin, abych si byl vědom veřejné IP, protože se čas od času mění a nemohu se připojit pomocí ssh.

    Zdravím předem děkuji Bohu.

    1.    KZKG ^ Gaara řekl

      Dobrý den,

      Nejprve musíte říci, že proměnná IP (například) je obsahem tohoto souboru, musíte tedy:
      1. Stáhněte soubor
      2. Zobrazte jeho obsah a odtud získejte IP
      3. Tato IP je proměnná

      Například:
      Zde stáhneme soubor - »wget http://portal.com/directorio/archivo1.php -o soubor.html
      Poté přiřadíme jeho obsah k proměnné: - »: $ {IP: =` cat file.html`}
      .. za předpokladu, že obsah tohoto souboru má pouze IP, pokud ne, budete muset pracovat s grep, awk nebo head.

      Jakmile již máte IP jako proměnnou, zbytek je nejjednodušší věc na světě 🙂

      Pokud chcete, napište mi na email (kzkggaara[at]desdelinux[dot]net) Rád vám pomůžu

      1.    Julius vinachi řekl

        Děkuji moc kzkggaara velmi vděčný.

  16.   Natalia řekl

    Ahoj, moc nerozumím výpočetní technice a nevím, jestli tento příspěvek souvisí s problémem, který mám.

    Komentuji pro případ, že byste mě četli, přestože příspěvek je před rokem:
    Ukazuje se, že jsem vytvořil složku na ploše pro uložení některých videí. No, odstranil jsem tato videa, protože jsem je již nepotřeboval a nyní mi tato složka říká, že neexistuje (i když je viditelná na mé ploše).

    - To je první problém, který mám:
    Složku nemohu smazat.

    - Druhý problém a myslím, že důležitější:
    Při pokusu o smazání složky jsem vložil složku FOTKY. Nyní, když otevřu složku, která „neexistuje“, je prázdná a FOTKY tam nejsou.

    Jak mohu obnovit fotografie? Dal jsem možnost ve složce „Zobrazit skryté dokumenty“, ale složka FOTKY se nezobrazí.

    Doufám, že víte, jak je to vyřešeno.
    Děkuju.

    1.    valdo řekl

      Existují dva uživatelé, kteří jsou hlavními: root a your_user (například natalia). Oba mají osobní složky. váš_uživatel v / home a root v / (kořenový adresář). Kliknutím pravým tlačítkem na složku zobrazíte, komu patří. Pokud je to root s vaším správcem souborů pomocí sudo nebo gksu nebo kdesu v závislosti na prostředí, které používáte, přejděte do kořenového adresáře -> root -> Desktop a pravděpodobně najdete fotografie a můžete složku smazat. Některá distribuce, pokud nejste vlastníkem souboru nebo adresáře a nemáte přístupová oprávnění, vám říkají, že adresář / soubor neexistuje. Pokud jste vlastníkem a nejste root, udělejte totéž se správcem souborů pomocí sudo atd. A přejděte do kořenového adresáře -> / home -> personal_folder -> Desktop a zkontrolujte, zda tam jsou fotografie a zda je možné odstranit složka.
      Pokud to nefunguje, budete muset vidět další možnosti z terminálu (konzoly).

  17.   Pedro Manuel Aguayo Munoz řekl

    Ahoj, jak se máš? Dělám práci v bash a chtěl bych vědět, jak ověřit, zda je například zadán adresář z klávesnice

    #! / bin / bash
    přečíst trasu
    # Enter ~ / Desktop
    #Pak se pokusím tento adresář navigovat
    cesta cd $
    # Zobrazuje se následující bash zpráva: cd: ~ / Desktop: Soubor nebo adresář neexistuje

    Moje otázka je, co mohu udělat, abych to zadal z klávesnice a vzal to jako cestu k adresáři?

  18.   Miguel řekl

    A jak mohu vědět, jestli skupina existuje,

  19.   uspěchaný řekl

    dobrý Mám problém v mém canaima, když stisknu tlačítko cunaguaro, říká, že neexistuje žádný soubor nebo adresář, jak by to bylo k vyřešení tohoto problému a zbytek neotevře cunaguaro, děkuji.

  20.   Carlos řekl

    Jak uděláte if v BASH, pokud má název souboru mezery?
    Například:
    Duben data.xlsx

    Chcete-li se zeptat, zda soubor existuje

    1.    Manuel Alcocer Jimenez řekl

      Carlos, takto:

      if [["$ variable" == Data \ month \ of \ April.xlsx]]; pak ozvěna 'match'; fi

      Můžete také:
      if [["$ variable" == 'Data za měsíc April.xlsx']]; pak ozvěna 'match'; fi

      Další možností:
      [["" Proměnná $ "== 'Údaje za April.xlsx']] && echo 'shoduje se' || echo „neodpovídá“

      V některých tmavých oblastech internetu doporučují místo [] použít [[]], a pokud hodláte porovnávat čísla, pak: ((proměnná> = 3)) && echo 'proměnná je větší nebo rovna 3' | | proměnná echo 'je menší než 3'

      Proto pro čísla:

      if ((číslo! = 4)); potom echo "$ {number} není 4"; else echo "$ {number} je 4"; fi

  21.   César Matheus řekl

    jak můžete vytvořit kód pro ověření, zda má adresář konkrétní text, abyste jej mohli upravit.

    příklad:

    if (text1)

    nedělat nic

    jiný

    změnit text1 na text2

  22.   Miguel řekl

    otázka, jaké by to bylo kontrolovat každých 15 sekund, zda soubor existuje nebo ne, děkuji.

  23.   Riber řekl

    Dobrý den,
    tento:
    if [-w / home / Komun / Logs / ti]; pak
    Zjistěte, zda je soubor zapisovatelný. Je však založen na uživatelských oprávněních. Je možné zjistit, zda má skupina nebo ostatní oprávnění?