Санҷед, ки оё файл ё ҷузвдон мавҷуд аст ё не (ва бештар) бо ҳалқаи IF

Ман чизе аз гузошта нашудааст Bash, ва ин аст, ки ҳангоми ворид шудан ба ҷаҳони аҷиби Python ман каме дар бораи ин дӯсти дигаре, ки ба ман ин қадар кӯмак кардааст, фаромӯш кардаам 🙂

Ин аст чизе барои ҳавасмандони Баш, чунон ки дар сарлавҳа гуфта мешавад ... Ман ба шумо нишон медиҳам, ки чӣ гуна файл ё ҷузвдон дар система вуҷуд дорад ё не, танҳо бо истифода аз: if

Мо файли .sh эҷод карда, иҷозат медиҳем, ки барои ин танҳо фармони зеринро дар терминал гузорем:

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

Ин чӣ кор кард, эҷоди файл (touch.sh санҷед) ва инчунин ба шумо иҷозатҳоро иҷозат диҳед (chmod + x test.sh)

Пас биёед дар он чизҳои зеринро нависем:

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

Ин чӣ кор мекунад?

Simple оддӣ

Дар сатри аввал - » агар [-d / opt /];

Дар ин ҷо мо мепурсем, ки оё / opt / директория вуҷуд дорад? Бале директория / ҷузвдон, зеро -d маънои директория ё ҷузвдонро дорад.
Пас, агар он вуҷуд дошта бошад, мо онро дар терминали «Бале, он вуҷуд дорад.»(Ин сатри 2 ва 3 аст)
Дар акси ҳол ва / opt / вуҷуд надорад, пас мо чоп мекунем «Не он вуҷуд надорад»(Сатрҳои 4 ва 5)
Пас дар сатри охирин (рақами 6) мо ifро бастем ва тамом.

Мақолаи марбут:
Байни компютер ва мошинҳои виртуалии Virtualbox пайвасти шабакаро барқарор кунед

Санҷишро санҷед, он ба шумо нишон медиҳад, ки / opt / вуҷуд дорад.

Агар шумо хоҳед, ки ман матни дигарро (матнеро, ки вуҷуд надорад) ба шумо нишон диҳам, тағир диҳед / opt / барои ягон ҷузвдони дигаре, ки дар системаи шумо мавҷуд нест, масалан: / asd /

Тавре ки шумо мебинед, -d ба мо кӯмак мекунад, ки феҳристи мавҷудбударо фаҳмед, акнун агар мо -d ба -f гузарем, ин санҷиши мавҷудияти файлҳо мебошад (-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.    КЗКГ ^ Гаара Диго

      Рост 😀
      … О_О… Шумо Уго ҳастед, Уго аз Куба? ... Бо истифода аз Windows8, WTF !!!

      1.    Уго Диго

        Хуб, ҳа, ман бо ин OS ошно мешавам ва агар ошкоро бояд гуфт, танҳо чизе, ки ба ман муфид ёфтааст, ин менеҷери нусхабардорӣ аст, вагарна ман шахсан онро зараррасон мебинам, алахусус интерфейси гибридии он ва замимаҳои метро. Ин ба ман камтар аз Vista ва 7 маъқул аст (гарчанде ки каме самарабахштар аз инҳо), ки ин ҳам ба ман писанд набуд. Ягона чизе, ки ман барои он истифода мекунам, ин бозӣ кардани NFS13 ва Skyrim аст, аммо ин OS он қадар ҷойро ишғол мекунад, ки ман маҷбур шудам ҳиҷобҳои Linux [snif] -ро нест кунам.

        Аммо, барои оромии рӯҳии шумо, ман ба шумо мегӯям, ки як рӯз пеш ман Arch ISO-ро барои моҳи январ зеркашӣ кардам ва ман ният дорам, ки баробари ба даст овардани репо ба он каме озмоиш диҳам (нусхаи x86-64) (шумо онро доред?). Ҳоло, ки ман дидам, ки он бастаҳои имзошударо бо нобаёнӣ истифода мебарад, ин ба ман эътимоди бештар ба ғаввосӣ медиҳад.

        Ва падари ман инчунин ба ман гуфт, ки ба ман Sony Xperia фиристад, ки ман мехоҳам аз он истифода бурда, баъзе барномасозиро барои Android омӯзам, ки ин орзуи интизор буд. Пас ором шавед, ман то ҳол ба тарафи торикии нерӯ нарафтаам, буаҳахахаха 😉

  2.   патз Диго

    озмоиши мард

    1.    msx Диго

      Дуруст аст.

  3.   RAW - Basic Диго

    Вена! ..

    Мо метавонистем ҳамон якро созем .. ..вале директория ҳамчун параметр гузаронида мешавад ..

    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 - 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 .. .. на шароб .. ..ва ман аз ин зиёдтар хушҳолам .. 😉

            Ва ман атрофамро сироят мекунам .. зеро ҳама маро бо Arch, зуд, муассир ва хушбахт мебинанд .. ..ва аз ман хоҳиш мекунанд, ки Linux насб кунам .. ..ааа! .. 😀

        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
        лс -ла | awk '{print »« $ 9}'
        агар [[-f AB.ХАТ]]; пас
        echo »Агар IF мавҷуд бошад, IF ворид кунед
        .ХАТ "
        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м»
          СУРХ = »\ 033 [31м»

          агар [! "$ 1"];
          баъд
          echo "параметр намерасад"
          баромадан $ EXIT_BAD
          fi

          CD "$ 1"

          файлҳо = »ls -h1 $ 1»

          барои файл дар $ ($ файлҳо); кардан
          echo -e "шумо метавонед бо $ BOLD $ file $ nc дар ин ҷо ҳама чизро иҷро кунед"
          иҷро

          баромадан $ EXIT_OK

  6.   msx Диго

    @KZ, дар ин бора маълумоти бештар диҳед: «ва ин аст, ки ман ба ҷаҳони аҷиби Python ворид мешавам»!

    1.    КЗКГ ^ Гаара Диго

      ХАХАХАХА нах ... охиста-охиста 🙂
      Ман то ҳол танҳо як навини Python ҳастам, ман душвор аст, ки соат ва соатро ба он бахшам, аз ин рӯ суст, бале, суст, аммо дар омӯзиши худ итминон дорам 😀

  7.   Аудобан Диго

    Ташаккури зиёд 😀 дирӯз ман фикр мекардам, ки чӣ тавр ин корро кардан лозим аст.

  8.   ReichSk Диго

    ин бо ҳамшираҳо бузург аст 🙂

  9.   ҷазо Диго

    дар 1 калима ... ОЛИЛ!
    Муддати дароз ман як скриптро барои зеркашӣ аз Интернет такмил медодам, аммо ман бо мушкилоти зеркашии файлҳое, ки 1 ва боз дархост кардам, бидуни тасдиқи мавҷудияти 1ro дучор шудам.
    Туто хеле хуб.

  10.   зулан Диго

    Саҳми бебаҳо, дар ин ҷо аз Чили қадр карда мешавад.
    Ҳар рӯз бештар LINUX маро ба ҳайрат меорад,
    Зинда бод нармафзори ройгон MIERDAAAA.

  11.   Довуд Диго

    хизмат кардан
    санҷед, ки оё файл аз директория аст

  12.   Гровер Диго

    Агар ман мехоҳам мавҷудияти ягон файлро дар роҳи «/ tmp / receivers» тафтиш кунам, ягон фармонро иҷро кунам, чӣ гуна мебуд?

    Ман хеле миннатдор хоҳам буд

    Бо тавзеҳот ҷавоб диҳед

  13.   Хуан Диго

    Азиз, ва муайян кардани он, ки оё файл пурра пур карда шудааст ???. Ман инро мепурсам, зеро вақте ки шумо файлро барои интиқол пур мекунед, он ҳатто бо нисфи маълумот онро гирифта метавонад.

    Салом ва ташаккур барои посух.

  14.   Инуказе Диго

    Хуб, ман фикр мекунам, ки шумо низ бояд мисоле илова кунед, ба монанди "Тафтиш кунед, ки" файл "ё" директория "вуҷуд надорад, масалан

    барои санҷидани он, ки он НЕСТ, масалан тағирёбанда-> -ро истифода баред

    Директория

    #! / bin / bash
    Директория = »$ HOME / Директори тестӣ»
    Файл = »$ HOME / Санҷиши файл»

    агар [! -d "Директория"]; пас
    echo "Директория нест $"
    echo "Createing ->" $ Directory "
    mkdir "$ Directory"
    боз
    echo "Директория" $ Directory "аллакай мавҷуд аст
    fi

    агар [! -d "$ File"]; пас
    echo "Файл $ вуҷуд надорад"
    echo "Createing ->" $ File "
    "$ File" -ро ламс кунед
    боз
    echo "File" $ File "аллакай вуҷуд дорад
    fi

    1.    Катекио Диго

      вақте ки шумо mkdir -ро месанҷед, пас оё терминал онро сохта метавонад, зеро он метавонад тӯбҳоро шиканад, агар он папка ҳамчун реша ё система бошад hhah

  15.   Хулио Виначи Диго

    Салом ба KZKG ^ Gaara як дархосте, ки ман барои истифодаи curl анҷом медиҳам. Ман мехоҳам бидонам, ки чӣ гуна ман аз консол то пинг url кор мекунам, то бубинам, ки он барои мисол дастрас аст ё не http://portal.com/directorio/archivo1.php Дар он ҷое, ки file1 IP-ҳои боздидро нигоҳ медорад, барои назорат кардани гурӯҳе лозим аст, ки ман бояд ин пинро ҳар ним соат созам, то ман аз IP ҷамъиятӣ огоҳ бошам, зеро он гоҳ-гоҳ тағйир меёбад ва ман наметавонам бо ssh пайваст шавам.

    Салом пешакӣ ташаккур худованд шуморо нигаҳбон бошад.

    1.    КЗКГ ^ Гаара Диго

      Хуб, чӣ хел меравам

      Аввалан, шумо бояд бигӯед, ки тағирёбандаи 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.    Хулио Виначи Диго

        Ташаккури зиёд кзкггаара хеле миннатдорам.

  16.   Наталя Диго

    Салом, ман дар бораи компютер бисёр чизҳоро намефаҳмам ва намедонам, ки ин навишта ба мушкили ман вобаста аст ё не.

    Ман дар ҳолате, ки шумо маро хондаед, шарҳ медиҳам, гарчанде ки навиштаҷот як сол пеш аст:
    Маълум шуд, ки ман дар мизи кории худ папкае сохтаам, то баъзе видеоҳоро нигоҳ дорам. Хуб, ман он видеоҳоро нест кардам, зеро ман дигар ба онҳо ниёз надоштам ва ҳоло ин папка ба ман мегӯяд, ки он вуҷуд надорад (ҳарчанд он дар мизи кории ман намоён аст).

    - Ин аввалин мушкилоти ман аст:
    Ман ҷузвдонро нест карда наметавонам.

    - Проблемаи дуюм ва ман муҳимтар мешуморам:
    Бо мақсади нест кардани ҷузвдон, ман папкаи АКСҳоро гузоштам. Ҳоло вақте ки папкаро мекушоям, ки "вуҷуд надорад" холӣ аст ва АКСҲО дар он ҷо нестанд.

    Чӣ тавр ман аксҳоро барқарор карда метавонам? Ман параметрро дар дохили ҷузвдони "Нишон додани ҳуҷҷатҳои пинҳоншуда" додам, аммо ҷузвдони АКСҳо пайдо намешавад.

    Умедворам, ки шумо медонед, ки чӣ гуна ҳал шудааст.
    Ташаккур.

    1.    лоақал Диго

      Ду корбаре ҳастанд, ки асосӣ ҳастанд: root ва your_user (масалан, natalia). Ҳардуи онҳо ҷузвдонҳои шахсӣ доранд. your_user in / home ва root in / (директорияи root). Бо зеркунии клик ба ҷузвдон бубинед, ки он ба кӣ тааллуқ дорад. Агар он бо мудири файлатон бо истифодаи sudo ё gksu ё kdesu реша бошад, вобаста аз муҳите, ки шумо истифода мебаред, ба каталоги root -> root -> Desktop гузаред ва шумо эҳтимолан аксҳоро пайдо мекунед ва шумо метавонед ҷузвдонро нест кунед. Баъзе паҳнкуниҳо, вақте ки шумо соҳиби файл ё директория нестед ва иҷозати дастрасӣ надоред, ба шумо директор / файл мавҷуд нестанд. Агар шумо соҳиби он бошед ва шумо реша надошта бошед, инро бо мудири файл бо sudo ва ғайра анҷом диҳед ва ба каталоги root -> / home -> personal_folder -> Desktop гузаред ва бубинед, ки оё аксҳо дар он ҷо ҳастанд ва оё шумо метавонед онҳоро нест кунед ҷузвдон.
      Агар ин кор накунад, шумо бояд имконоти дигарро аз терминал (консол) бубинед.

  17.   Педро Мануэл Агуайо Мунос Диго

    Салом шумо чӣ хелед?

    #! / bin / bash
    хатсайрро хонед
    # Ворид ~ / Мизи
    # Пас ман кӯшиш мекунам, ки ин директорияро паймоиш кунам
    CD $ роҳ
    # Ман паёми зеринро мегирам: cd: ~ / Desktop: Файл ё директория вуҷуд надорад

    Саволи ман ин аст, ки ман чӣ кор карда метавонам, то онро аз клавиатура ворид намуда, ҳамчун роҳи директория қабул кунам?

  18.   Мигел Диго

    Ва ман аз куҷо медонам, ки гурӯҳ вуҷуд дорад,

  19.   пуршиддат Диго

    хуб Ҳангоми пахш кардани тугмаи кунагуаро, ман дар каноима мушкилот дорам, дар он гуфта мешавад, ки ягон файл ё директорияе нест, ки он барои ҳалли ин мушкил кор кунад ва боқимонда кунагуаро намекушояд, ташаккур.

  20.   Карлос Диго

    Агар номи файл фосила дошта бошад, if if дар BASH -ро чӣ гуна иҷро мекунед?
    Масалан:
    Data.xlsx апрел

    Барои пурсидан, ки оё ин файл вуҷуд дорад

    1.    Мануэл Алкокер Хименес Диго

      Карлос, ба ин монанд:

      агар [["$ variable" == Маълумот \ моҳ \ аз \ April.xlsx]]; пас ҳамовоз 'мувофиқат' кунед; fi

      Шумо инчунин метавонед:
      агар [["$ variable" == 'Маълумот барои моҳи апрел.xlsx']]; пас ҳамовоз 'мувофиқат' кунед; fi

      Варианти дигар:
      [["$ Variable" == 'Маълумот барои April.xlsx']] && echo 'match' || ҳамовоз 'мувофиқат намекунад'

      Дар баъзе минтақаҳои торики интернет онҳо ба ҷои [] истифодаи [[]] -ро тавсия медиҳанд ва агар шумо рақамҳоро муқоиса карданӣ бошед, пас ((тағйирёбанда> = 3)) && echo 'тағирёбанда аз 3 ё | | echo 'тағирёбанда камтар аз 3' аст

      Аз ин рӯ, барои рақамҳо:

      агар ((рақам! = 4)); пас ҳамовозии "$ {number} 4 нест"; else echo "$ {number} is 4"; fi

  21.   Сезар Матеус Диго

    чӣ гуна шумо метавонед рамзро барои тасдиқ кардан тартиб диҳед, агар директория матни махсус дошта бошад, то онро таҳрир карда тавонед.

    мисол:

    агар (матни1)

    коре накунед

    боз

    text1 ба text2 иваз кунед

  22.   Мигел Диго

    саволе, ки чӣ гуна ҳар як 15 сонияро тафтиш кардан мумкин мебуд, агар файл вуҷуд дошта бошад ё не, ташаккур.

  23.   соҳили дарё Диго

    Салом,
    ин:
    агар [-w / home / Komun / Logs / ti]; пас
    Бифаҳмед, ки оё файл навиштанист. Аммо он бар иҷозатҳои корбар асос ёфтааст. Оё ин корро кардан мумкин аст, ки оё гурӯҳ ё дигарон иҷозат доранд?

bool (ҳақиқӣ)