Tarkista, onko tiedosto tai kansio olemassa (tai enemmän) IF-silmukalla

En ole laittanut mitään Kemut, ja se on, että kun pääsen Pythonin ihmeelliseen maailmaan, olen unohtanut hieman tämän toisen ystävän, joka auttoi minua niin paljon 🙂

Tässä minä laitoin jotain Bash-harrastajille, kuten otsikossa sanotaan ... Näytän sinulle, kuinka voit tarkistaa, onko järjestelmässä tiedosto tai kansio, vain käyttämällä: if

Aiomme luoda .sh-tiedoston ja antaa sille suoritusoikeudet, tähän riittää, että seuraava komento laitetaan päätelaitteeseen:

kosketustesti.sh && chmod + x test.sh

Tämä loi tiedoston (kosketustesti. sh) ja antaa sinulle myös käyttöoikeudet (chmod + x testi.sh)

Kirjoita sitten siihen seuraava:

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

Mitä tämä tekee?

Yksinkertainen 😀

Ensimmäisellä rivillä - » jos [-d / opt /];

Tässä kysytään, onko / opt / hakemisto olemassa? Kyllä hakemisto / kansio, koska -d tarkoittaa hakemistoa tai kansiota.
Sitten, jos se on olemassa, tulostamme päätelaitteeseen «Kyllä, se on olemassa.»(Tämä on rivi 2 ja 3)
Muuten ja / opt / EI ole olemassa, niin tulostamme «Ei sitä ei ole olemassa»(Rivit 4 ja 5)
Sitten viimeisellä rivillä (numero 6) suljetaan if ja siinä kaikki.

Aiheeseen liittyvä artikkeli:
Muodosta verkkoyhteys tietokoneen ja Virtualbox-virtuaalikoneiden välille

Tee testi, se näyttää, että / opt / on olemassa.

Jos haluat minun näyttävän sinulle toisen tekstin (sen, jota ei ole), vaihda / opt / jollekin muulle kansiolle, jota ei ole järjestelmässäsi, esimerkiksi: / asd /

Kuten näette, -d auttaa meitä selvittämään, onko hakemisto olemassa, ja nyt, jos muutamme -d arvoksi -f, tarkistetaan tiedostot (-d = hakemisto, -f = tiedosto / tiedosto)

Esimerkiksi:

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

Tässä on luettelo vaihtoehdoista:

-d - »Tarkista, onko tietty hakemisto olemassa

-f - »Tarkista, onko tietty tiedosto olemassa

-w - »Tarkista, onko tietyllä tiedostolla kirjoitusoikeuksia

-x - »Tarkista, onko tietyllä tiedostolla suoritusoikeudet.

Ja ei ole paljon muuta lisätä 🙂

Tiedän, että tämä on erittäin hyödyllistä ja mielenkiintoista niille, jotka haluavat ohjelmoida Bashissa 😉

terveiset


Artikkelin sisältö noudattaa periaatteita toimituksellinen etiikka. Ilmoita virheestä napsauttamalla täällä.

42 kommenttia, jätä omasi

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Hugo dijo

    Toinen tapa tehdä se ilman, jos… sitten .. muu:

    test -f /etc/hosts && elcomando

    Tai myös

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

    Jne.

    1.    KZKG ^ Gaara dijo

      Oikea 😀
      … O_O ... Oletko Hugo, Hugo Kuubasta? … Windows8: n, WTF: n käyttö !!!

      1.    Hugo dijo

        Kyllä, olen tutustumassa tähän käyttöjärjestelmään, ja jos minun on oltava rehellisiä, ainoa asia, jonka olen löytänyt hyödylliseksi, on kopiohallinta, muuten pidän sitä henkilökohtaisesti tuskana, varsinkin sen hybridiliitännässä ja metrosovelluksissa. Pidän siitä vähemmän kuin Vista ja 7 (vaikkakin vähän tehokkaampia kuin nämä), joista en pidäkään. Ainoa asia, johon käytän sitä, on NFS13: n ja Skyrimin pelaaminen, mutta tämä käyttöjärjestelmä vie niin paljon tilaa, että jouduin poistamaan Linux-osioni [snif].

        Mielenrauhan vuoksi kerron kuitenkin, että toissapäivänä ladasin Arch ISO tammikuulle ja aion antaa sille maun sen x86-64-versiossa heti, kun saan repon (onko sinulla sitä?). Nyt kun näin, että se käyttää oletuksena allekirjoitettuja paketteja, se antaa minulle enemmän itseluottamusta sukellukseen.

        Ja isäni kertoi minulle, että hän lähetti minulle Sony Xperian, jota haluan hyödyntää oppiakseni jonkin ohjelmoinnin Androidille, mikä oli odottava toive. Joten rauhoittu, en ole vielä mennyt voiman pimeälle puolelle, buahahahaha 😉

  2.   patz dijo

    ihmisen testi

    1.    MSX dijo

      Toki.

  3.   RAW-Basic dijo

    Wenas! ..

    Voisimme tehdä saman .. .. mutta hakemisto välitetään parametrina ..

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

    Ja kutsumme sitä nimellä:

    ./test.sh / opt /

    Tervehdys..

  4.   savo dijo

    IF ei ole sykli xD

  5.   Gregory Swords dijo

    Se sopii minulle kuin käsine käsikirjoitukselle, jota teen. Onko pätevää käyttää jokerimerkkejä? Esimerkiksi, jos haluat tietää, onko .mp4-tiedostoja, suorita sitten jotain niillä.

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

    1.    RAW-Basic dijo

      Kyllä, se on täysin pätevä ..

      Jopa parametrien kautta .. "* .mp4"

      1.    RAW-Basic dijo

        Esimerkiksi

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

        Jos kutsut sitä: ./test.sh * .mp4

        Jos se löytää .mp4-tiedostoja, se poistaa ne ... ... mutta siinä ei luetella tiedostoja siinä hakemistossa ...

        1.    Gregory Swords dijo

          Kiitos palautteesta ja vinkeistä! 🙂

        2.    Joaquin dijo

          Kaipaat f xD: tä

          rm -rf $ 1

          Tämä on jännittävämpää!

        3.    b1tblu3 dijo

          Ihana !!!, Joka päivä rakastun enemmän Linuxiin, Windows on siirretty kiintolevyn pimeään kulmaan, joka on pyyhkimässä, jotta pääset Linuxin valolle.

          1.    RAW-Basic dijo

            Erinomainen! .. ..Sitten ota seuraava askel .. ja ota se ulos.

            6 kuukautta sitten noin. Minulla on vain GNU / Linux kaikilla koneillani, enkä tarvitse enempää .. ..ei W $ .. tai Viiniä .. ..ja olen enemmän kuin onnellinen tuollainen .. 😉

            Ja tartun ympäristöni .. koska he kaikki näkevät minut Archillani, nopeaa, tehokasta ja onnellista .. ..ja he pyytävät minua asentamaan Linuxin .. ..joo! .. ..

        4.    Inukaze dijo

          Voit myös tarkistaa ne erilaisista laajennuksista, voit käyttää jotain

          #! / Bin / bash
          Hakemisto = $ HOME / Lataukset

          jos [$ hakemisto]; sitten
          echo "Tässä on luettelo tiedostotyypeistä:"
          kaiku "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          Käyttämällä {} voit määrittää tässä tapauksessa useita laajennuksia käyttämällä "?" , on jokerimerkki, jonka avulla voit käyttää mitä tahansa merkkiä.

          Toivon, että se auttaa sinua

        5.    Pedro dijo

          Suosittelen komentoa etsi [hakemisto] [hakukuvio] - exec [komento] {} \

      2.    Carlos dijo

        Se ei toimi, laitoin nämä tiedostot hakemistoon:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        haku.sh

        #! / Bin / bash
        PATH = / tmp / TESTI
        cd $ REITTI
        ls -la | awk '{print »« $ 9}'
        jos [[-f AB.TXT]]; sitten
        echo »Syötä IF, jos AB: tä on
        .TXT »
        fi
        jos [-f AB20160422.TXT]; sitten
        echo "tietyn AB-tiedoston syöttö"
        fi

        kun laitoin [-f AB.TXT] antaa virheen
        kun laitoin [[-f AB
        .TXT]] ei anna virhettä, mutta ei löydä tiedostoa
        se toimii vain, kun laitan tietyn tiedoston, esimerkiksi:
        jos [-f AB20160422.TXT]; sitten

        En voi saada sitä toimimaan jokerimerkkien * kanssa?

        1.    Pedro dijo

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

          JATKUVAT

          EXIT_OK = 0
          EXIT_BAD = 66

          Lihavoitu = »\ 033 [1m»
          NC = »\ 033 [0m»
          PUNAINEN = »\ 033 [31m»

          jos [! "$ 1"];
          sitten
          echo "puuttuu parametri"
          poistu $ EXIT_BAD
          fi

          CD "$ 1"

          tiedostot = »ls -h1 $ 1»

          tiedostolle tiedostossa $ ($ tiedostot); tehdä
          echo -e "voit tehdä mitä tahansa $ BOLD $ -tiedostolla $ nc täällä"
          tehty

          poistu $ EXIT_OK

  6.   MSX dijo

    @KZ, kerro lisää tästä: "Ja se johtuu siitä, että menen Pythonin ihmeelliseen maailmaan"!

    1.    KZKG ^ Gaara dijo

      HAHAHAHA nah ... vähitellen 🙂
      Olen edelleen vasta aloittelija Pythonissa, minulla on tuskin aikaa omistaa sille tunteja, joten olen hidas kyllä, hidas, mutta varma oppimisessani 😀

  7.   audoban dijo

    Paljon kiitoksia 😀 juuri eilen ajattelin miten se tehdään.

  8.   ReichSk dijo

    tämä ncursesilla on hieno 🙂

  9.   Jazeco dijo

    yhdellä sanalla ... Erinomainen!
    Kehitin pitkään komentosarjaa ladatakseni Internetistä, mutta minulla oli ongelma, että se latasi pyytämänsä tiedostot 1 ja uudelleen ilman, että pystyin varmistamaan 1ro: n olemassaolon.
    Erittäin hyvä tuto.

  10.   zulan dijo

    Valtava panos täällä Chilessä arvostetaan.
    Joka päivä lisää LINUX yllättää minut miellyttävästi,
    Eläköön ilmainen ohjelmisto MIERDAAAA.

  11.   david dijo

    palvella
    tarkista onko tiedosto hakemistosta

  12.   Grovher dijo

    Jos haluan tarkistaa minkä tahansa tiedoston olemassaolon polussa «/ tmp / vastaanottimet», suorita mikä tahansa komento, miten se olisi?

    Olen hyvin kiitollinen

    terveiset

  13.   Johannes dijo

    Hyvä, ja selvittää IF: n avulla, onko tiedosto täysin täytetty ???. Kysyn tämän, koska kun täytät tiedostoa lähetystä varten, se voi viedä sen jopa puolella tiedoista.

    Terveisiä ja kiitos vastauksestasi.

  14.   Inukaze dijo

    Luulen, että sinun pitäisi myös lisätä esimerkki, kuten "Tarkista, ettei" tiedostoa "tai" hakemistoa "ole, kuten esimerkiksi

    tarkista, että sitä EI ole, käytä esimerkiksi muuttujaa->

    Hakemisto

    #! / Bin / bash
    Hakemisto = »$ HOME / Testihakemisto»
    Tiedosto = »$ HOME / Testitiedosto»

    jos [! -d "$ hakemisto"]; sitten
    kaiku "$ hakemistoa ei ole"
    kaiku "Luominen ->" $ hakemisto "
    mkdir "$ hakemisto"
    muu
    echo "Hakemisto" $ Directory "on jo olemassa
    fi

    jos [! -d "$ tiedosto"]; sitten
    echo "Tiedostoa $ ei ole olemassa"
    echo "Luonti ->" $ tiedosto "
    kosketa "$ File"
    muu
    echo "Tiedosto" $ File "on jo olemassa
    fi

    1.    Katekyo dijo

      kun teet mkdir: n, tarkista myöhemmin, voiko pääte luoda sen, koska se voi rikkoa pallot, jos se on kansio juurena tai järjestelmänä hhah

  15.   Julius vinachi dijo

    Terveisiä KZKG ^ Gaara kysely kuten tekisin kiharan käyttämiseksi. Haluaisin tietää, miten voin konsolista pingata URL-osoitetta nähdäksesi, onko se esimerkiksi käytettävissä http://portal.com/directorio/archivo1.php Jos tiedosto1 tallentaa vierailun IP-osoitteet, minun on tehtävä tiimi seurantaan, että PIN-koodi tehdään puolen tunnin välein, jotta olen tietoinen julkisesta IP-osoitteesta, koska se muuttuu aika ajoin ja en voi muodostaa yhteyttä ssh: llä .

    Terveiset kiitos etukäteen Jumala siunatkoon sinua.

    1.    KZKG ^ Gaara dijo

      Hei Sellaisena

      Ensinnäkin sinun on sanottava, että IP-muuttuja (esimerkiksi) on kyseisen tiedoston sisältö, jota varten sinun on:
      1. Lataa tiedosto
      2. Katso sen sisältö ja hae IP sieltä
      3. IP on muuttuja

      Esimerkiksi:
      Täältä lataamme tiedoston - »wget http://portal.com/directorio/archivo1.php -o tiedosto.html
      Sitten osoitamme muuttujalle sen sisällön: - »: $ {IP: =` kissatiedosto.html`}
      .. olettaen, että tiedoston sisällöllä on vain IP, jos ei, joudut työskentelemään grep: n, awk: n tai head: n kanssa.

      Kun sinulla on IP muuttujana, loput ovat yksinkertaisin asia maailmassa 🙂

      Jos haluat kirjoittaa minulle sähköpostia (kzkggaara [at] desdelinux [dot] net), autan mielelläni sinua

      1.    Julius vinachi dijo

        Paljon kiitoksia kzkggaara erittäin kiitollinen.

  16.   Natalia dijo

    Hei, en ymmärrä paljon laskennasta, enkä tiedä, liittyykö tämä viesti minuun liittyvään ongelmaan.

    Kommentoin, jos luet minut, vaikka viesti on vuodelta sitten:
    On käynyt ilmi, että olen luonut työpöydällesi kansion tallentaa videoita. Poistin nuo videot, koska en enää tarvinnut niitä, ja nyt tämä kansio kertoo minulle, ettei sitä ole olemassa (vaikka se näkyy työpöydälläni).

    - Tämä on ensimmäinen ongelma, joka minulla on:
    En voi poistaa kansiota.

    - Toinen ongelma ja mielestäni tärkeämpi:
    Yritin poistaa kansion, laitoin PHOTOS-kansion. Nyt kun avaan kansion, jota "ei ole olemassa", se on tyhjä eikä VALOKUVAT ole siellä.

    Kuinka voin palauttaa valokuvat? Olen antanut vaihtoehdon "Näytä piilotetut asiakirjat" -kansiossa, mutta PHOTOS-kansio ei tule näkyviin.

    Toivon, että tiedät miten se on ratkaistu.
    Kiitos.

    1.    Valdo dijo

      Pääkäyttäjiä on kaksi: root ja käyttäjän_käyttäjä (esimerkiksi natalia). Heillä molemmilla on henkilökohtaiset kansiot. käyttäjän_käyttäjä / home ja juuret / (juurihakemistossa). Napsauttamalla kansiota hiiren kakkospainikkeella näet kenelle se kuuluu. Jos tiedosto on pääkäyttäjänä tiedostohallinnossasi sudo, gksu tai kdesu, käytettävästä ympäristöstä riippuen, mene juurihakemistoon -> root -> Työpöytä ja löydät todennäköisesti valokuvat ja voit poistaa kansion. Jotkut distrot, kun et ole tiedoston tai hakemiston omistaja ja sinulla ei ole käyttöoikeuksia, kertovat hakemistoa / tiedostoa. Jos olet omistaja etkä ole root, tee sama tiedostohallinnan kanssa sudo: lla jne. Ja siirry juurihakemistoon -> / home -> personal_folder -> Desktop ja katso, ovatko valokuvat siellä ja voitko poistaa kansion.
      Jos tämä ei toimi, joudut näkemään muita vaihtoehtoja päätelaitteesta (konsolista).

  17.   Pedro Manuel Aguayo Munoz dijo

    Hei, miten menee? Teen työtä bashissa ja haluaisin tietää, kuinka tarkistaa esimerkiksi onko näppäimistöltä syötetty hakemisto

    #! / Bin / bash
    lue reitti
    #Syötä ~ / Työpöytä
    # Sitten yritän navigoida hakemistossa
    cd $ polku
    # Saan seuraavan bash-viestin: cd: ~ / Desktop: Tiedostoa tai hakemistoa ei ole olemassa

    Kysymykseni on, mitä voin tehdä niin, että kirjoitan sen näppäimistöltä ja otan sen hakemistopoluksi?

  18.   Miguel dijo

    Ja mistä tiedän onko ryhmä olemassa,

  19.   siisti dijo

    hyvä Minulla on ongelma kanamassani, kun painan cunaguaro-painiketta, siinä sanotaan, että tiedostoa tai hakemistoa ei ole, koska se tekisi ongelman ratkaisemiseksi, ja loput eivät avaa cunaguaroa, kiitos.

  20.   Carlos dijo

    Kuinka teet jos BASH: ssa, jos tiedostonimessä on välilyöntejä?
    Esimerkiksi:
    Huhtikuun tiedot.xlsx

    Kysyä onko tiedosto olemassa

    1.    Manuel Alcocer Jimenez dijo

      Carlos, näin:

      jos [["$ muuttuja" == Data \ kuukausi \ huhtikuu.xlsx]]; sitten kaiku 'ottelu'; fi

      Voit myös:
      jos [["$ variable" == 'Huhtikuun tiedot.xlsx']]; sitten kaiku 'ottelu'; fi

      Toinen vaihtoehto:
      [["$ Variable" == 'Huhtikuun tiedot.xlsx']] && echo 'ottelut' || kaiku 'ei täsmää'

      Joillakin Internetin pimeillä alueilla he suosittelevat [[]]: n käyttämistä []: n kanssa, ja jos aiot verrata lukuja, ((muuttuja> = 3)) && echo '-muuttuja on suurempi tai yhtä suuri kuin 3' || echo 'muuttuja on alle 3'

      Siksi numeroille:

      jos ((luku! = 4)); sitten kaiku "$ {numero} ei ole 4"; muuten kaiku "$ {number} on 4"; fi

  21.   Cesar Matheus dijo

    kuinka voit tehdä koodin tarkistettavaksi, jos hakemistossa on tietty teksti, jotta voit muokata sitä.

    esimerkiksi:

    jos (teksti1)

    Älä tee mitään

    muu

    muuta teksti1 tekstiksi2

  22.   Miguel dijo

    Kysymys, kuinka minun olisi tarkistettava 15 sekunnin välein, onko tiedosto olemassa, kiitos.

  23.   joen penkka dijo

    Hei,
    Tämä:
    if [-w / koti / Komun / Lokit / ti]; sitten
    Selvitä, onko tiedosto kirjoitettavissa. Mutta se perustuu käyttäjien oikeuksiin. Voidaanko selvittää, onko ryhmällä tai muilla käyttöoikeudet?