GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan perintah berkali-kali, menggunakan bash Shell?

Solusi 1:

Saya tidak berpikir ada perintah atau shell bawaan untuk ini, karena ini adalah subset sepele dari apa yang dilakukan oleh Bourne shell for loop dirancang untuk dan menerapkan perintah seperti ini sendiri karena itu cukup sederhana.

Sesuai saran JimB, gunakan bawaan Bash untuk membuat urutan:

for i in {1..10}; do command; done

Untuk versi bash yang sangat lama, Anda dapat menggunakan seq perintah:

for i in `seq 10`; do command; done

Ini berulang sepuluh kali mengeksekusi command setiap kali - bisa berupa pipa atau serangkaian perintah yang dipisahkan oleh ; atau && . Anda dapat menggunakan $i variabel untuk mengetahui di iterasi mana Anda berada.

Jika Anda menganggap skrip one-liner ini dan untuk beberapa alasan yang tidak ditentukan (tetapi mungkin valid) yang tidak diinginkan, Anda dapat menerapkannya sebagai perintah, mungkin sesuatu seperti ini di .bashrc Anda (belum diuji):

#function run
run() {
    number=$1
    shift
    for i in `seq $number`; do
      [email protected]
    done
}

Penggunaan:

run 10 command

Contoh:

run 5 echo 'Hello World!'

Solusi 2:

ps aux | grep someprocess sepertinya Anda ingin melihat perubahan program untuk waktu yang tetap. Eduardo memberikan jawaban yang menjawab pertanyaan Anda dengan tepat tetapi ada alternatifnya:watch :

watch 'ps aux | grep someprocess'

Perhatikan bahwa saya telah meletakkan perintah dalam tanda kutip tunggal untuk menghindari shell menafsirkan perintah sebagai "run watch ps aux" dan menyalurkan hasilnya melalui grep someprocess . Cara lain untuk melakukan perintah sebelumnya adalah:

watch ps aux \| grep someprocess

Secara default, watch menyegarkan setiap dua detik, yang dapat diubah menggunakan -n pilihan. Misalnya, jika ingin interval 1 detik:

watch -n 1 'ps aux | grep someprocess'

Solusi 3:

Hanya untuk bersenang-senang

pgrep ssh ;!!;!!;!!;!!;!!;!!

Solusi 4:

Coba ini:

yes ls | head -n5 | bash

Ini membutuhkan perintah untuk dieksekusi dalam sub-shell, sedikit penalti kinerja. YMMV. Pada dasarnya, Anda mendapatkan perintah "yes" untuk mengulang string "ls" sebanyak N kali; sementara "head -n5" mengakhiri loop pada 5 pengulangan. Pipa terakhir mengirimkan perintah ke shell pilihan Anda.

Kebetulan csh -seperti cangkang memiliki repeat bawaan memerintah. Anda bisa menggunakannya untuk menjalankan perintah Anda di bash sub-shell!

Solusi 5:

mirip dengan balasan sebelumnya, tetapi tidak memerlukan for loop:

seq 10 | xargs -I -- echo "hello"

pipa keluaran seq ke xargs tanpa argumen atau opsi


Linux
  1. Cara Menjalankan atau Mengulang Perintah Linux Setiap X Detik Selamanya

  2. Cara Menjalankan Perintah Tunggal Pada Beberapa Sistem Jarak Jauh Sekaligus

  3. Bagaimana cara menjalankan perintah Vim dari shell?

  1. [Linux] :Cara mengecualikan direktori saat menggunakan perintah shell "tar"

  2. Cara Mengonfigurasi Bash Shell Terbatas di Linux

  3. Bagaimana saya bisa menemukan versi shell saya menggunakan perintah Linux?

  1. Cara Menambahkan Beberapa Rute di Linux Menggunakan Contoh Perintah ip

  2. Bagaimana cara menjalankan skrip shell di konsol Unix atau terminal Mac?

  3. Menggunakan jam tangan untuk menjalankan fungsi berulang kali di Bash?