grep -v "grep"mengambil input baris demi baris, dan hanya output baris yang greptidak muncul. Tanpa -vitu, akan hanya output garis di mana grep tidak muncul. Lihat man grepdetailnya.
Sejauh menyangkut greputilitas itu sendiri, itu tidak penting bahwa pola grepditeruskan sebagai argumen adalah sama dengan namanya. Tetapi dalam kebanyakan kasus di mana grep -v grepsebenarnya muncul, ini bukan kebetulan.
grep -v grep(atau grep -v 'grep'atau grep -v "grep") sering muncul di sisi kanan pipa yang sisi kirinya adalah psperintah. Itu mungkin di mana Anda telah melihatnya. Sebagai contoh, saya mungkin sedang mencari menjalankan program yang nama, jalur, atau argumen baris perintah menyarankan mereka terkait dengan Xfce:
ek@Io:~$ ps x | grep xfce
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+ 0:00 grep --color=auto xfce
grepPerintah saya ditunjukkan pada output, tetapi bukan itu yang saya cari. Saya mencari informasi tentang proses yang sudah berjalan ketika saya memeriksa apa yang sedang berjalan, bukan proses yang hanya berjalan karena upaya saya untuk memeriksa apa yang sedang berjalan.
Salah satu cara umum untuk menghilangkan gangguan ini adalah dengan menambahkan pipa lain ke grep -v grep:
ek@Io:~$ ps x | grep xfce | grep -v grep
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
greptanpa -Fmemperlakukan polanya sebagai ekspresi reguler dan bukan string yang tetap . Jadi pendekatan lain adalah menulis ekspresi reguler yang sama persis xfcetetapi ditulis berbeda. Sebagai contoh:
ek@Io:~$ ps x | grep '[x]fce'
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
Ini berfungsi karena [x]merupakan kelas karakter yang cocok persis dengan hurufnya x.
Salah satu kekurangan dari metode populer itu adalah mereka akan menyaring baris yang berisi grepbahkan ketika itu bukan grepperintah yang baru saja Anda jalankan sendiri. Mereka bahkan tidak mungkin grepperintah - perintah hanya yang namanya, jalur, atau argumen baris perintah mengandung grep . Jadi, seperti yang Sergiy Kolodyazhnyy tunjukkan , seringkali tidak satu pun dari cara-cara itu (atau pendekatan lain yang melibatkan pemipaan output ps) benar-benar ideal dan, seperti yang disebutkan Nic Hartley , cara lain sering digunakan . Sebagai contoh:pgrep
ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
-a menunjukkan baris perintah penuh. Abaikan untuk hanya menampilkan nomor ID proses.
-f mencari di baris perintah penuh. Hilangkan untuk mencari hanya nama.
man grepmembaca halaman manual referensi untuk perintah, atau untuk informasi lebih lanjut tentang perintah tertentu (termasuk grep) Anda dapatinfo grep.... mis. sistem Anda memiliki dokumentasi yang seringkali sangat berguna.