IF цикли менен файл же папка бар же жок экендигин (жана андан көп) текшерүү

Мен эч нерсе койгон жокмун БашОшентип, мен Python керемет дүйнөсүнө киргенде, мага ушунчалык жардам берген башка досум жөнүндө бир аз унутуп калдым

Бул жерде мен Баш энтузиастарына бир нерсе койдум, аталышында айтылгандай ... Мен сизге тутумда файл же папка бар же жок экендигин кантип текшерүүнү көрсөтөм, жөн гана: 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

Бул эмне кылат?

Жөнөкөй 😀

Биринчи сапта - » if [-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 - »Белгилүү бир файлдын аткарууга уруксаты бар экендигин текшериңиз.

Ошондой эле кошууга дагы көп нерсе жок 🙂

Башта программалоону жактыргандар үчүн бул абдан пайдалуу жана кызыктуу болоорун билем😉

Урматтоо менен


Макаланын мазмуну биздин принциптерге карманат редакциялык этика. Ката жөнүндө кабарлоо үчүн чыкылдатыңыз бул жерде.

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 ^ Gaara ал мындай деди:

      Right 😀
      … O_O… Сиз Уго, Кубадан келген Угосузбу? … Windows8, WTF колдонуп !!!

      1.    Уго ал мындай деди:

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

        Бирок, жан дүйнөңүздүн тынчтыгы үчүн, мен айтаарым: мен бир күн мурун Arch ISO үчүн январь айын жүктөп алдым жана репону алаарым менен x86-64 нускасында бир аз тест тапшырайын деп жатам (макулбу? барбы?). Эми мен көрүп турам, демейки шартта, кол коюлган пакеттерди колдонот, мага сүңгүүгө көбүрөөк ишеним берет.

        Ошондой эле менин атам мага Sony Xperia жөнөтө тургандыгын айтты, мен аны күтүп жаткан каалоо болгон Android үчүн программалоону үйрөнгүм келип жатат. Ошентип тынчтаныңыз, мен күчтүн караңгы тарабына өтө элекмин, буахахахаха 😉

  2.   patz ал мындай деди:

    адам тест

    1.    ажыдыш ал мындай деди:

      Албетте.

  3.   RAW-Basic ал мындай деди:

    Венас! ..

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

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

    Биз аны төмөнкүдөй деп атайбыз:

    ./test.sh / opt /

    Саламдашуу ..

  4.   savo ал мындай деди:

    IF xD цикли эмес

  5.   Грегорио Эспадас ал мындай деди:

    Бул мен жазып жаткан сценарий үчүн мээлейдей жарашат. Шарттуу белгилерди колдонуу жарактуубу? Мисалы .mp4s бар же жок экендигин билүү үчүн, аларга бир нерсе иштетип коюңуз.

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

    1.    RAW-Basic ал мындай деди:

      Ооба, ал толугу менен жарактуу ..

      Параметрлер аркылуу дагы .. "* .mp4"

      1.    RAW-Basic ал мындай деди:

        Мисалы,

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

        Эгер сиз аны чакырсаңыз: ./test.sh * .mp4

        Эгерде .mp4 файлдарды тапса, аларды жок кылат .. .. бирок ал каталогдогу файлдарды тизмеге киргизбейт ..

        1.    Грегорио Эспадас ал мындай деди:

          Пикириңиз жана кеңештериңиз үчүн рахмат! 🙂

        2.    Joaquin ал мындай деди:

          Сиз f xDди сагындыңыз

          rm -rf $ 1

          Бул дагы кызыктуу!

        3.    b1tblu3 ал мындай деди:

          Керемет !!!, Күн сайын мен Linuxту көбүрөөк сүйүп калам, Windows менин катуу дискимдин караңгы бурчуна жылдырылып, Linuxтун жарыгына жол берүү үчүн өчүрүлөт.

          1.    RAW-Basic ал мындай деди:

            Мыкты! .. ..Анан кийинки кадамды жасап, аны чыгарып алыңыз ..

            6 ай мурун болжол менен. Менин баардык машиналарымда GNU / Linux гана бар, андан ашыкча нерсенин кереги жок .. .. W $ .. же Wine жок .. ..жана мен ошончолук бактылуумун .. 😉

            Айлана-чөйрөмө жуктуруп жатам .. анткени баары мени Арчымды көрүп, тез, эффективдүү жана бактылуу болушат .. .. жана алар Linuxту орнотуумду суранышат .. ..ааааа! .. 😀

        4.    Inukaze ал мындай деди:

          Ошондой эле, аларды ар кандай кеңейтүүлөр үчүн текшерсе болот, сиз ушул сыяктуу бир нерсени колдоно аласыз

          #! / bin / bash
          Каталог = $ HOME / Жүктөөлөр

          if [$ Directory]; анда
          echo "Бул жерде Файл түрлөрүнүн тизмеси:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          {} колдонуу бул учурда бир нече кеңейтүүлөрдү көрсөтүүгө мүмкүндүк берет, "?" , "Каалаган Каармандарды" алууга мүмкүнчүлүк берген орчундуу шарт.

          Бул сизге жардам берет деп ишенем

        5.    Педро ал мындай деди:

          Find [directory] [search_pattern] –exec [command] {} \ командасын сунуштайм

      2.    Карлос ал мындай деди:

        Бул иштебей жатат, мен бул файлдарды каталогго киргиздим:
        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}'
        if [[-f AB.TXT]]; анда
        echo »Эгерде кандайдыр бир АВ бар болсо, IF киргизиңиз
        .TXT »
        fi
        if [-f AB20160422.TXT]; анда
        echo "белгилүү бир AB файлына киргизүү"
        fi

        мен [-f AB койгондо.TXT] ката берет
        качан мен [[-f AB] койду
        .TXT]] ката бербейт, бирок файлды таба албайт
        ал белгилүү бир файлды койгондо гана иштейт, мисалы:
        if [-f AB20160422.TXT]; анда

        Мен аны шарттуу белгилер менен иштей албай жатам * же?

        1.    Педро ал мындай деди:

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

          КОНСТАНТТАР

          EXIT_OK = 0
          EXIT_BAD = 66

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

          if [! "$ 1"];
          ошондо
          echo "параметр жок"
          $ EXIT_BAD чыгуу
          fi

          cd "$ 1"

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

          $ ($ файлдары) файл үчүн; эмне
          echo -e "бул жерде $ BOLD $ file $ nc менен эч нерсе жасай албайсыз"
          аткарылган

          $ EXIT_OK чыгуу

  6.   ажыдыш ал мындай деди:

    @KZ, бул тууралуу көбүрөөк маалымат бериңиз: "жана мен Python керемет дүйнөсүнө кирип жаткандыгым үчүн"!

    1.    KZKG ^ Gaara ал мындай деди:

      ХАХАХАХА нах ... аз-аздан 🙂
      Мен дагы эле Python үчүн жаңы үйрөнчүмүн, ага сааттарды жана сааттарды арнаганга убактым жок, ошондуктан мен жай, ооба, бирок өзүмдүн билимиме бекем ишенем

  7.   Audoban ал мындай деди:

    Чоң рахмат 😀 кечээ эле мен муну кантип жасасам деп ойлонуп жаттым.

  8.   ReichSk ал мындай деди:

    бул медайымдар менен сонун 🙂

  9.   jazeco ал мындай деди:

    1 сөз менен ... МЫКТЫ!
    Көптөн бери Интернеттен жүктөөлөрдү жүргүзүү үчүн сценарийди өркүндөтүп келгем, бирок 1ro бар экендигин текшере албай туруп, 1-жолу сураган файлдарды жүктөп алууда көйгөй келип чыкты.
    Абдан жакшы туто.

  10.   зулан ал мындай деди:

    Чилиден келген зор салым, жогору бааланат.
    Күн сайын көбүрөөк LINUX мени таң калтырат,
    Жашасын Акысыз Программа MIERDAAAA.

  11.   Дөөтү ал мындай деди:

    үчүн кызмат кылуу
    файл каталогдон экендигин текшерүү

  12.   Grovher ал мындай деди:

    «/ Tmp / receivers» жолундагы кандайдыр бир файлдын бар экендигин текшергим келсе, кандайдыр бир буйрукту аткарыңыз, ал кандай болмок?

    Мен абдан ыраазы болом

    Урматтоо менен

  13.   Juan ал мындай деди:

    Урматтуу, эгер файл толугу менен толгон болсо, анда IF тарабынан аныкталат ???. Мен муну суранам, анткени сиз файлды өткөрүп берүү үчүн толтуруп жатсаңыз, ал маалыматтын жарымы менен деле кабыл алат.

    Салам жана жооп үчүн рахмат.

  14.   Inukaze ал мындай деди:

    Ошондой эле, мисалы, "Файл" же "каталог" жок экендигин текшериңиз "сыяктуу мисалдарды кошуңуз деп ойлойм.

    анын ЖОК экендигин текшерүү үчүн, мисалы, өзгөрмө-> колдонуңуз

    Каталог

    #! / bin / bash
    Каталог = »$ HOME / Test Directory»
    Файл = »$ HOME / Файлды текшерүү»

    if [! -d "$ Каталог"]; анда
    echo "$ Directory жок"
    echo "Createing ->" $ Directory "
    mkdir "$ Каталог"
    дагы
    echo "Каталог" "Каталог" мурунтан эле бар
    fi

    if [! -d "$ File"]; анда
    echo "Файл $ жок"
    echo "Creating ->" $ File "
    "$ File" баскычын басыңыз
    дагы
    echo "File" $ File "мурунтан эле бар
    fi

    1.    Katekyo ал мындай деди:

      mkdirди жасаганыңызда, терминал аны түзө алабы, жокпу, текшерип көрүңүз, анткени ал папка тамыр же тутум болсо, анда ал топторду сындыра алат hhah

  15.   Хулио Виначи ал мындай деди:

    Саламдашуу KZKG ^ Гаара, мен тармалды кантип колдоно алам деген суроо. Мен, мисалы, бар же жок экендигин билүү үчүн, url пинг чейин консолунан кантип жасоону билгим келет http://portal.com/directorio/archivo1.php File1 зыярат IPлерин кайда сактай тургандыгын, бул команданы көзөмөлдөө үчүн, мен ар бир жарым саат сайын бир пин жасашым керек, ошондуктан мен коомдук IP жөнүндө кабардар болуп турам, анткени ал мезгил-мезгили менен өзгөрүлүп турат жана мен ssh менен туташа албайм.

    Салам алдын ала рахмат Кудай колдосун.

    1.    KZKG ^ Gaara ал мындай деди:

      Hello, мисалы,

      Биринчиден, 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.   Наталия ал мындай деди:

    Салам, мен эсептөө жөнүндө көп нерсени түшүнбөйм жана бул билдирүү менде болгон көйгөйгө байланыштуу экендигин билбейм.

    Пост мындан бир жыл мурун болсо дагы, сиз мени окуган болсоңуз, комментарий берем:
    Көрсө, мен бир нече видеону сактоо үчүн жумушчу столумдан папка түздүм. Ооба, мен ал видеолорду жок кылдым, анткени мага кереги жок болуп калды, эми бул папка мага ал жок экендигин айтат (ал менин жумушчу столумда көрүнүп турса дагы).

    - Менде биринчи көйгөй ушул:
    Мен папканы өчүрө албай жатам.

    - Экинчи маселе, мен ойлойм:
    Папканы жок кылуу үчүн, мен ФОТО папкасын койдум. Азыр "жок" папканы ачсам, бош, ал эми СҮРӨТТӨР жок.

    Сүрөттөрдү кантип калыбына келтирсем болот? Мен "Жашыруун документтерди көрсөтүү" папкасынын ичинде параметр бердим, бирок ФОТО папкасы көрүнбөйт.

    Анын кандайча чечилгенин биле аласыз деп ишенем.
    рахмат.

    1.    Valdo ал мындай деди:

      Негизги эки колдонуучу бар: root жана your_user (мисалы, Наталья). Экөөндө тең жеке папкалар бар. your_user in / home жана root in / (root каталог). Папканы чыкылдатуу менен ал кимге таандык экендигин көрүңүз. Эгер ал файл менеджериңизде root болсо, колдонулган чөйрөгө жараша sudo же gksu же kdesu колдонуп, root каталогуна өтүңүз -> root -> Desktop, ошондо сиз сүрөттөрдү таап, папканы жок кылсаңыз болот. Файлдын же каталогдун ээси болбогон жана кирүүгө уруксатыңыз жок болгон учурдагы айрым дистрибьютерлер каталог / файл жок экендигин айтышат. Эгер сиз ээси болсоңуз жана сиз root эмес болсоңуз, анда sudo ж.б. файл файл менеджери менен ушул нерсени аткарыңыз жана root каталогуна өтүңүз -> / home -> personal_folder -> Desktop жана сүрөттөр ошол жерде бар-жогун жок кыла аласызбы папка.
      Эгер бул иштебей калса, терминалдан (консоль) башка параметрлерди көрүшүңүз керек.

  17.   Педро Мануэль Агуайо Муньоз ал мындай деди:

    Саламатсызбы, кандайсыз? Мен башта бир жумуш жасап жатам жана мисалы, клавиатурадан киргизилген каталог бар экендигин кантип текшерүүнү билгим келет.

    #! / bin / bash
    маршрутту окуу
    # Enter ~ / Desktop
    # Андан кийин мен ошол каталогду багыттаганга аракет кылам
    cd $ path
    # Мен төмөнкү баш билдирүүнү алам: cd: ~ / Desktop: Файл же каталог жок

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

  18.   Мигел ал мындай деди:

    Топтун бар-жогун кантип билсем болот,

  19.   кызуу ал мындай деди:

    жакшы Кунагаро баскычын басканда Канаймада көйгөй келип чыкты, анда бул көйгөйдү чечүү үчүн бир дагы файл же каталог жок, калгандары кунагаро ачылбай жатат деп суранам, рахмат.

  20.   Карлос ал мындай деди:

    Эгерде файлдын атында боштук болсо, анда BASHда кантип жасай аласыз?
    Мисалы:
    April data.xlsx

    Файлдын бар же жок экендигин сураш үчүн

    1.    Manuel Alcocer Хименес ал мындай деди:

      Карлос, ушул сыяктуу:

      if [["$ variable" == Маалыматтар \ ай \ Апрель.xlsx]]; анда 'дал келүү' жаңырыгы; fi

      Ошондой эле:
      if [["$ variable" == 'Апрель айындагы маалыматтар .xlsx']]; анда 'дал келүү' жаңырыгы; fi

      Дагы бир тандоо:
      [["$ Variable" == 'April.xlsx үчүн маалыматтар']] && echo 'match' || echo 'дал келбейт'

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

      Ошондуктан, сандар үчүн:

      if ((сан! = 4)); анда "$ {number} 4 эмес" деген жаңырык; else echo "$ {number} is 4"; fi

  21.   Сезар Матеус ал мындай деди:

    Каталогдо белгилүү бир текст бар болсо, аны оңдоо үчүн, кантип текшерүү керек.

    мисалы:

    эгер (текст1)

    эч нерсе кылбоо

    дагы

    текст1ди текст2ге өзгөртүү

  22.   Мигел ал мындай деди:

    Суроо, эгер файл бар болсо же жок болсо, аны 15 секунд сайын кантип текшерип турмаксыз, рахмат.

  23.   дарыянын жээги ал мындай деди:

    салам,
    бул:
    if [-w / home / Komun / Logs / ti]; анда
    Файл жазууга жарамдуулугун билип алыңыз. Бирок ал колдонуучунун уруксатына негизделген. Топтун же башкалардын уруксаты бар-жогун билүү үчүн жасаса болобу?