Periksa apakah file atau folder ada atau tidak (dan lebih) dengan perulangan IF

Saya belum memasukkan apa pun Menampar, dan saat saya memasuki dunia Python yang indah, saya sedikit lupa tentang teman lain yang sangat membantu saya.

Di sini saya meletakkan sesuatu untuk penggemar Bash, seperti judulnya ... Saya akan menunjukkan kepada Anda cara memeriksa apakah file atau folder ada di sistem, hanya menggunakan: if

Kami akan membuat file .sh dan memberinya izin eksekusi, untuk ini, cukup letakkan perintah berikut di terminal:

tes sentuh.sh && chmod + x test.sh

Ini yang dia lakukan adalah membuat file (tes sentuh.sh) dan juga memberi Anda izin eksekusi (chmod + x test.sh)

Kemudian mari kita tulis yang berikut ini di dalamnya:

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

Apa ini?

Sederhana 😀

Di baris pertama - » jika [-d ​​/ opt /];

Di sini kami bertanya, apakah direktori / opt / ada? Ya direktori / folder, karena -d Berarti direktori atau folder.
Kemudian jika ada, kami akan mencetak di terminal «Ya, itu memang ada.»(Ini adalah baris 2 dan 3)
Jika tidak dan / opt / TIDAK ada, maka kami akan mencetak «Tidak, itu tidak ada»(Baris 4 dan 5)
Kemudian di baris terakhir (nomor 6) kita tutup if dan itu saja.

Artikel terkait:
Buat koneksi jaringan antara PC dan mesin virtual Virtualbox

Lakukan pengujian, ini akan menunjukkan kepada Anda bahwa / opt / memang ada.

Jika Anda ingin saya menunjukkan teks lain (yang tidak ada) ubah / opt / untuk folder lain yang tidak ada di sistem Anda, misalnya: / asd /

Seperti yang Anda lihat, -d membantu kita untuk mengetahui apakah direktori tersebut ada, nah sekarang jika kita mengubah -d menjadi -f untuk memeriksa keberadaan file (-d = direktori, -f = file / file)

Sebagai contoh:

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

Berikut adalah daftar opsinya:

-d - »Periksa apakah ada direktori tertentu

-f - »Periksa apakah ada file tertentu

-w - »Periksa apakah file tertentu memiliki izin menulis

-x - »Periksa apakah file tertentu memiliki izin eksekusi.

Dan tidak banyak lagi yang bisa ditambahkan 🙂

Saya tahu ini akan sangat berguna dan menarik bagi mereka yang suka membuat program di Bash 😉

salam


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Hugo dijo

    Cara lain untuk melakukannya tanpa if… then..else:

    test -f /etc/hosts && elcomando

    Atau juga

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

    Dll

    1.    KZKG ^ Gaara dijo

      Benar 😀
      … O_O… Apakah Anda Hugo, Hugo dari Kuba? … Menggunakan Windows8, WTF !!!

      1.    Hugo dijo

        Ya, saya semakin akrab dengan OS ini dan jika saya harus terus terang, satu-satunya hal yang menurut saya berguna adalah copy manager, jika tidak, saya pribadi merasa sakit, terutama antarmuka hybrid dan aplikasi metro-nya. Saya suka kurang dari Vista dan 7 (meskipun sedikit lebih efisien dari ini), yang saya juga tidak suka. Yang saya gunakan hanya untuk memainkan NFS13 dan Skyrim, tetapi OS ini memakan banyak ruang sehingga saya harus menghapus partisi Linux saya [snif].

        Namun, untuk ketenangan pikiran Anda, saya akan memberi tahu Anda bahwa sehari sebelum kemarin saya mengunduh Arch ISO untuk Januari dan saya berencana untuk memberikan sedikit tes dalam versi x86-64, segera setelah saya mendapatkan repo (maukah Anda memilikinya?). Sekarang karena saya melihatnya menggunakan paket yang ditandatangani secara default, itu memberi saya lebih percaya diri untuk menyelami.

        Dan ayah saya juga memberi tahu saya bahwa dia akan mengirimi saya Sony Xperia, yang ingin saya manfaatkan untuk mempelajari beberapa pemrograman untuk Android, yang merupakan permintaan yang menunggu keputusan. Jadi tenanglah, saya belum pergi ke sisi gelap kekuatan, buahahahaha 😉

  2.   patz dijo

    uji manusia

    1.    MSX dijo

      Tentu.

  3.   RAW-Dasar dijo

    Wenas! ..

    Kita bisa membuat yang sama .. ..tapi direktori dilewatkan sebagai parameter ..

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

    Dan kami menyebutnya sebagai:

    ./test.sh / opt /

    Salam..

  4.   hemat dijo

    JIKA bukan siklus xD

  5.   Pedang Gregory dijo

    Ini cocok untuk saya seperti sarung tangan untuk naskah yang saya lakukan. Apakah valid menggunakan wildcard? Misalnya, untuk mencari tahu apakah ada .mp4s, jalankan sesuatu di sana.

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

    1.    RAW-Dasar dijo

      Ya, ini sepenuhnya valid ..

      Bahkan melalui parameter .. "* .mp4"

      1.    RAW-Dasar dijo

        Misalnya

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

        Jika Anda menyebutnya: ./test.sh * .mp4

        Jika ia menemukan file .mp4, itu akan menghapusnya ... ... tetapi tidak mencantumkan file dalam direktori itu ...

        1.    Pedang Gregory dijo

          Terima kasih atas umpan balik dan tipnya! 🙂

        2.    Joaquin dijo

          Anda melewatkan f xD

          rm -rf $ 1

          Ini lebih seru!

        3.    b1tblu3 dijo

          Hebat !!!, Setiap hari saya lebih jatuh cinta dengan Linux, Windows telah diturunkan ke beberapa sudut gelap Hard Drive saya, yang akan dihapus untuk memberi jalan pada terang Linux.

          1.    RAW-Dasar dijo

            Luar biasa! .. ..lalu ambil langkah berikutnya .. dan keluarkan ..

            6 bulan yang lalu kira-kira. Saya hanya memiliki GNU / Linux di semua mesin saya dan saya tidak membutuhkan lebih .. ..bukan W $ .. atau Wine .. ..dan saya sangat senang seperti itu ..

            Dan saya menginfeksi lingkungan saya .. karena semua orang melihat saya dengan Arch saya, cepat, efisien dan bahagia .. ..dan mereka meminta saya untuk menginstal Linux .. ..yeah! .. 😀

        4.    Inukaze dijo

          Anda juga dapat memeriksanya untuk berbagai ekstensi, Anda dapat menggunakan sesuatu seperti

          #! / bin / bash
          Direktori = $ HOME / Unduhan

          jika [$ Directory]; kemudian
          echo "Berikut adalah Daftar Jenis File:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          menggunakan {} memungkinkan Anda menentukan beberapa ekstensi dalam kasus ini, penggunaan "?" , adalah wildcard, yang memungkinkan Anda untuk mengambil "Karakter Apa Pun".

          Saya harap Anda belajar

        5.    pedro dijo

          Saya merekomendasikan perintah find [directory] [search_pattern] –exec [command] {} \

      2.    Carlos dijo

        Tidak berhasil, saya meletakkan file-file ini di direktori:
        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}'
        jika [[-f AB.TXT]]; kemudian
        echo »Masukkan IF jika ada AB
        .TXT "
        fi
        jika [-f AB20160422.TXT]; kemudian
        echo "masukan untuk file AB tertentu"
        fi

        ketika saya meletakkan [-f AB.TXT] memberikan kesalahan
        ketika saya meletakkan [[-f AB
        .TXT]] tidak memberikan kesalahan tetapi tidak dapat menemukan file
        ini hanya berfungsi ketika saya meletakkan file tertentu, misalnya:
        jika [-f AB20160422.TXT]; kemudian

        Saya tidak bisa membuatnya berfungsi dengan wildcard * atau?

        1.    pedro dijo

          #! / usr / bin / env bash
          #.encoding = utf-8.

          KONTSTAN

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1m»
          NC = »\ 033 [0m»
          MERAH = »\ 033 [31m»

          jika [! "$ 1"];
          kemudian
          echo "tidak ada parameter"
          keluar $ EXIT_BAD
          fi

          cd "$ 1"

          berkas = »ls -h1 $ 1»

          untuk file di $ ($ files); melakukan
          echo -e "Anda dapat melakukan apa saja dengan $ BOLD $ file $ nc di sini"
          dilakukan

          keluar $ EXIT_OK

  6.   MSX dijo

    @KZ, ceritakan lebih banyak tentang ini: "dan itu karena saya memasuki dunia Python yang menakjubkan"!

    1.    KZKG ^ Gaara dijo

      HAHAHAHA nah ... sedikit demi sedikit 🙂
      Saya masih pemula di Python, saya hampir tidak punya waktu untuk mendedikasikan berjam-jam untuk itu, jadi saya lambat ya, lambat tapi pasti dalam pembelajaran saya 😀

  7.   adoban dijo

    Terima kasih banyak 😀 baru kemarin saya sedang berpikir bagaimana melakukan ini.

  8.   reichsk dijo

    ini dengan ncurses bagus 🙂

  9.   jazeco.dll dijo

    dalam 1 kata… SANGAT BAIK!
    Untuk waktu yang lama saya menyempurnakan skrip untuk membuat unduhan dari Internet, tetapi saya dihadapkan pada masalah mengunduh file yang saya minta 1 dan lagi tanpa dapat memverifikasi keberadaan 1ro.
    Tuto yang sangat bagus.

  10.   Zulan dijo

    Kontribusi yang luar biasa, disini dari Chile sangat kami hargai.
    Setiap hari semakin banyak LINUX yang mengejutkan saya,
    Hidup Perangkat Lunak Gratis MIERDAAAA.

  11.   david dijo

    melayani untuk
    periksa apakah file dari direktori

  12.   Grover dijo

    Jika saya ingin memeriksa keberadaan file apa pun di jalur «/ tmp / penerima», jalankan perintah apa saja, bagaimana jadinya?

    Saya akan sangat berterima kasih

    salam

  13.   John dijo

    Sayang, dan untuk menentukan JIKA apakah file tersebut terisi penuh ???. Saya menanyakan ini karena ketika Anda mengisi file untuk transmisi, itu dapat mengambilnya bahkan dengan setengah data.

    Salam dan terima kasih atas tanggapan Anda.

  14.   Inukaze dijo

    Saya rasa Anda juga harus menambahkan contoh, seperti "Periksa bahwa tidak ada" file "atau" direktori "seperti misalnya

    untuk memeriksa bahwa itu TIDAK ada, misalnya gunakan variabel->

    Direktori

    #! / bin / bash
    Direktori = »$ HOME / Direktori Tes»
    File = »$ HOME / File Tes»

    jika [! -d "$ Directory"]; kemudian
    echo "Tidak ada $ Directory"
    echo "Membuat ->" $ Direktori "
    mkdir "$ Directory"
    lain
    echo "Direktori" $ Direktori "sudah ada
    fi

    jika [! -d "$ File"]; kemudian
    echo "File $ tidak ada"
    echo "Membuat ->" $ File "
    sentuh "$ File"
    lain
    echo "File" $ File "sudah ada
    fi

    1.    katekyo dijo

      ketika Anda melakukan mkdir periksa nanti apakah terminal dapat membuatnya karena dapat merusak bola jika itu adalah folder sebagai root atau sistem hhah

  15.   Julius vinachi dijo

    Salam KZKG ^ Gaara query seperti yang akan saya lakukan untuk menggunakan curl. Saya ingin tahu bagaimana saya melakukannya dari konsol untuk melakukan ping ke url untuk melihat apakah itu tersedia misalnya http://portal.com/directorio/archivo1.php Di mana file1 akan menyimpan IP kunjungan, untuk memantau tim saya perlu membuat pin itu setiap setengah jam sehingga saya mengetahui IP publik karena berubah dari waktu ke waktu dan saya tidak dapat terhubung dengan ssh .

    Salam terima kasih sebelumnya Tuhan memberkati Anda.

    1.    KZKG ^ Gaara dijo

      Halo,

      Pertama, Anda harus mengatakan bahwa variabel IP (misalnya) adalah konten file itu, untuk ini Anda harus:
      1. Unduh file
      2. Lihat isinya dan dapatkan IP dari sana
      3. IP tersebut adalah variabel

      Sebagai contoh:
      Di sini kami mengunduh file - »wget http://portal.com/directorio/archivo1.php -o file.html
      Kemudian kami menetapkan variabel isinya: - »: $ {IP: =` cat file.html`}
      .. dengan asumsi bahwa konten file itu hanya memiliki IP, jika tidak, Anda harus bekerja dengan grep, awk atau head.

      Setelah Anda memiliki IP sebagai variabel, sisanya adalah hal yang paling sederhana di dunia 🙂

      Jika Anda mau, kirimkan surat kepada saya melalui email (kzkggaara[at]desdelinux[dot]net) Saya dengan senang hati akan membantu Anda

      1.    Julius vinachi dijo

        Terima kasih banyak kzkggaara sangat berterima kasih.

  16.   Natalia dijo

    Hai, Saya tidak mengerti banyak tentang komputasi dan saya tidak tahu apakah posting ini terkait dengan masalah yang saya miliki.

    Saya berkomentar jika Anda membaca saya, meskipun kiriman tersebut dari setahun yang lalu:
    Ternyata saya membuat folder di desktop saya untuk menyimpan beberapa video. Ya, saya menghapus video itu karena saya tidak lagi membutuhkannya dan sekarang folder ini memberi tahu saya bahwa itu tidak ada (meskipun itu terlihat di desktop saya).

    - Itu masalah pertama yang saya miliki:
    Saya tidak dapat menghapus folder.

    - Masalah kedua dan menurut saya lebih penting:
    Dalam upaya untuk menghapus folder tersebut, saya meletakkan folder FOTO. Sekarang ketika saya membuka folder yang "tidak ada" itu kosong dan FOTO-FOTO tidak ada.

    Bagaimana cara memulihkan foto? Saya telah memberikan opsi di dalam folder "Tampilkan dokumen tersembunyi" tetapi folder FOTO tidak muncul.

    Saya harap Anda tahu bagaimana ini diselesaikan.
    Terima kasih.

    1.    Valdo dijo

      Ada dua user yang utama: root dan your_user (misalnya natalia). Keduanya memiliki folder pribadi. your_user di / home dan root di / (direktori root). Dengan mengklik kanan pada folder, lihat siapa pemiliknya. Jika root dengan manajer file Anda menggunakan sudo atau gksu atau kdesu tergantung pada lingkungan yang Anda gunakan, buka direktori root -> root -> Desktop dan Anda mungkin akan menemukan foto-foto dan Anda dapat menghapus folder tersebut. Beberapa distro ketika Anda bukan pemilik file atau direktori dan Anda tidak memiliki izin akses memberi tahu Anda bahwa direktori / file tidak ada. Jika Anda adalah pemilik dan Anda bukan root, lakukan hal yang sama dengan pengelola file dengan sudo, dll dan buka direktori root -> / home -> personal_folder -> Desktop dan lihat apakah fotonya ada dan apakah Anda dapat menghapus foldernya.
      Jika ini tidak berhasil, Anda harus melihat opsi lain dari terminal (konsol).

  17.   Pedro Manuel Aguayo Munoz dijo

    Hai apa kabar?

    #! / bin / bash
    membaca rute
    #Enter ~ / Desktop
    #Lalu saya mencoba menavigasi direktori itu
    cd $ path
    # Saya mendapatkan pesan bash berikut: cd: ~ / Desktop: File atau direktori tidak ada

    Pertanyaan saya adalah, apa yang dapat saya lakukan agar saya memasukkannya dari keyboard dan menganggapnya sebagai jalur direktori?

  18.   Miguel dijo

    Dan bagaimana saya bisa tahu jika ada grup,

  19.   heidi dijo

    bagus Saya punya masalah di canaima saya ketika saya menekan tombol cunaguaro dikatakan bahwa tidak ada file atau direktori seperti yang akan dilakukan untuk menyelesaikan masalah itu dan sisanya tidak membuka cunaguaro tolong terima kasih.

  20.   Carlos dijo

    Bagaimana Anda melakukan jika dalam BASH jika nama file memiliki spasi?
    Sebagai contoh:
    Data.xlsx bulan April

    Untuk menanyakan apakah file tersebut ada

    1.    Manuel Alcocer Jimenez dijo

      Carlos, seperti ini:

      if [["$ variable" == Data \ bulan \ of \ April.xlsx]]; lalu echo 'match'; fi

      Anda juga dapat:
      if [["$ variable" == 'Data untuk bulan April.xlsx']]; lalu echo 'match'; fi

      Opsi lain:
      [["$ Variable" == 'Data untuk bulan April.xlsx']] && echo 'cocok' || echo 'tidak cocok'

      Di beberapa area gelap internet, mereka merekomendasikan menggunakan [[]] daripada [], dan jika Anda akan membandingkan angka maka: ((variabel> = 3)) && echo 'variabel lebih besar dari atau sama dengan 3' | | variabel echo 'kurang dari 3'

      Oleh karena itu, untuk angka:

      if ((angka! = 4)); lalu echo "$ {number} bukan 4"; else echo "$ {number} adalah 4"; fi

  21.   Cesar Matheus dijo

    bagaimana Anda dapat membuat kode untuk memvalidasi jika direktori memiliki teks tertentu, untuk dapat mengeditnya.

    contoh:

    jika (teks1)

    tidak melakukan apapun

    lain

    ubah teks1 menjadi teks2

  22.   Miguel dijo

    sebuah pertanyaan, bagaimana cara memeriksa setiap 15 detik jika file tersebut ada atau tidak, terima kasih.

  23.   tepi sungai dijo

    Halo,
    ini:
    if [-w / home / Komun / Logs / ti]; kemudian
    Cari tahu apakah file tersebut dapat ditulis. Tetapi ini didasarkan pada izin pengguna. Apakah dapat dilakukan untuk mengetahui apakah grup atau yang lain memiliki izin?