grep -v "grep"
lấy dòng đầu vào theo dòng và chỉ xuất ra những dòng grep
không xuất hiện. Nếu không -v
, nó sẽ sản lượng chỉ các dòng trong đó grep
không xuất hiện. Xem man grep
để biết chi tiết.
Đối với các grep
tiện ích liên quan, nó không quan trọng rằng mô hình grep
được truyền cho nó như là một đối số giống như tên của nó. Nhưng trong hầu hết các trường hợp grep -v grep
thực sự xuất hiện, điều này không phải là ngẫu nhiên.
grep -v grep
(hoặc grep -v 'grep'
hoặc grep -v "grep"
) thường xuất hiện ở phía bên phải của đường ống có phía bên trái là ps
lệnh. Đó có thể là nơi bạn đã thấy nó. Ví dụ: tôi có thể đang tìm kiếm các chương trình đang chạy có tên, đường dẫn hoặc đối số dòng lệnh cho thấy chúng có liên quan đến 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
Lệnh của tôi đã được hiển thị trong đầu ra, nhưng đó không phải là điều tôi đang tìm kiếm. Tôi đang tìm kiếm thông tin về các quy trình đã chạy khi tôi kiểm tra những gì đang chạy, không phải là quá trình chỉ chạy vì nỗ lực của tôi để kiểm tra những gì đang chạy.
Một cách phổ biến để loại bỏ sự phân tâm này là thêm một đường ống khác vào 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
mà không -F
coi mẫu của nó là một biểu thức thông thường chứ không phải là một chuỗi cố định . Vì vậy, một cách tiếp cận khác là viết một biểu thức chính quy khớp chính xác xfce
nhưng được viết khác nhau. Ví dụ:
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
Điều này hoạt động vì [x]
là một lớp nhân vật phù hợp chính xác với chữ cái x
.
Một thiếu sót của các phương thức phổ biến đó là chúng sẽ lọc ra các dòng có chứa grep
ngay cả khi chúng không phải là grep
lệnh bạn tự chạy. Chúng thậm chí có thể không phải là grep
các lệnh - chỉ là các lệnh có tên, đường dẫn hoặc đối số dòng lệnh chứa grep
. Vì vậy, như Sergiy Kolodyazhnyy đã chỉ ra , thường thì cả hai cách này (cũng không phải cách tiếp cận nào khác liên quan đến đường ống đầu ra ps
) thực sự lý tưởng và, như Nic Hartley đã đề cập , những cách khác thường sử dụng pgrep
. Ví dụ:
ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
-a
hiển thị dòng lệnh đầy đủ. Bỏ qua nó để chỉ hiển thị số ID quá trình.
-f
tìm kiếm trong dòng lệnh đầy đủ. Bỏ qua nó để chỉ tìm kiếm tên.
man grep
đọc trang hướng dẫn tham khảo cho lệnh hoặc để biết thêm thông tin về các lệnh nhất định (bao gồm grep) bạn có thểinfo grep
.... tức là. hệ thống của bạn có tài liệu thường rất tiện dụng.