GNU/Linux >> Belajar Linux >  >> Linux

Cara Menjalankan Semua Script Di Direktori Di Linux

Suatu hari saya telah menguji beberapa skrip shell dasar yang saya buat untuk bersenang-senang. Karena saya baru mengenal skrip shell, saya menjalankan dan menguji skrip satu per satu. Tidak apa-apa jika hanya ada beberapa skrip. Seiring bertambahnya jumlah skrip, saya merasa agak memakan waktu untuk menguji semuanya. Setelah sedikit pencarian web, saya menemukan beberapa metode untuk menjalankan semua skrip dalam direktori di Linux, satu demi satu.

Jalankan semua skrip dalam direktori di Linux

Saya memiliki beberapa skrip di direktori Documents saya.

$ ls Documents/
linux.sh ostechnix.sh script1.sh script2.sh script3.sh script4.sh

Semuanya adalah skrip shell satu baris sederhana yang menampilkan string yang diberikan menggunakan perintah "echo" dalam output standar.

Sebelum saya tahu bahwa kita dapat menjalankan semua skrip dalam satu folder, saya biasanya membuat skrip tersebut dapat dieksekusi seperti:

$ chmod +x script.sh

Kemudian saya menjalankannya menggunakan perintah:

$ ./script.sh

Atau,

$ sh script.sh

Sekali lagi, saya membuat skrip kedua dapat dieksekusi dan menjalankannya dan seterusnya.

Nah, ada cara yang lebih baik untuk melakukan ini. Kita dapat menjalankan semua skrip dalam direktori atau jalur menggunakan "run-parts" memerintah. Perintah run-parts digunakan untuk menjalankan skrip atau program dalam direktori atau jalur.

$ run-parts <directory-path>

Satu kelemahan dengan perintah run-parts adalah tidak menjalankan semua skrip. Ini hanya akan berfungsi jika skrip Anda memiliki nama yang benar. Nama harus seluruhnya terdiri dari huruf besar dan kecil ASCII, angka ASCII, garis bawah ASCII, dan tanda hubung minus ASCII.

Untuk mengatasi masalah penamaan ini, kita dapat menggunakan regex pilihan. Misalnya, perintah berikut akan menemukan dan menjalankan semua file skrip di ~/Documents direktori yang dimulai dengan huruf 's' dan diakhiri dengan ekstensi 'sh':

$ run-parts --regex '^s.*sh$' ~/Documents

Jalankan semua skrip dalam direktori di Linux dengan perintah run-parts

Pemecahan masalah:

Jika Anda mengalami kesalahan seperti di bawah ini;

run-parts: failed to exec Documents/script1.sh: Exec format error

Lihat panduan berikut untuk memperbaikinya.

  • Perbaiki “Exec format error” Saat Menjalankan Skrip Dengan Perintah run-parts

Demikian pula, untuk menjalankan semua file skrip yang diakhiri dengan .sh di direktori Documents, jalankan:

$ run-parts --regex '.*sh$' ~/Documents

Untuk mencetak nama semua file di direktori Documents yang dimulai dengan huruf 's' dan diakhiri dengan ekstensi 'sh', jalankan:

$ run-parts --list --regex '^s.*sh$' Documents
Documents/script1.sh
Documents/script2.sh
Documents/script3.sh
Documents/script4.sh

Perintah ini hanya akan mencetak nama file skrip, tetapi tidak akan mengeksekusinya.

Untuk membuat daftar semua file yang diakhiri dengan .sh di direktori Documents, jalankan:

$ run-parts --list --regex '.*sh$' Documents
Documents/linux.sh
Documents/ostechnix.sh
Documents/script1.sh
Documents/script2.sh
Documents/script3.sh
Documents/script4.sh

Perintah run-parts terutama digunakan oleh cron jobs dan tidak dapat diandalkan untuk penggunaan manual.

Cara lain untuk menghindari berurusan dengan mengganti nama skrip Anda agar sesuai dengan run-parts struktur penamaan, Anda dapat menggunakan find atau untuk loop perintah.

Untuk menemukan dan menjalankan semua file skrip yang dimulai dengan huruf "s" di folder ~/Documents, jalankan:

$ find ~/Documents -maxdepth 1 -type f -executable -name 's*' -exec {} \;

Jika Anda ingin menjalankan semua skrip di direktori yang diberikan dan semua subdirektorinya, hapus maxdepth pilihan pada perintah di atas:

$ find ~/Documents -type f -executable -name 's*' -exec {} \;

Untuk menjalankan semua skrip yang diakhiri dengan ekstensi ".sh" , jalankan:

$ find ~/Documents -maxdepth 1 -type f -executable -name '*.sh' -exec {} \;

Temukan dan jalankan semua skrip dalam direktori di Linux menggunakan perintah find

Metode ini juga memiliki kelemahan kecil. Perintah ini hanya dapat menjalankan skrip yang dapat diinterpretasikan oleh shell Anda saat ini. Jika Anda ingin menjalankan semua jenis skrip, misalnya awk, perl, python, skrip shell, gunakan for loop metode seperti di bawah ini.

$ for f in ~/Documents/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done

Perintah di atas akan menjalankan skrip yang dimulai dengan huruf "s" di folder ~/Documents. Jika Anda ingin menjalankan semua file yang diakhiri dengan ekstensi ".sh", lakukan:

$ for f in ~/Documents/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done

Untuk detail lebih lanjut, lihat halaman manual.

$ man run-parts
$ man find

Semoga membantu.


Linux
  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Linux – Bagaimana Cara Menjalankan Bootloader Dari Linux?

  3. Cara gzip Direktori di Linux

  1. Cara memperbarui symlink Linux

  2. Cara Membuat Direktori Bersama untuk Semua Pengguna di Linux

  3. Cara Mendaftar Semua Paket yang Terinstal Di Linux

  1. Cara Mengganti Nama Direktori di Linux

  2. Cara mendapatkan ukuran direktori di Linux

  3. linux:cara menjalankan perintah di direktori tertentu