Pārbaudiet, vai fails vai mape pastāv vai nav (un vairāk) ar IF cilpu

Es neko neesmu ielicis Stipri iesist, un ir tas, ka, ieejot brīnišķīgajā Python pasaulē, es esmu mazliet aizmirsis par šo citu draugu, kurš man tik ļoti palīdzēja 🙂

Šeit es kaut ko ievietoju Bash entuziastiem, kā teikts nosaukumā ... Es jums parādīšu, kā pārbaudīt, vai sistēmā ir fails vai mape, vienkārši izmantojot: if

Mēs gatavojamies izveidot .sh failu un piešķirt tam izpildes atļaujas, tāpēc pietiek ar to, lai terminālā ievietotu šādu komandu:

pieskarieties test.sh && chmod + x test.sh

Tas tika darīts, izveidojot failu (pieskāriena tests.sh) un arī piešķir jums izpildes atļaujas (chmod + x tests.sh)

Tad uzrakstīsim tajā sekojošo:

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

Ko tas dara?

Vienkārši 😀

Pirmajā rindā - » ja [-d ​​/ opt /];

Šeit mēs jautājam, vai / opt / direktorija pastāv? Jā direktorija / mape, jo -d nozīmē direktoriju vai mapi.
Tad, ja tāda pastāv, mēs drukāsim terminālā «Jā, tas tiešām pastāv.»(Šī ir 2. un 3. rinda)
Pretējā gadījumā / / opt NAV, tad mēs drukāsim «Nē, tā neeksistē»(4. un 5. rinda)
Tad pēdējā rindā (6. numurs) mēs aizveram ja un viss.

saistīto rakstu:
Izveidojiet tīkla savienojumu starp datoru un Virtualbox virtuālajām mašīnām

Veiciet testu, tas parādīs, ka / opt / pastāv.

Ja vēlaties, lai parādītu jums citu tekstu (to, kura nav), mainiet / opt / jebkurai citai mapei, kuras jūsu sistēmā nav, piemēram: / asd /

Kā redzat, -d palīdz mums uzzināt, vai direktorija pastāv, tagad, ja mēs mainām -d uz -f, tas ir, lai pārbaudītu failu esamību (-d = direktorijs, -f = fails / fails)

Piemēram:

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

Šeit ir opciju saraksts:

-d - »Pārbaudiet, vai pastāv noteikts katalogs

-f - »Pārbaudiet, vai pastāv noteikts fails

-w - »Pārbaudiet, vai noteiktam failam ir rakstīšanas atļaujas

-x - »Pārbaudiet, vai noteiktam failam ir izpildes atļaujas.

Un nu nav daudz ko piebilst 🙂

Es zinu, ka tas būs ļoti noderīgi un interesanti tiem, kam patīk programmēt Bashā 😉

Sveicieni


42 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Hugo teica

    Vēl viens veids, kā to izdarīt bez tā, ja… tad .. vēl:

    test -f /etc/hosts && elcomando

    Vai arī

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

    Utt

    1.    KZKG ^ Gaara teica

      Pareizi 😀
      … O_O ... Vai tu esi Hugo, Hugo no Kubas? ... Izmantojot Windows8, WTF !!!

      1.    Hugo teica

        Jā, es iepazinos ar šo operētājsistēmu, un, ja man jābūt atklāti, vienīgais, kas man ir noderīgs, ir kopiju pārvaldnieks, pretējā gadījumā man personīgi šķiet, ka tas ir sāpīgs, it īpaši tā hibrīdā saskarne un metro lietojumprogrammas. Man tas patīk mazāk nekā Vista un 7 (kaut arī nedaudz efektīvāki par šiem), kas arī man nepatika. Vienīgais, kam es to izmantoju, ir NFS13 un Skyrim atskaņošana, taču šī OS aizņem tik daudz vietas, ka man bija jāizdzēš mans Linux nodalījums [snif].

        Tomēr jūsu miera labad es jums pateikšu, ka aizvakar es lejupielādēju Arch ISO for January un es plānoju veikt nelielu pārbaudi tā x86-64 versijā, tiklīdz es saņemšu repo (vai jūs ir tas?). Tagad, kad es redzēju, ka tas pēc noklusējuma izmanto parakstītas paketes, tas man dod lielāku pārliecību ienirt.

        Un mans tēvs arī man teica, ka viņš man nosūtīs Sony Xperia, kuru es vēlos izmantot, lai apgūtu kādu Android programmēšanu, kas bija gaidāma vēlme. Tāpēc nomierinies, es vēl neesmu devies uz spēka tumšo pusi, buahahahaha 😉

  2.   patz teica

    cilvēka tests

    1.    MSX teica

      Pārliecināts.

  3.   RAW-Basic teica

    Wenas! ..

    Mēs varētu izveidot to pašu .. ..bet direktorija tiek nodota kā parametrs ..

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

    Un mēs to saucam:

    ./test.sh / opt /

    Sveiciens ..

  4.   saglabāt teica

    IF nav cikls xD

  5.   Gregorijs Zobens teica

    Tas man der kā cimds scenārijam, kuru es daru. Vai ir derīgi izmantot aizstājējzīmes? Piemēram, lai uzzinātu, vai ir .mp4s, palaidiet kaut ko uz tiem.

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

    1.    RAW-Basic teica

      Jā, tas ir pilnīgi derīgs ..

      Pat caur parametriem .. "* .mp4"

      1.    RAW-Basic teica

        Piemēram

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

        Ja jūs to saucat: ./test.sh * .mp4

        Ja atrod .mp4 failus, tos izdzēš ... ... bet tajā esošie faili netiek uzskaitīti ...

        1.    Gregorijs Zobens teica

          Paldies par atsauksmēm un padomiem! 🙂

        2.    Joaquin teica

          Jūs nokavējāt f xD

          rm -rf $ 1

          Tas ir aizraujošāk!

        3.    b1tblu3 teica

          Brīnišķīgi !!!, Katru dienu es vairāk iemīlu Linux, Windows ir ticis novirzīts uz kādu manu cietā diska tumšo stūri, kas drīz tiks izdzēsts, lai dotu vietu Linux gaismai.

          1.    RAW-Basic teica

            Izcili! .. ..tad sper nākamo soli .. un dabū ārā ..

            Pirms 6 mēnešiem apm. Man ir tikai GNU / Linux visās manās mašīnās, un man vairāk nevajag .. .. ne W $ .. ne Vīnu .. ..un es tā vairāk nekā priecājos ..

            Es inficēju savu apkārtni .. tā kā visi mani redz ar manu arku, ātru, efektīvu un laimīgu .. ..un viņi lūdz mani instalēt Linux .. .. jā! .. 😀

        4.    Inukaze teica

          Varat arī pārbaudīt, vai tajos ir dažādi paplašinājumi, varat izmantot kaut ko līdzīgu

          #! / bin / bash
          Katalogs = $ HOME / Lejupielādes

          ja [$ katalogs]; pēc tam
          echo "Šeit ir failu tipu saraksts:"
          atbalss "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          Izmantojot {}, šajā gadījumā varat norādīt vairākus paplašinājumus, izmantojot “?” , ir aizstājējzīme, kas ļauj izmantot "Jebkurš raksturs".

          Es ceru, ka tas jums palīdzēs

        5.    Pedro teica

          Es iesaku komandai atrast [direktorija] [meklēšanas_pattern] –exec [komanda] {} \

      2.    Carlos teica

        Tas nedarbojas, es ievietoju šos failus direktorijā:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        meklēt.sh

        #! / bin / bash
        PATH = / tmp / TESTS
        cd $ MARŠRUTS
        ls -la | awk '{print »« $ 9}'
        ja [[-f AB.TXT]]; pēc tam
        atbalss »Ievadiet IF, ja ir kāds AB
        .TXT »
        fi
        ja [-f AB20160422.TXT]; pēc tam
        echo "ievade konkrētam AB failam"
        fi

        kad ieliku [-f AB.TXT] dod kļūdu
        kad ieliku [[-f AB
        .TXT]] nedod kļūdu, taču nevar atrast failu
        tas darbojas tikai tad, kad es ievietoju noteiktu failu, piemēram:
        ja [-f AB20160422.TXT]; pēc tam

        Es nevaru panākt, lai tas darbotos ar aizstājējzīmēm * vai?

        1.    Pedro teica

          #! / usr / bin / env bash
          #.kodējums = utf-8.

          KONSTANTI

          EXIT_OK = 0
          EXIT_BAD = 66

          DROŠI = »\ 033 [1m»
          NC = »\ 033 [0m»
          RED = »\ 033 [31m»

          ja [! "$ 1"];
          tAD
          atbalss "trūkst parametra"
          iziet no $ EXIT_BAD
          fi

          CD "$ 1"

          faili = »ls -h1 $ 1»

          failam $ ($ failos); darīt
          echo -e "šeit varat darīt jebko ar $ BOLD $ failu $ nc"
          darīts

          iziet no $ EXIT_OK

  6.   MSX teica

    @KZ, pastāstiet vairāk par šo: "Un tas ir tāpēc, ka es ieeju brīnišķīgajā Python pasaulē"!

    1.    KZKG ^ Gaara teica

      HAHAHAHA nah ... pamazām 🙂
      Es joprojām esmu tikai Python iesācējs, diez vai man ir laiks tam veltīt stundas un stundas, tāpēc mācībās esmu lēns jā, lēns, bet pārliecināts 😀

  7.   audioban teica

    Liels paldies 😀 tieši vakar domāju, kā to izdarīt.

  8.   Reihssk teica

    tas ar ncurses ir lieliski 🙂

  9.   Jazeco teica

    ar vienu vārdu ... IZCILI!
    Ilgu laiku es pilnveidoju skriptu, lai lejupielādētu no interneta, taču man bija problēma, ka tas lejupielādēja pieprasītos failus 1 un vēlreiz, nespējot pārbaudīt 1ro esamību.
    Ļoti labs tuto.

  10.   zulāns teica

    Tiek novērtēts milzīgs ieguldījums šeit no Čīles.
    Katru dienu vairāk LINUX mani patīkami pārsteidz,
    Lai dzīvo bezmaksas programmatūra MIERDAAAA.

  11.   david teica

    kalpot par
    pārbaudiet, vai fails ir no direktorija

  12.   Grovhers teica

    Ja es vēlos pārbaudīt jebkura faila esamību ceļā «/ tmp / uztvērēji», izpildiet jebkuru komandu, kā tas būtu?

    Būšu ļoti pateicīga

    Sveicieni

  13.   John teica

    Dārgais, un, ja IF nosaka, vai fails ir pilnībā aizpildīts ???. Es to jautāju, jo, aizpildot failu nosūtīšanai, tas var aizņemt pat pusi no datiem.

    Sveiciens un paldies par atsaucību.

  14.   Inukaze teica

    Es domāju, ka jums vajadzētu pievienot arī piemēru, piemēram, "Pārbaudiet, vai nav" a "fails" vai "direktorijs", piemēram,

    lai pārbaudītu, vai tā NAV, piemēram, izmantojiet mainīgo->

    Katalogs

    #! / bin / bash
    Katalogs = »$ HOME / Testa katalogs»
    File = »$ HOME / testa fails»

    ja [! -d "$ Directory"]; pēc tam
    atbalss "Nav $ direktorija"
    atbalss "Izveide ->" $ Directory "
    mkdir "$ Directory"
    cits
    echo "Katalogs" $ Directory "jau pastāv
    fi

    ja [! -d "$ fails"]; pēc tam
    atbalss "Fails $ neeksistē"
    atbalss "Izveide ->" $ fails "
    pieskarieties "$ File"
    cits
    echo "Fails" $ File "jau pastāv
    fi

    1.    Katekjo teica

      kad vēlāk veicat mkdir, pārbaudiet, vai termināls to varētu izveidot, jo tas var salauzt bumbiņas, ja tā ir mape kā root vai sistēma hhah

  15.   Džulio Vinači teica

    Sveicieni KZKG ^ Gaara vaicājums, kā es darītu, lai izmantotu čokurošanos. Es gribētu uzzināt, kā es no konsoles veicu ping URL, lai redzētu, vai tas, piemēram, ir pieejams http://portal.com/directorio/archivo1.php Ja failā1 tiks glabāti apmeklējuma IP, komandas uzraudzībai man šī piespraude jāizveido ik pēc pusstundas, lai es būtu informēts par publisko IP, jo tas laiku pa laikam mainās, un es nevaru izveidot savienojumu, izmantojot ssh.

    Sveiciens jau iepriekš pateicos, Dievs jūs svētī.

    1.    KZKG ^ Gaara teica

      Sveiki, kā tas notiek

      Pirmkārt, jums jāsaka, ka IP mainīgais (piemēram) ir šī faila saturs, tāpēc jums:
      1. Lejupielādējiet failu
      2. Skatiet tā saturu un iegūstiet IP no turienes
      3. Šis IP ir mainīgais

      Piemēram:
      Šeit mēs lejupielādējam failu - »wget http://portal.com/directorio/archivo1.php -o fails.html
      Tad tā saturu piešķiram mainīgajam: - »: $ {IP: =` cat file.html`}
      .. pieņemot, ka šī faila saturam ir tikai IP, ja tā nav, jums būs jāstrādā ar grep, awk vai head.

      Kad IP jau ir mainīgais, pārējais ir vienkāršākā lieta pasaulē 🙂

      Si quieres me escribes al email (kzkggaara[at]desdelinux[dot]net) que con gusto te ayudo

      1.    Džulio Vinači teica

        Liels paldies kzkggaara ļoti pateicīgs.

  16.   Natālija teica

    Sveiki, es daudz nesaprotu par skaitļošanu un nezinu, vai šis ieraksts ir saistīts ar manis radīto problēmu.

    Es komentēju, ja jūs mani izlasījāt, kaut arī ziņa ir pirms gada:
    Izrādās, ka es savā darbvirsmā izveidoju mapi, kurā glabāt dažus videoklipus. Es tos videoklipus izdzēsu, jo man tie vairs nebija vajadzīgi, un tagad šī mape man paziņo, ka tā neeksistē (kaut arī tā ir redzama uz mana darbvirsmas).

    - Tā ir pirmā problēma, kas man ir:
    Nevaru izdzēst mapi.

    - Otrā problēma, un es uzskatu, ka vēl svarīgāka:
    Mēģinot izdzēst mapi, es ievietoju mapi PHOTOS. Tagad, kad atveru mapi, kuras "nav", tā ir tukša, un FOTOATTĒLI nav.

    Kā es varu atgūt fotoattēlus? Esmu devis iespēju mapē "Rādīt slēptos dokumentus", bet mape FOTOS neparādās.

    Es ceru, ka jūs varat zināt, kā tas tiek atrisināts.
    Paldies.

    1.    valdo teica

      Ir divi lietotāji, kas ir galvenie: root un your_user (piemēram, natalia). Viņiem abiem ir personīgās mapes. jūsu_lietotājs iekš / home un saknes mapē / (saknes direktorijā). Ar peles labo pogu noklikšķinot uz mapes, redziet, kam tā pieder. Ja tas ir root faila pārvaldniekā, izmantojot sudo, gksu vai kdesu, atkarībā no izmantotās vides, dodieties uz saknes direktoriju -> root -> Desktop, un jūs, iespējams, atradīsit fotoattēlus, un jūs varat izdzēst mapi. Daži rajoni, kad neesat faila vai direktorijas īpašnieks un jums nav piekļuves atļauju, paziņo, ka direktorija / fails nepastāv. Ja esat īpašnieks un neesat root, dariet to pašu ar failu pārvaldnieku ar sudo utt. Un dodieties uz saknes direktoriju -> / home -> personal_folder -> Desktop un pārbaudiet, vai fotoattēli ir un vai jūs varat izdzēst mapi.
      Ja tas nedarbojas, jums būs jāredz citas iespējas no termināla (konsoles).

  17.   Pedro Manuels Aguayo Muñoz teica

    Sveiki, kā tev klājas? Es daru darbu bashā, un es vēlētos uzzināt, kā pārbaudīt, vai, piemēram, no tastatūras ir ievadīts direktorijs

    #! / bin / bash
    lasīt maršrutu
    #Enter ~ / Desktop
    # Tad es mēģinu pārvietoties tajā direktorijā
    cd $ ceļš
    # Es saņemu šādu bash ziņojumu: cd: ~ / Desktop: Fails vai direktorijs nepastāv

    Mans jautājums ir, ko es varu darīt, lai ievadītu to no tastatūras un ņemtu to kā direktorijas ceļu?

  18.   Miguel teica

    Un kā es varu zināt, vai grupa pastāv,

  19.   kārtīgs teica

    labi, man ir problēma manā kanaimā, nospiežot pogu cunaguaro, tur teikts, ka nav faila vai direktorija, jo tas darītu, lai atrisinātu šo problēmu, un pārējais neatver cunaguaro, lūdzu, paldies.

  20.   Carlos teica

    Kā jūs darāt, ja BASH, ja faila nosaukumam ir atstarpes?
    Piemēram:
    Aprīļa dati.xlsx

    Jautāt, vai fails pastāv

    1.    Manuels Alkokers Džimeness teica

      Karloss, piemēram:

      ja [["$ mainīgais" == Datu \ mēnesis \ no \ April.xlsx]]; tad atbalss 'sērkociņš'; fi

      Jūs varat arī:
      ja [["$ mainīgais" == 'Dati par aprīļa mēnesi.xlsx']]; tad atbalss 'sērkociņš'; fi

      Vēl viena iespēja:
      [["$ Variable" == 'Dati par aprīli.xlsx']] && echo 'sakrīt' || atbalss 'neatbilst'

      Dažos tumšos interneta apgabalos viņi iesaka lietot [[]], nevis [], un, ja jūs salīdzināt skaitļus, tad: ((mainīgais> = 3)) && echo 'mainīgais ir lielāks vai vienāds ar 3' | | echo 'mainīgais ir mazāks par 3'

      Tāpēc attiecībā uz skaitļiem:

      ja ((skaitlis! = 4)); tad atbalss "$ {number} nav 4"; cits atbalss "$ {number} ir 4"; fi

  21.   Cēzars Mateuss teica

    Kā jūs varat izveidot kodu, lai pārbaudītu, vai direktorijā ir noteikts teksts, lai to varētu rediģēt.

    piemērs:

    ja (teksts1)

    neko nedari

    cits

    mainīt tekstu1 uz tekstu2

  22.   Miguel teica

    jautājums, kā būtu pārbaudīt ik pēc 15 sekundēm, vai fails pastāv vai nav, paldies.

  23.   upes krastu teica

    Hello,
    tas:
    if [-w / home / Komun / Logs / ti]; pēc tam
    Uzziniet, vai fails ir rakstāms. Bet tas ir balstīts uz lietotāju atļaujām. Vai to var izdarīt, lai uzzinātu, vai grupai vai pārējām ir atļaujas?