Проверите да ли датотека или фасцикла постоје или не (и више) са ИФ петљом

Нисам ставио ништа од тога Басх, а то је да сам док сам улазио у чудесни свет Питхона заборавио мало на овог другог пријатеља који ми је толико помогао 🙂

Овде сам ставио нешто Башовим ентузијастима, као што и наслов каже ... Показаћу вам како да проверите да ли датотека или фасцикла постоје у систему или не, само користећи: if

Створићемо .сх датотеку и дати јој дозволе за извршење, за то је довољно да у терминал ставимо следећу наредбу:

додирни тест.сх && цхмод + к тест.сх

Ово што је урадио је да креира датотеку (тест додира.ш) и такође вам дају дозволе за извршење (цхмод + к тест.сх)

Онда напишимо у њега следеће:

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

Шта ово значи?

Једноставно 😀

У првом реду - » ако је [-д / опт /];

Овде се питамо, да ли постоји / опт / директоријум? Да директоријум / директоријум, јер -d означава директоријум или фасциклу.
Тада ћемо у случају да постоји исписати у терминалу «Да, постоји.»(Ово су редови 2 и 3)
У супротном и / опт / НЕ постоји, онда ћемо исписати «Не, то не постоји»(Редови 4 и 5)
Затим у последњем реду (број 6) затворимо иф и то је то.

Повезани чланак:
Успоставите мрежну везу између рачунара и виртуелних машина Виртуалбок

Направите тест, показаће вам да / опт / постоји.

Ако желите да вам покажем други текст (онај који не постоји), промените / одлучите / за било коју другу фасциклу која не постоји у вашем систему, на пример: / асд /

Као што видите, -д нам помаже да знамо постоји ли директоријум, па сада, ако променимо -д у -ф, то је да бисмо проверили постојање датотека (-д = директоријум, -ф = датотека / датотека)

На пример:

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. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Хуго дијо

    Други начин да то урадите без ако ... онда..елсе:

    test -f /etc/hosts && elcomando

    Или такође

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

    Итд.

    1.    КЗКГ ^ Гаара дијо

      Тачно 😀
      … О_О… Јеси ли ти Хуго, Хуго са Кубе? … Коришћење Виндовс8, ВТФ !!!

      1.    Хуго дијо

        Па да, упознајем се са овим ОС-ом и ако морам да будем искрен, једино што ми се учинило корисним је менаџер за копирање, у супротном лично сматрам да то мучи, посебно његов хибридни интерфејс и метро апликације. Свиђа ми се мање од Висте и 7 (мада мало ефикаснији од ових), што се ни мени није свидело. Једино за шта га користим је играње НФС13 и Скирим, али овај ОС заузима толико простора да сам морао да избришем Линук партицију [сниф].

        Међутим, ради вашег мирног ума, рећи ћу вам да сам прекјуче преузео Арцх ИСО за јануар и планирам да му дам мали тест у својој верзији к86-64, чим добијем репо (да ли ћете га добити?). Сад кад видим да подразумевано користи потписане пакете, даје ми више самопоуздања за роњење.

        И мој отац ми је такође рекао да ће ми послати Сони Ксперију, коју желим да искористим да научим неко програмирање за Андроид, што је била нерешена жеља. Тако се смири, још нисам прешао на тамну страну силе, буахахахаха 😉

  2.   патз дијо

    тест човека

    1.    МСКС дијо

      Наравно.

  3.   РАВ-Басиц дијо

    Венас! ..

    Могли бисмо направити исти .. ..али директоријум се прослеђује као параметар ..

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

    И ми то зовемо као:

    ./тест.сх / опт /

    Поздрав..

  4.   саво дијо

    АКО није циклус кД

  5.   Грегорио Еспадас дијо

    Одговара ми као рукавица за сценарио који радим. Да ли је ваљано користити џокер знакове? На пример, да бисте знали да ли постоји .мп4, покрените нешто на њима.

    ако је [-ф * .мп4];
    ...

    1.    РАВ-Басиц дијо

      Да, потпуно је валидно ..

      Чак и кроз параметре .. "* .мп4"

      1.    РАВ-Басиц дијо

        Нпр

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

        Ако га позовете: ./тест.сх * .мп4

        Ако пронађе .мп4 датотеке, брише их .. ..не наводи датотеке у том директоријуму ..

        1.    Грегорио Еспадас дијо

          Хвала на повратним информацијама и саветима! 🙂

        2.    Јоакуин дијо

          Промашио си ф кД

          рм -рф $ 1

          Ово је узбудљивије!

        3.    б1тблу3 дијо

          Дивно !!!, Сваким даном када се све више заљубљујем у Линук, Виндовс је пребачен у неки мрачни угао мог тврдог диска, који ће ускоро бити избрисан да уступи место светлости Линука.

          1.    РАВ-Басиц дијо

            Одлично! .. ..тада направите следећи корак .. и извадите га ..

            Пре 6 месеци На свим својим машинама имам само ГНУ / Линук и не треба ми више .. ..не В $ .. или Вине .. ..и ја сам више него срећан .. 😉

            И заражавам своју околину .. пошто ме сви виде мојим Арцхом, брзим, ефикасним и срећним .. ..и траже од мене да инсталирам Линук .. .. да! .. 😀

        4.    Инуказе дијо

          Можете их проверити и за различита проширења, можете користити нешто попут

          #! / бин / басх
          Директориј = $ ХОМЕ / Преузимања

          иф [$ Дирецтори]; онда
          ецхо "Ево листе типова датотека:"
          ецхо "мп1, мп2, мп3, мп4, вав, флац, флаад, ауд, миди"
          лс {* .мп ?, *. вав, *. фла, *. ауд * .миди}
          fi

          коришћење {} вам омогућава да одредите више додатака у овом случају, употреба „?“ , је џокер знак који вам омогућава да узмете „Било који знак“.

          Надам се да ће вам помоћи

        5.    педро дијо

          Препоручујем наредбу финд [директоријум] [образац_претраге] –екец [наредба] {} \

      2.    Карлос дијо

        Не ради, ставио сам ове датотеке у директоријум:
        АБ20160420.ТКСТ
        АБ20160421.ТКСТ
        АБ20160422.ТКСТ
        АБ20160423.ТКСТ
        АБ20160424.ТКСТ
        АБ20160425.ТКСТ
        сеарцх.сх

        #! / бин / басх
        ПУТ = / тмп / ТЕСТ
        цд $ РУТА
        лс -ла | авк '{принт »« $ 9} »
        ако је [[-ф АБ.ТКСТ]]; онда
        ецхо »Унесите ИФ ако постоји АБ
        .ТКСТ »
        fi
        ако је [-ф АБ20160422.ТКСТ]; онда
        ецхо "инпут за одређену АБ датотеку"
        fi

        кад ставим [-ф АБ.ТКСТ] даје грешку
        када сам ставио [[-ф АБ
        .ТКСТ]] не даје грешку, али не може да пронађе датотеку
        то функционише само када ставим одређену датотеку, на пример:
        ако је [-ф АБ20160422.ТКСТ]; онда

        Не могу да натерам да ради са џокер знаковима * или?

        1.    педро дијо

          #! / уср / бин / енв басх
          #.кодирање = утф-8.

          НАДЗОРНИЦИ

          ЕКСИТ_ОК ​​= 0
          ЕКСИТ_БАД = 66

          БОЛД = »\ 033 [1м»
          НЦ = »\ 033 [0м»
          ЦРВЕНА = »\ 033 [31м»

          ако [! "$ 1"];
          онда
          ецхо "недостаје параметар"
          излаз $ ЕКСИТ_БАД
          fi

          цд "$ 1"

          филес = »лс -х1 $ 1»

          за датотеку у $ ($ филес); урадите
          ецхо -е "овде можете све урадити са $ БОЛД $ филе $ нц"
          урадио

          изађи $ ЕКСИТ_ОК

  6.   МСКС дијо

    @КЗ, реци више о овоме: „и то зато што улазим у чудесни свет Питхона“!

    1.    КЗКГ ^ Гаара дијо

      ХАХАХАХА не ... мало по мало 🙂
      Ја сам још увек тек почетник у Питхону, тешко да имам времена да му посветим сате и сате, па сам спор да, спор али сигуран у учењу леарнинг

  7.   Аудобан дијо

    Пуно вам хвала 😀 баш јуче сам размишљао како то да урадим.

  8.   РеицхСк дијо

    ово са нцурсес је супер 🙂

  9.   јазецо дијо

    једном речју ... ОДЛИЧНО!
    Дуго сам усавршавао скрипту за преузимање са Интернета, али имао сам проблем што ће преузети датотеке које је тражио 1 и опет, а да није могао да верификује постојање 1ро.
    Врло добар туто.

  10.   зулан дијо

    Ценим огроман допринос, овде из Чилеа.
    Сваког дана ме више ЛИНУКС пријатно изненађује,
    Живео бесплатни софтвер МИЕРДАААА.

  11.   Давид дијо

    служити за
    проверите да ли је датотека из директоријума

  12.   Гровхер дијо

    Ако желим да проверим постојање било које датотеке у путањи «/ тмп / пријемници», извршите било коју наредбу, како би то било?

    Бићу вам веома захвалан

    поздрави

  13.   јохн дијо

    Поштовани, и да би ИФ утврдио да ли је датотека у потпуности попуњена ???. То питам, јер кад попуњавате датотеку за пренос, може је узети чак и са половином података.

    Поздрав и хвала на одговору.

  14.   Инуказе дијо

    Па, мислим да бисте требали додати и пример, као што је „Проверите да ли постоји„ „датотека“ или „директоријум“ као на пример

    да бисте проверили да НЕ постоји, на пример користите променљиву->

    А Дирецтори

    #! / бин / басх
    Именик = »$ ХОМЕ / Тест директоријум»
    Датотека = »$ ХОМЕ / Пробна датотека»

    ако [! -д "$ директоријум"]; онда
    ецхо "Нема $ директоријума"
    ецхо "Креирање ->" $ директоријум "
    мкдир "$ директоријум"
    друго
    ецхо "Директоријум" $ директоријум "већ постоји
    fi

    ако [! -д "$ датотека"]; онда
    ецхо "Датотека $ не постоји"
    ецхо "Креирање ->" $ Филе "
    додирните „$ Филе“
    друго
    ецхо "Филе" $ Филе "већ постоји
    fi

    1.    Катекио дијо

      када касније проверите мкдир да ли би терминал могао да га креира јер може да разбије куглице ако је то директоријум као роот или систем ххах

  15.   Јулио Винацхи дијо

    Поздрав КЗКГ ^ Гаара упит како бих учинио да користим цурл. Желео бих да знам како могу да пингам урл са конзоле да видим да ли је доступан, на пример http://portal.com/directorio/archivo1.php Тамо где ће филе1 чувати ИП адресе за посету, за надгледање тима треба да направим тај пин сваких пола сата како бих био упознат са јавним ИП-ом, јер се с времена на време мења и не могу да се повежем ссх-ом .

    Поздрав хвала унапред Бог вас благословио.

    1.    КЗКГ ^ Гаара дијо

      Здраво, како иде

      Прво морате да кажете да је ИП променљива (на пример) садржај те датотеке, за то морате:
      1. Преузмите датотеку
      2. Погледајте његов садржај и узмите ИП одатле
      3. Тај ИП је променљива

      На пример:
      Овде преузимамо датотеку - »вгет http://portal.com/directorio/archivo1.php -о филе.хтмл
      Тада променљивој додељујемо њен садржај: - »: $ {ИП: =` цат филе.хтмл`}
      .. под претпоставком да садржај те датотеке има само ИП, ако не, мораћете да радите са греп, авк или хеад.

      Једном када већ имате ИП као променљиву, остало је најједноставнија ствар на свету 🙂

      Ако желите, пишите ми на мејл (кзкггаара[ат]desdelinux[тачка]нет) Радо ћу вам помоћи

      1.    Јулио Винацхи дијо

        Велико хвала кзкггаара врло захвална.

  16.   Наталија дијо

    Здраво, не разумем се много у рачунарство и не знам да ли је овај пост повезан са проблемом који имам.

    Коментирам у случају да ме прочитате, иако је објава од пре годину дана:
    Испоставило се да сам на радној површини створио фасциклу за чување неких видео записа. Па, избрисао сам те видео записе јер ми више нису били потребни, а сада ми овај фолдер каже да не постоје (иако су видљиви на мојој радној површини).

    - То је први проблем који имам:
    Не могу да избришем фасциклу.

    - Други проблем и мислим да је важнији:
    У покушају да избришем фасциклу, ставио сам фасциклу ФОТОГРАФИЈЕ. Сада када отворим фасциклу која „не постоји“, празна је и ФОТОГРАФИЈА није ту.

    Како могу да вратим фотографије? Дао сам опцију унутар фасцикле „Прикажи скривене документе“, али фасцикла ФОТОГРАФИЈЕ се не појављује.

    Надам се да можете знати како се то решава.
    Хвала.

    1.    валдо дијо

      Два су главна корисника: роот и иоур_усер (наталиа на пример). Обоје имају личне фасцикле. ваш_корисник у / хоме и роот у / (роот ​​директоријум). Кликом десног клика на фасциклу погледајте коме припада. Ако је роот код вашег менаџера датотека користећи судо или гксу или кдесу, у зависности од окружења које користите идите у основни директоријум -> роот -> Десктоп и вероватно ћете пронаћи фотографије и можете избрисати фасциклу. Неке дистрибуције када нисте власник датотеке или директоријума и немате дозволе за приступ кажу вам да директоријум / датотека не постоји. Ако сте власник, а нисте роот, учините исто са менаџером датотека са судо, итд. И идите у основни директоријум -> / хоме -> персонал_фолдер -> Десктоп и погледајте да ли су слике ту и да ли можете да избришете фолдер.
      Ако ово не успе, мораћете да видите друге опције на терминалу (конзоли).

  17.   Педро Мануел Агуаио Муноз дијо

    Здраво како си?

    #! / бин / басх
    прочитана рута
    #Ентер ~ / Десктоп
    # Тада покушавам да се крећем кроз тај директоријум
    цд $ путања
    # Добио сам следећу басх поруку: цд: ~ / Десктоп: Датотека или директоријум не постоје

    Моје питање је, шта могу учинити да га унесем са тастатуре и узмем као пут директоријума?

  18.   Мигуел дијо

    И како могу знати да ли група постоји,

  19.   хеиди дијо

    добро Имам проблем у канаму када притиснем дугме цунагуаро, пише да не постоји датотека или директоријум као што би то учинило да се реши тај проблем, а остало се не отвара цунагуаро, молим вас хвала.

  20.   Карлос дијо

    Како се ради ако у БАСХ-у ако назив датотеке има размаке?
    На пример:
    Подаци за април.клск

    Да бисте питали да ли датотека постоји

    1.    Мануел Алцоцер Јименез дијо

      Царлос, овако:

      ако [["$ променљива" == Подаци \ месец \ од \ априла.клск]]; затим одјек 'подударање'; фи

      Такође можете:
      иф [["$ вариабле" == 'Подаци за месец април.клск']]; затим одјек 'подударање'; фи

      Друга опција:
      [["$ Вариабле" == 'Подаци за месец април.клск']] && ецхо 'подударања' || ехо 'се не подудара'

      У неким тамним деловима Интернета препоручују употребу [[]] уместо [], а ако ћете упоређивати бројеве: ((променљива> = 3)) && ецхо 'променљива је већа или једнака 3' || ецхо 'променљива је мања од 3'

      Према томе, за бројеве:

      иф ((број! = 4)); тада ехо "$ {број} није 4"; иначе ехо "$ {број} је 4"; фи

  21.   Цесар Матеус дијо

    Како можете направити код за потврду ако директоријум има одређени текст, како бисте могли да га уредите.

    пример:

    ако (текст1)

    не ради ништа

    друго

    промените тект1 у тект2

  22.   Мигуел дијо

    питање, како би било проверити сваких 15 секунди да ли датотека постоји или не, хвала.

  23.   Речна обала дијо

    Здраво,
    ово:
    иф [-в / хоме / Комун / Логс / ти]; онда
    Откријте да ли је датотека за писање. Али заснива се на корисничким дозволама. Да ли се то може учинити како би се сазнало да ли група или остали имају дозволе?