Anda dapat man grepmembaca halaman manual referensi untuk perintah, atau untuk informasi lebih lanjut tentang perintah tertentu (termasuk grep) Anda dapat info grep.... mis. sistem Anda memiliki dokumentasi yang seringkali sangat berguna.
guiverc
12
grep -v "grep"sering digunakan untuk menyaring grep sendiri saat mendaftar proses dan yang biasanya melibatkan 3 jalur pipa, meskipun ada metode yang lebih baik tentu saja pgrepyang memungkinkan "pipa ledeng" jauh lebih sedikit. Lihat unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy
13
Itu berhasil. Saya memanggil rootkit saya grep.
Joshua
Biasanya digunakan dalam konteks yang tidak terkait keamanan seperti di ps aux | grep fubar | grep -v grepmana fubarsesuatu yang saya kembangkan, yang telah berhenti merespons, dan yang id saya ingin temukan sehingga saya dapat membunuhnya. Asumsikan ada dua dari mereka jadi killalltidak pantas.
nigel222
Jawaban:
69
grep -v "grep"mengambil input baris demi baris, dan hanya output baris yang greptidak muncul. Tanpa -vitu, akan hanya output garis di mana greptidak 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?Ssl0: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?Ssl0: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?Ssl0: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 mengandunggrep . 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
Mungkin juga layak disebut pgrepsebagai alternatif lainps | grep
Gugatan Dana Monica
8
grep --helpmemberi tahu kami apa yang -vdilakukan bendera:
-v,--invert-match select non-matching lines
Anda dapat menggunakan -vbendera untuk mencetak pertandingan yang terbalik; artinya, hanya cocok dengan baris yang tidak berisi kata yang diberikan. Misalnya, cetak semua baris yang tidak mengandung bilah kata:
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.grep -v "grep"
sering digunakan untuk menyaring grep sendiri saat mendaftar proses dan yang biasanya melibatkan 3 jalur pipa, meskipun ada metode yang lebih baik tentu sajapgrep
yang memungkinkan "pipa ledeng" jauh lebih sedikit. Lihat unix.stackexchange.com/q/74185/85039grep
.ps aux | grep fubar | grep -v grep
manafubar
sesuatu yang saya kembangkan, yang telah berhenti merespons, dan yang id saya ingin temukan sehingga saya dapat membunuhnya. Asumsikan ada dua dari mereka jadikillall
tidak pantas.Jawaban:
grep -v "grep"
mengambil input baris demi baris, dan hanya output baris yanggrep
tidak muncul. Tanpa-v
itu, akan hanya output garis di managrep
tidak muncul. Lihatman grep
detailnya.Sejauh menyangkut
grep
utilitas itu sendiri, itu tidak penting bahwa polagrep
diteruskan sebagai argumen adalah sama dengan namanya. Tetapi dalam kebanyakan kasus di managrep -v grep
sebenarnya muncul, ini bukan kebetulan.grep -v grep
(ataugrep -v 'grep'
ataugrep -v "grep"
) sering muncul di sisi kanan pipa yang sisi kirinya adalahps
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: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
:grep
tanpa-F
memperlakukan polanya sebagai ekspresi reguler dan bukan string yang tetap . Jadi pendekatan lain adalah menulis ekspresi reguler yang sama persisxfce
tetapi ditulis berbeda. Sebagai contoh:Ini berfungsi karena
[x]
merupakan kelas karakter yang cocok persis dengan hurufnyax
.Salah satu kekurangan dari metode populer itu adalah mereka akan menyaring baris yang berisi
grep
bahkan ketika itu bukangrep
perintah yang baru saja Anda jalankan sendiri. Mereka bahkan tidak mungkingrep
perintah - perintah hanya yang namanya, jalur, atau argumen baris perintah mengandunggrep
. Jadi, seperti yang Sergiy Kolodyazhnyy tunjukkan , seringkali tidak satu pun dari cara-cara itu (atau pendekatan lain yang melibatkan pemipaan outputps
) benar-benar ideal dan, seperti yang disebutkan Nic Hartley , cara lain sering digunakan . Sebagai contoh:pgrep
-a
menunjukkan baris perintah penuh. Abaikan untuk hanya menampilkan nomor ID proses.-f
mencari di baris perintah penuh. Hilangkan untuk mencari hanya nama.sumber
pgrep
sebagai alternatif lainps | grep
grep --help
memberi tahu kami apa yang-v
dilakukan bendera:Anda dapat menggunakan
-v
bendera untuk mencetak pertandingan yang terbalik; artinya, hanya cocok dengan baris yang tidak berisi kata yang diberikan. Misalnya, cetak semua baris yang tidak mengandung bilah kata:( baca selengkapnya ... )
sumber