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