Di UNIX, bagaimana menemukan perintah yang paling umum digunakan dalam sejarah?
Di UNIX, bagaimana menemukan perintah yang paling umum digunakan dalam sejarah?
Jawaban:
Ini lebih tergantung pada apa yang Anda inginkan dengan 'perintah'. Dari satu perspektif, sebuah perintah hanyalah sebuah executable yang dipanggil dari baris perintah, oleh karena itu ls
dan ls -alh /tmp/foo/bar/*tar.bz
keduanya adalah perintah ls
. Perspektif lain adalah bahwa perintah adalah jumlah dari bagian-bagiannya, yang berarti bahwa contoh di atas adalah 2 perintah yang berbeda.
Jika niat Anda adalah untuk menghitung perintah yang sepenuhnya unik dalam sejarah, Anda dapat menjalankan: history | cut -d' ' -f4- | uniq -c | sort -n
Perlu diketahui bahwa ini telah diuji pada sistem Debian, sintaks output dari perintah histori Anda mungkin sedikit berbeda. Sesuaikan angka '4' pada perintah untuk memilih kolom pengganti.
Jika Anda hanya ingin mempertimbangkan perintah pertama tanpa argumen, maka Anda dapat menjalankan: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n
Untuk memasukkan argumen tetapi tidak ada perintah berantai atau pipa yang mengikuti Anda bisa menjalankan: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n
Harap dicatat bahwa masing-masing dari ini mengurutkan jumlah perintah secara numerik dengan frekuensi tertinggi yang muncul terakhir.
sort
sebelum uniq
mendapatkan hitungan yang akurat karena hanya memeriksa baris yang berdekatan:history | cut -d' ' -f4- | cut -d' ' -f1 | sort | uniq -c | sort -n
Saya telah melihat jawaban vucar dan tok , keduanya sangat berguna tetapi Anda juga dapat menggunakan alat yang luar biasa awk
:
jika Anda ingin daftar perintah yang paling sering Anda gunakan:
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
untuk menemukan perintah yang paling sering digunakan:
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -1
bagi saya itu adalah vi
:
94 vi
Pendekatan lain adalah dengan menggunakan proses akuntansi BSD , yang juga tersedia di Linux (meskipun saya tidak tahu apakah itu diaktifkan secara default). Ini pada dasarnya membuat tab semua program yang dijalankan (dan beberapa langkah lain, seperti waktu CPU dikonsumsi dll) selama akuntansi aktif. Dari sana beberapa statistik agregat tersedia, antara lain: jenis daftar semua program yang pernah dijalankan pada sistem, diurutkan berdasarkan dll. Jumlah penggunaan tertinggi.
Perintah yang harus dicari adalah lastcomm
untuk menjalankan log dan sa
statistik gabungan. Kembali ke pertanyaan awal, dengan asumsi bahwa sistem yang bersangkutan akan memiliki akuntansi yang diaktifkan sejak diinstal, maka sa -n
akan memberikan daftar semua perintah yang pernah dieksekusi pada sistem (untuk semua pengguna), diurutkan berdasarkan frekuensi. Untuk pipa, setiap bagian dari pipa tentu saja akan dihitung secara terpisah, karena masing-masing bagian terdiri dari proses baru yang akan bercabang dua.
Untuk lebih jelasnya, jurnal Linux memiliki artikel yang menjelaskan cara kerjanya. Saya sendiri mendapat ide dari panduan NetBSD ; banyak tips administrasi yang lebih umum di sana tidak spesifik untuk NetBSD tetapi berlaku untuk sistem Unix lainnya juga.
Anda dapat menggunakan perintah single cut:
history | cut -c 7-100 | sort | uniq -c | sort -nr