IF давталттай файл эсвэл хавтас байгаа эсэхийг (ба түүнээс дээш) шалгана уу

Би юу ч тавиагүй BashБи Python-ийн гайхамшигтай ертөнцөд орж байхдаа надад маш их тусалсан өөр найзынхаа тухай бага зэрэг мартсан юм.

Гарчиг дээр дурдсанчлан би Bash сонирхогчдод зориулж нэг зүйл тавилаа ... Би системд файл эсвэл хавтас байгаа эсэхийг хэрхэн шалгахыг танд үзүүлэх болно. if

Бид .sh файлыг үүсгэж, түүнд гүйцэтгэх зөвшөөрөл өгөх гэж байна. Үүний тулд дараах тушаалыг терминалд оруулахад л хангалттай.

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

Энэ нь файлыг үүсгэх явдал юм (touch test.sh) мөн танд гүйцэтгэх зөвшөөрөл өгөх (chmod + x test.sh)

Дараа нь дараах зүйлийг бичье.

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

Энэ юу вэ?

Энгийн 😀

Эхний мөрөнд - » хэрэв [-d / opt /];

Энд / opt / директор байдаг уу? Тиймээ директор / хавтас, учир нь -d гэдэг нь лавлах эсвэл хавтас гэсэн үг юм.
Хэрэв энэ нь байгаа бол бид терминал дээр хэвлэх болно «Тийм ээ, энэ нь байдаг.»(Энэ бол 2 ба 3-р мөр)
Үгүй бол ба / opt / байхгүй, бид «хэвлэх болноҮгүй ээ»(4 ба 5-р мөр)
Дараа нь сүүлчийн мөрөнд (дугаар 6) бид if-ийг хаагаад л болоо.

Холбоотой нийтлэл:
Компьютер болон Virtualbox виртуал машинуудын хооронд сүлжээний холболт бий болгох

Тестийг хий, энэ нь танд / opt / байгааг харуулах болно.

Хэрэв та надаас өөр текстийг үзүүлэхийг хүсвэл (байхгүй текстийг) таны системд байхгүй бусад хавтасыг өөрчлөх / сонгох / өөрчлөх, жишээлбэл: / asd /

Таны харж байгаагаар, -d нь директор байгаа эсэхийг мэдэхэд тусалдаг бөгөөд хэрэв одоо бид -d болгож өөрчилбөл файлын оршихуйг шалгах явдал юм (-d = директор, -f = файл / файл)

Жишээ нь:

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

Сонголтуудын жагсаалтыг энд оруулав.

-d - »Тодорхой директор байгаа эсэхийг шалгана уу

-f - »Тодорхой файл байгаа эсэхийг шалгана уу

-w - »Тодорхой файл бичих зөвшөөрөлтэй эсэхийг шалгана уу

-x - »Тодорхой файлыг гүйцэтгэх зөвшөөрөлтэй эсэхийг шалгана уу.

Үүнээс гадна нэмж оруулах зүйл алга

Энэ нь Bash програмчлах дуртай хүмүүст маш хэрэгтэй бөгөөд сонирхолтой байх болно гэдгийг би мэднэ

Баярлалаа!


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

42 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   Хюго гэж хэлэв

    Үүнийг хийхгүйгээр хийх өөр нэг арга бол ... тэгвэл ...

    test -f /etc/hosts && elcomando

    Эсвэл бас

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

    Гэх мэт

    1.    KZKG ^ Гаара гэж хэлэв

      Зөв 😀
      … O_O… Та Хюго мөн үү, Куба хүн үү? … Windows8, WTF ашиглан !!!

      1.    Хюго гэж хэлэв

        Тийм ээ, би энэ OS-тэй танилцаж байгаа бөгөөд хэрэв би илэн далангүй байх хэрэгтэй бол миний олж мэдсэн ганц зүйл бол хуулбарлах менежер юм, эс тэгвээс би үүнийг хортон, ялангуяа эрлийз интерфэйс, метроны програмууд гэж үздэг. Энэ нь надад таалагдаагүй Vista ба 7-ээс бага таалагддаг (эдгээрээс арай илүү үр дүнтэй боловч). Миний ашиглаж байгаа цорын ганц зүйл бол NFS13, Skyrim тоглуулах явдал юм. Гэхдээ энэ OS маш их зай эзэлдэг тул Linux хуваалт [snif] -ийг устгах шаардлагатай болсон.

        Гэсэн хэдий ч таны оюун санааны амар амгалан байдлын үүднээс би урьд өдөр нь Arch ISO програмыг 86-р сард татаж авсан бөгөөд репо авсан даруйдаа x64-XNUMX хувилбараар нь бага зэрэг туршихаар төлөвлөж байгаагаа танд хэлье (танд өгөх үү?). Энэ нь анхдагчаар гарын үсэг зурсан багцуудыг ашигладаг болохыг би харсан болохоор шумбахад илүү их итгэлтэй болж байна.

        Мөн аав надад Sony Xperia-г илгээнэ гэж хэлээд би Андройдод зориулж зарим програмчлалыг сурч мэдэхийг хүсч байна. Тиймээс тайвшир, би хүчний харанхуй тал руу хараахан очоогүй байна, буахахахаха 😉

  2.   патц гэж хэлэв

    хүн тест

    1.    msx гэж хэлэв

      Мэдээж хэрэг.

  3.   RAW-Үндсэн гэж хэлэв

    Вэнас! ..

    Бид үүнтэй ижил зүйлийг хийж болно .. .. гэхдээ директорыг параметр болгон дамжуулдаг.

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

    Үүнийг бид дараах байдлаар нэрлэдэг.

    ./test.sh / opt /

    Сайн байцгаана уу ..

  4.   саво гэж хэлэв

    IF бол xD мөчлөг биш юм

  5.   Грегорио Эспадас гэж хэлэв

    Энэ бол миний хийж буй скриптийн бээлий шиг надад тохирсон юм. Тэмдэгт тэмдэг ашиглах нь хүчинтэй юу? Жишээлбэл .mp4 байгаа эсэхийг мэдэхийн тулд тэдгээр дээр ямар нэгэн зүйл ажиллуул.

    хэрэв [-f * .mp4];
    ...

    1.    RAW-Үндсэн гэж хэлэв

      Тиймээ, энэ нь бүрэн хүчинтэй байна ..

      Параметрүүдээр дамжуулж ч .. "* .mp4"

      1.    RAW-Үндсэн гэж хэлэв

        Жишээлбэл,

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

        Хэрэв та үүнийг дуудвал: ./test.sh * .mp4

        Хэрэв .mp4 файл олдвол устгах болно ... ... гэхдээ тэр директорын файлуудыг жагсаахгүй ...

        1.    Грегорио Эспадас гэж хэлэв

          Санал хүсэлт, зөвлөмжид баярлалаа! 🙂

        2.    Joaquin гэж хэлэв

          Та f xD-г алдсан

          rm -rf $ 1

          Энэ нь илүү сэтгэл хөдөлгөм юм!

        3.    b1tblu3 гэж хэлэв

          Гайхамшигтай !!!, Өдөр бүр би Линуксд илүү их дуртай болдог, Windows нь хатуу дискнийхээ харанхуй буланд унаж, Линуксийн гэрэлд зайгаа тавьж өгөх гэж байна.

          1.    RAW-Үндсэн гэж хэлэв

            Маш сайн! .. ..Дараа нь дараагийн алхамаа хийгээд гаргаарай ..

            6 сарын өмнө. Надад бүх машинууд дээр зөвхөн GNU / Linux байдаг бөгөөд надад илүү их зүйл шаардагддаггүй .. .. W $ .. эсвэл Wine .. биш .. тэгээд ч би үүнээс илүү баяртай байна .. 😉

            Би хүрээлэн буй орчиндоо халдвар тарааж байна .. хүн бүхэн намайг өөрийн нуман хаалгатай, хурдан, үр дүнтэй, аз жаргалтай байгааг хардаг болохоор .. тэд надаас Линукс суулгахыг хүсч байна .. ..яа! .. ..

        4.    Инуказе гэж хэлэв

          Та тэдгээрийг янз бүрийн өргөтгөлүүд байгаа эсэхийг шалгаж болно, та үүнтэй төстэй зүйлийг ашиглаж болно

          #! / bin / bash
          Лавлах = $ HOME / Татаж авах

          хэрэв [$ Directory]; дараа нь
          echo "Энд файлын төрлүүдийн жагсаалт байна."
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          {} ашиглах нь энэ тохиолдолд олон өргөтгөлийг зааж өгөх боломжийг олгодог бөгөөд "?" , нь танд "Ямар ч тэмдэгт" авах боломжийг олгодог орлуулах тэмдэг юм.

          Энэ нь танд тусална гэж найдаж байна

        5.    pedro гэж хэлэв

          Би find [директор] [search_pattern] –exec [command] {} \ тушаал өгөхийг зөвлөж байна.

      2.    Карлос гэж хэлэв

        Энэ нь ажиллахгүй байна, би эдгээр файлуудыг директорт оруулсан:
        AB20160420. TXT
        AB20160421. TXT
        AB20160422. TXT
        AB20160423. TXT
        AB20160424. TXT
        AB20160425. TXT
        хайх.sh

        #! / bin / bash
        PATH = / tmp / TEST
        cd $ ROUTE
        ls -la | awk '{хэвлэх »« $ 9}'
        хэрэв [[-f AB.TXT]]; дараа нь
        echo »Хэрэв AB байгаа бол IF-г оруулна уу
        .TXT »
        fi
        хэрэв [-f AB20160422.TXT]; дараа нь
        echo "тодорхой AB файлын оролт"
        fi

        Би тавихдаа [-f AB.TXT] алдаа гаргадаг
        би тавихдаа [[-f AB
        .TXT]] алдаа өгдөггүй боловч файлыг олж чадахгүй байна
        энэ нь зөвхөн тодорхой файл оруулах үед л ажиллана, жишээлбэл:
        хэрэв [-f AB20160422.TXT]; дараа нь

        Би үүнийг орлох тэмдэгтэй ажиллахад ашиглаж чадахгүй байна * эсвэл?

        1.    pedro гэж хэлэв

          #! / usr / bin / env bash
          #.кодчилол = utf-8.

          БҮТЭЭГДЭХҮҮН

          EXIT_OK = 0
          EXIT_BAD = 66

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

          хэрэв [! "$ 1"];
          дараа нь
          echo "параметр дутуу"
          $ EXIT_BAD гарах
          fi

          CD "$ 1"

          файлууд = »ls -h1 $ 1»

          $ ($ файлууд) файлын хувьд; хийх
          echo -e "та энд $ BOLD $ файл $ nc ашиглан юу ч хийж болно"
          дууссаныхаа

          $ EXIT_OK гарах

  6.   msx гэж хэлэв

    @KZ, энэ талаар илүү дэлгэрэнгүй мэдээлэл өгөөч: "мөн энэ нь би Python-ийн гайхамшигтай ертөнцөд орж байгаатай холбоотой юм!"

    1.    KZKG ^ Гаара гэж хэлэв

      ХАХАХАХА нах ... бага багаар 🙂
      Би Python-д шинэхэн шинэхэн хэвээр байгаа тул цаг, цагаа зориулах зав бараг байдаггүй тул удаан, тиймээ удаан, гэхдээ сурахдаа итгэлтэй байдаг.

  7.   Аудобан гэж хэлэв

    Маш их баярлалаа 😀 өчигдөрхөн би үүнийг яаж хийх вэ гэж бодож байсан.

  8.   Рейхск гэж хэлэв

    сувилагч нартай бол энэ нь гайхалтай юм

  9.   жазо гэж хэлэв

    1 үгээр ... САЙН!
    Удаан хугацааны турш би интернетээс татан авалт хийх скриптийг төгс төгөлдөржүүлж байсан боловч 1ro-г оршин тогтнолыг баталгаажуулалгүйгээр 1, дахин дахин хүссэн файлуудаа татаж авах асуудал тулгарсан.
    Маш сайн tuto.

  10.   зулан гэж хэлэв

    Чили улсаас оруулсан хувь нэмрийг үнэлж байна.
    Өдөр бүр LINUX намайг гайхшруулж,
    Чөлөөт програм хангамж МИЕРДААААА урт удаан наслаарай.

  11.   Дэвид гэж хэлэв

    үйлчлэх
    файлыг лавлахаас авсан эсэхийг шалгана уу

  12.   Гровер гэж хэлэв

    Хэрэв би «/ tmp / receivers» зам дээр ямар нэгэн файл байгаа эсэхийг шалгахыг хүсвэл ямар нэгэн тушаалыг гүйцэтгэ, энэ нь яаж байх вэ?

    Би маш их талархах болно

    Баярлалаа!

  13.   Хуан гэж хэлэв

    Эрхэм хүндэт файлыг бүрэн дүүргэсэн эсэхийг IF-ээр тодорхойлно уу ???. Файлыг дамжуулахад зориулж бөглөхдөө өгөгдлийн хагастай ч хамаагүй авах боломжтой тул би үүнийг асууж байна.

    Сайн байцгаана уу, таны хариултанд баярлалаа.

  14.   Инуказе гэж хэлэв

    Жишээ нь "файл байхгүй", "директор" байхгүй эсэхийг шалгана уу гэх мэт жишээг нэмж оруулах хэрэгтэй гэж бодож байна.

    байхгүй байгааг шалгахын тулд, жишээ нь хувьсагчийг ашиглана уу

    Лавлах лавлах

    #! / bin / bash
    Лавлах = »$ HOME / Туршилтын лавлах»
    Файл = »$ HOME / Туршилтын файл»

    хэрэв [! -d "$ лавлах"]; дараа нь
    echo "$ лавлах байхгүй"
    echo "Createing ->" $ Directory "
    mkdir "$ лавлах"
    бас
    echo "Лавлах" "Directory" аль хэдийн бий болсон
    fi

    хэрэв [! -d "$ File"]; дараа нь
    echo "$ File байхгүй байна"
    echo "Үүсгэх ->" $ File "
    "$ File" дээр хүрнэ үү
    бас
    echo "File" $ File "аль хэдийнэ бий болсон
    fi

    1.    Катэкио гэж хэлэв

      mkdir-ийг хийсний дараа терминал үүнийг үүсгэж болох эсэхийг шалгаарай, учир нь энэ нь root эсвэл системийн хавтас байвал бөмбөлгийг эвдэж болно hhah

  15.   Хулио Виначи гэж хэлэв

    Би curl ашиглахын тулд асуулга тавьсан KZKG ^ Gaara-ийн мэндчилгээ. Жишээлбэл, консолоос url-ийг ping хийх хүртэл яаж хийхээ мэдэхийг хүсч байна http://portal.com/directorio/archivo1.php File1 нь зочлох IP-г хадгалах газар бол би энэ IP-г үе үе өөрчлөгдөж, ssh холболт хийх боломжгүй тул олон цагаар мэдэж байхын тулд хагас цаг тутамд үүнийг хийх хэрэгтэй.

    Сайн байцгаана уу баярлалаа Бурхан танд ивээлээ.

    1.    KZKG ^ Гаара гэж хэлэв

      Сайн байна уу, чи яаж байна?

      Нэгдүгээрт, IP хувьсагч нь тухайн файлын агуулга гэдгийг хэлэх хэрэгтэй, ингэхийн тулд та дараахь зүйлийг хийх ёстой.
      1. Файлыг татаж авах
      2. Агуулгыг нь үзээд тэндээс IP авна уу
      3. IP бол хувьсагч юм

      Жишээ нь:
      Энд бид файлыг татаж авна уу - »wget http://portal.com/directorio/archivo1.php -o file.html
      Дараа нь бид түүний агуулгыг хувьсагч руу хуваарилна: - »: $ {IP: =` cat file.html`}
      .. тухайн файлын агуулга нь зөвхөн IP-тэй гэж үзвэл, хэрэв үгүй ​​бол grep, awk эсвэл head програмтай ажиллах хэрэгтэй болно.

      Хэрэв та IP-ийг аль хэдийн хувьсагч болгож авсан бол бусад нь дэлхийн хамгийн энгийн зүйл юм

      Хэрэв та намайг имэйлээр (kzkggaara [at] desdelinux [dot] net) бичихийг хүсч байвал би танд туслах болно

      1.    Хулио Виначи гэж хэлэв

        Kzkggaara маш их баярлалаа.

  16.   Наталья гэж хэлэв

    Сайн уу, би компьютерийн талаар сайн ойлгодоггүй бөгөөд энэ бичлэг надад тулгарсан асуудалтай холбоотой эсэхийг мэдэхгүй байна.

    Жилийн өмнөх бичлэг байсан ч гэсэн намайг уншсан бол би сэтгэгдэл үлдээж байна.
    Би зарим видеог хадгалахын тулд ширээнийхээ хавтсыг үүсгэсэн юм байна. За, би эдгээр видеог надад хэрэггүй болсон тул устгасан бөгөөд одоо энэ хавтас надад байхгүй (хэдийгээр энэ нь миний ширээний компьютер дээр харагдаж байгаа ч гэсэн) надад мэдэгдэж байна.

    - Энэ бол надад тулгараад байгаа анхны асуудал юм.
    Би фолдерыг устгаж чадахгүй байна.

    - Хоёрдахь асуудал, би илүү чухал гэж бодож байна:
    Фолдерыг устгахын тулд би PHOTOS хавтас байрлуулсан. Одоо "байхгүй" гэсэн хавтсыг нээхэд хоосон, ЗУРАГУУД байхгүй байна.

    Би зургийг хэрхэн сэргээх вэ? Би "Нууц баримтыг харуулах" хавтас дотор сонголтыг өгсөн боловч PHOTOS хавтас гарч ирэхгүй байна.

    Үүнийг хэрхэн шийдэж байгааг та мэдэж чадна гэж найдаж байна.
    та бүхэнд баярлалаа.

    1.    valdo гэж хэлэв

      Хамгийн гол хэрэглэгчид болох root ба your_user (жишээ нь natalia) гэсэн хоёр хэрэглэгчид байдаг. Тэд хоёулаа хувийн хавтастай байдаг. your_user in / home ба root in / (root директор). Фолдер дээр хулганы баруун товчийг дарж хэнийх болохыг хараарай. Хэрэв энэ нь sudo эсвэл gksu эсвэл kdesu ашиглан файлын менежертэйгээ root бол root сан -> root -> десктоп руу очоод зурагнуудыг олж магадгүй бөгөөд хавтсаа устгах боломжтой. Та файл эсвэл директорын эзэмшигч биш, хандалтын зөвшөөрөлгүй байх үеийн зарим хуваарилалтууд нь директор / файл байхгүй байгааг хэлж өгдөг. Хэрэв та эзэмшигч бөгөөд та root биш бол sudo гэх мэт файлын менежертэй ижил зүйлийг хийж root директор -> / home -> personal_folder -> Desktop руу ороод зурагнууд байгаа эсэхийг шалгаж устгаж болох эсэхийг шалгаарай. Хавтас.
      Хэрэв энэ нь ажиллахгүй бол та терминалаас (консол) бусад сонголтуудыг харах хэрэгтэй болно.

  17.   Педро Мануэль Агуайо Муньоз гэж хэлэв

    Сайн уу, сайн уу, би bash дээр ажил хийж байгаа, жишээ нь гараас оруулсан директор байгаа эсэхийг яаж шалгахаа мэдмээр байна.

    #! / bin / bash
    маршрутыг унших
    # Enter ~ / Desktop
    # Дараа нь би тэр лавлах хуудсыг удирдахыг хичээдэг
    cd $ path
    # Би дараах bash мессежийг авна: cd: ~ / Desktop: Файл эсвэл директор байхгүй байна

    Миний асуулт бол би үүнийг гараас оруулаад директорын зам болгон авахын тулд би юу хийж чадах вэ?

  18.   Мигель гэж хэлэв

    Бүлэг байгаа эсэхийг би яаж мэдэх вэ,

  19.   Хейди гэж хэлэв

    сайн Канагару товчлуурыг дарахад энэ асуудлыг шийдвэрлэхэд ямар ч файл, лавлах бичиг байхгүй, бусад нь кунагуаро нээхгүй байна гэж бичихэд миний канаймд асуудал гарлаа, баярлалаа.

  20.   Карлос гэж хэлэв

    Хэрэв файлын нэр хоосон зайтай бол BASH-д яаж хийх вэ?
    Жишээ нь:
    Дөрөвдүгээр сарын мэдээлэл.xlsx

    Файл байгаа эсэхийг асуух

    1.    Мануэль Алкокер Хименес гэж хэлэв

      Карлос, үүнтэй адил:

      хэрэв [["$ variable" == Data \ month \ of \ April.xlsx]]; дараа нь 'таарах' цуурай; fi

      Мөн дараахыг хийж болно:
      хэрэв [["$ variable" == 'XNUMX-р сарын мэдээлэл. xlsx']]; дараа нь 'таарах' цуурай; fi

      Өөр сонголт байна:
      [["$ Variable" == 'April.xlsx-ийн өгөгдөл']] && echo 'match' || цуурай 'таарахгүй байна'

      Интернетийн зарим харанхуй хэсэгт тэд [] -н оронд [[]] ашиглахыг зөвлөж байна, хэрэв та тоонуудыг харьцуулах гэж байгаа бол: ((хувьсагч> = 3)) && echo 'хувьсагч 3-аас их эсвэл тэнцүү байна | | echo 'хувьсагч 3-аас бага байна

      Тиймээс тоонуудын хувьд:

      хэрэв ((тоо! = 4)); дараа нь "$ {number} нь 4 биш" гэсэн цуурай; else echo "$ {number} is 4"; fi

  21.   Сезар Матеус гэж хэлэв

    Лавлах нь тодорхой тексттэй бол түүнийгээ засах боломжтой байхын тулд хэрхэн яаж баталгаажуулах кодыг хийж болох вэ?

    жишээ нь:

    хэрэв (текст1)

    юу ч хийхгүй

    бас

    текст1-ийг текст2 болгон өөрчлөх

  22.   Мигель гэж хэлэв

    асуулт, файл байгаа эсэхийг 15 секунд тутамд яаж шалгах вэ, баярлалаа.

  23.   голын эрэг гэж хэлэв

    Сайн байна уу,
    энэ:
    хэрэв [-w / home / Komun / Logs / ti]; дараа нь
    Файл нь бичигдэх боломжтой эсэхийг олж мэдэх. Гэхдээ энэ нь хэрэглэгчийн зөвшөөрөл дээр суурилдаг. Бүлэг эсвэл бусад нь зөвшөөрөлтэй эсэхийг олж мэдэх боломжтой юу?