Проверете дали файл или папка съществува или не (и повече) с IF цикъл

Не съм сложил нищо от Тряскам, и то е, че когато навлизам в прекрасния свят на Python, съм забравил малко за този друг приятел, който ми помогна толкова много

Тук сложих нещо за ентусиастите на Bash, както се казва в заглавието ... Ще ви покажа как да проверите дали в системата има файл или папка, просто като използвате: if

Ще създадем .sh файл и ще му дадем разрешения за изпълнение, за това е достатъчно да поставите следната команда в терминал:

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

Това, което направи, е да създаде файла (тест за докосване.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) затваряме ако и това е всичко.

Свързана статия:
Установете мрежова връзка между компютъра и виртуалните машини 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 😉

поздрави


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Уго каза той

    Друг начин да го направите, ако ... тогава..else:

    test -f /etc/hosts && elcomando

    Или също

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

    И т.н.

    1.    KZKG ^ Гаара каза той

      Вдясно 😀
      ... O_O ... Вие ли сте Хюго, Хюго от Куба? ... Използване на Windows8, WTF !!!

      1.    Уго каза той

        Е, да, запознавам се с тази операционна система и ако трябва да бъда откровен, единственото нещо, което ми се стори полезно, е мениджърът на копията, иначе аз лично го намирам за вредител, особено хибридния му интерфейс и приложенията на метрото. Харесва ми по-малко от Vista и 7 (макар и малко по-ефективни от тях), които също не ми харесаха. Единственото нещо, за което го използвам, е да играя NFS13 и Skyrim, но тази операционна система заема толкова много място, че трябваше да изтрия моя дял на Linux [snif].

        Въпреки това, за ваше спокойствие, мога да ви кажа, че вчера изтеглих Arch ISO за януари и смятам да му дам вкус на неговата x86-64 версия, веднага щом получа репото (ще имате ли то? Сега, когато видях, че използва подписани пакети по подразбиране, това ми дава повече увереност да се потопя.

        И баща ми също ми каза, че ще ми изпрати Sony Xperia, от който искам да се възползвам, за да науча малко програмиране за Android, което беше висящо желание. Така че успокой се, все още не съм отишъл на тъмната страна на силата, buahahahaha 😉

  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.    Хоакин каза той

          Пропуснахте f xD

          rm -rf $ 1

          Това е по-вълнуващо!

        3.    b1tblu3 каза той

          Прекрасно !!!, Всеки ден, когато се влюбвам все повече в Linux, Windows беше преместен в някой тъмен ъгъл на моя твърд диск, който е на път да бъде изтрит, за да отстъпи на светлината на Linux.

          1.    RAW-основен каза той

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

            Преди 6 месеца ок. Имам само GNU / Linux на всичките си машини и не ми трябват повече .. ..не W $ .. или Wine .. ..и съм повече от щастлив така .. 😉

            И заразявам околната среда .. тъй като всички ме виждат с моя Arch, бърз, ефективен и щастлив .. ..и ме молят да инсталирам Linux .. .. да! .. 😀

        4.    Инукадзе каза той

          Можете също така да ги проверите за различни разширения, можете да използвате нещо като

          #! / Хамбар / Баш
          Директория = $ HOME / Изтегляния

          ако [$ Directory]; тогава
          echo "Ето списък на типовете файлове:"
          ехо "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          използването на {} ви позволява да посочите множество разширения в този случай, използването на "?" , е заместващ знак, който ви позволява да вземете „Всеки символ“.

          Надявам се да ви помогне

        5.    Педро каза той

          Препоръчвам командата find [директория] [шаблон за търсене] –exec [команда] {} \

      2.    Карлос каза той

        Не работи, поставих тези файлове в директорията:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / Хамбар / Баш
        ПЪТ = / tmp / TEST
        cd $ МАРШРУТ
        ls -la | awk '{print »« $ 9} »
        ако [[-f AB.ТЕКСТ]]; тогава
        echo »Въведете IF, ако има AB
        .ТЕКСТ "
        fi
        ако [-f AB20160422.TXT]; тогава
        echo "вход за конкретен AB файл"
        fi

        когато сложа [-f AB.TXT] дава грешка
        когато сложа [[-f AB
        .TXT]] не дава грешка, но не може да намери файла
        работи само когато сложа определен файл, например:
        ако [-f AB20160422.TXT]; тогава

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

        1.    Педро каза той

          #! / usr / bin / env bash
          #.кодиране = utf-8.

          КОНСТАНТИ

          EXIT_OK = 0
          EXIT_BAD = 66

          СЪДЪРЖАНЕ = »\ 033 [1 м»
          NC = »\ 033 [0 м»
          ЧЕРВЕН = »\ 033 [31 м»

          ако [! "$ 1"];
          след това
          echo "липсва параметър"
          изход $ EXIT_BAD
          fi

          cd "$ 1"

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

          за файл в $ ($ files); направете
          echo -e "можете да направите всичко с $ BOLD $ file $ nc тук"
          направен

          изход $ EXIT_OK

  6.   MSX каза той

    @KZ, кажи повече за това: „и това е, защото навлизам в прекрасния свят на Python“!

    1.    KZKG ^ Гаара каза той

      ХАХАХАХ не ... малко по малко 🙂
      Все още съм само начинаещ в Python, едва ли имам време да му отделя часове и часове, така че съм бавен, да, бавен, но сигурен в обучението си 😀

  7.   Аудобан каза той

    Благодаря ви много 😀 точно вчера си мислех как да направя това.

  8.   РайхСк каза той

    това с ncurses е страхотно 🙂

  9.   джазеко каза той

    с 1 дума ... ОТЛИЧНО!
    Дълго време усъвършенствах скрипт за изтегляне от Интернет, но се сблъсках с проблема с изтеглянето на файловете, които поисках 1 и отново, без да мога да проверя съществуването на 1ro.
    Много добро tuto.

  10.   зулан каза той

    Огромният принос, тук от Чили е оценен.
    Всеки ден повече LINUX ме изненадва приятно,
    Да живее безплатен софтуер MIERDAAAA.

  11.   Дейвид каза той

    служат за
    проверете дали файлът е от директория

  12.   Грохер каза той

    Ако искам да проверя съществуването на какъвто и да е файл в път «/ tmp / приемници», изпълнете която и да е команда, как би било?

    Аз ще бъда много благодарен

    поздрави

  13.   Джон каза той

    Уважаеми, и да се определи чрез IF дали файлът е изцяло попълнен ???. Питам това, защото когато попълвате файла за предаване, той може да го вземе дори с половината данни.

    Поздрави и благодарности за отговора.

  14.   Инукадзе каза той

    Е, мисля, че трябва да добавите и пример, като например "Проверете дали няма" "файл" или "директория", като например

    за да проверите дали НЕ съществува, например използвайте променлива->

    Директория

    #! / Хамбар / Баш
    Директория = »$ HOME / Тестова директория»
    Файл = »$ HOME / Тестов файл»

    ако [! -d "$ Directory"]; тогава
    echo "Няма $ Директория"
    echo "Създаване ->" $ Directory "
    mkdir "$ Директория"
    още
    echo "Директория" $ Directory "вече съществува
    fi

    ако [! -d "$ File"]; тогава
    echo "Файл $ не съществува"
    echo "Създаване ->" $ File "
    докоснете "$ File"
    още
    echo "Файл" $ File "вече съществува
    fi

    1.    Катекьо каза той

      когато правите проверката на mkdir по-късно дали терминалът може да го създаде, защото може да разбие топките, ако е папка като root или система hhah

  15.   Хулио Виначи каза той

    Поздрави KZKG ^ Gaara заявка, както бих направил, за да използвам curl. Бих искал да знам как правя от конзолата, за да пигна URL, за да видя дали е наличен например 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 файл.html
      След това присвояваме променлива нейното съдържание: - »: $ {IP: =` cat file.html`}
      .. ако приемем, че съдържанието на този файл има само IP, ако не, ще трябва да работите с grep, awk или head.

      След като имате IP като променлива, останалото е най-простото нещо в света 🙂

      Ако искате, пишете ми на имейл (kzkggaara[at]desdelinux[dot]net) С удоволствие ще ти помогна

      1.    Хулио Виначи каза той

        Благодаря ви много kzkggaara много благодарен.

  16.   Наталия каза той

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

    Коментирам, в случай че ме прочетете, въпреки че публикацията е отпреди година:
    Оказва се, че съм създал папка на работния си плот, за да съхранявам някои видеоклипове. Е, изтрих тези видеоклипове, защото вече нямах нужда от тях и сега тази папка ми казва, че не съществува (въпреки че е видима на моя работен плот).

    - Това е първият проблем, който имам:
    Не мога да изтрия папката.

    - Втори проблем и мисля, че е по-важно:
    В опит да изтрия папката, сложих папка СНИМКИ. Сега, когато отворя папката, която "не съществува", тя е празна и СНИМКИТЕ не са там.

    Как мога да възстановя снимките? Дадох опцията в папката "Показване на скрити документи", но папката СНИМКИ не се появява.

    Надявам се, че можете да знаете как е решен.
    Благодаря.

    1.    Валдо каза той

      Има двама потребители, които са основните: root и your_user (natalia например). И двамата имат лични папки. your_user в / home и root в / (root директория). Като щракнете с десния бутон върху папката, вижте на кого принадлежи. Ако е root с вашия файлов мениджър, използвайки sudo или gksu или kdesu, в зависимост от средата, която използвате, отидете в главната директория -> root -> Desktop и вероятно ще намерите снимките и можете да изтриете папката. Някои дистрибуции, когато не сте собственик на файла или директорията и нямате разрешения за достъп, казват, че директория / файл не съществува. Ако сте собственик и не сте root, направете същото с файловия мениджър със sudo и т.н. и отидете в главната директория -> / home -> personal_folder -> Desktop и вижте дали снимките са там и дали можете да изтриете папката.
      Ако това не работи, ще трябва да видите други опции от терминала (конзолата).

  17.   Педро Мануел Агуайо Муньос каза той

    Здравейте, как сте? Правя работа в bash и бих искал да знам как да проверя дали има въведена директория от клавиатурата, например

    #! / Хамбар / Баш
    прочетете маршрут
    #Enter ~ / Desktop
    # Тогава се опитвам да навигирам в тази директория
    cd $ път
    # Получавам следното съобщение bash: cd: ~ / Desktop: Файлът или директорията не съществуват

    Въпросът ми е: Какво мога да направя, за да го въведа от клавиатурата и да го взема като път на директория?

  18.   Мигел каза той

    И как мога да разбера дали съществува група,

  19.   хайди каза той

    добре имам проблем в моя canaima, когато натисна бутона cunaguaro, той казва, че няма файл или директория, както би направил, за да разреши този проблем, а останалото не отваря cunaguaro, моля благодаря.

  20.   Карлос каза той

    Как се прави if в BASH, ако името на файла има интервали?
    Например:
    Априлски данни.xlsx

    За да попитате дали файлът съществува

    1.    Мануел Алкосер Хименес каза той

      Карлос, ето така:

      ако [["$ променлива" == Данни \ месец \ от \ April.xlsx]]; след това ехо 'съвпадение'; fi

      Можете също така:
      ако [["$ променлива" == 'Данни за месец април.xlsx']]; след това ехо 'съвпадение'; fi

      Друг вариант:
      [["$ Variable" == 'Данни за месец април.xlsx']] && echo 'съвпада' || ехото „не съвпада“

      В някои тъмни области на интернет те препоръчват да се използва [[]] вместо [] и ако ще сравнявате числа, тогава: ((променлива> = 3)) && echo 'променливата е по-голяма или равна на 3' || ехо 'променливата е по-малка от 3'

      Следователно, за числа:

      if ((число! = 4)); тогава ехото "$ {номер} не е 4"; в противен случай ехото "$ {номер} е 4"; fi

  21.   Цезар Матей каза той

    как можете да направите код за проверка, ако директорията има определен текст, за да можете да го редактирате.

    например:

    ако (текст1)

    не прави нищо

    още

    променете text1 на text2

  22.   Мигел каза той

    въпрос, как би било да проверявате на всеки 15 секунди дали файлът съществува или не, благодаря.

  23.   речен бряг каза той

    Здравейте,
    това:
    ако [-w / home / Komun / Logs / ti]; тогава
    Разберете дали файлът може да се записва. Но това се основава на потребителски разрешения. Може ли да се направи, за да се разбере дали групата или останалите имат разрешения?