grep -v "grep"
mengambil input baris demi baris, dan hanya output baris yang grep
tidak muncul. Tanpa -v
itu, akan hanya output garis di mana grep
tidak muncul. Lihat man grep
detailnya.
Sejauh menyangkut grep
utilitas itu sendiri, itu tidak penting bahwa pola grep
diteruskan sebagai argumen adalah sama dengan namanya. Tetapi dalam kebanyakan kasus di mana grep -v grep
sebenarnya 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 ps
perintah. 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
grep
Perintah 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
grep
tanpa -F
memperlakukan polanya sebagai ekspresi reguler dan bukan string yang tetap . Jadi pendekatan lain adalah menulis ekspresi reguler yang sama persis xfce
tetapi 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 grep
bahkan ketika itu bukan grep
perintah yang baru saja Anda jalankan sendiri. Mereka bahkan tidak mungkin grep
perintah - 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 grep
membaca 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.