grep 与 ls 和正则表达式的奇怪行为

问题描述 投票:0回答:1

当我注意到“grep”命令的这种奇怪的异常行为时,我正在学习 Linux 命令。在

/usr/bin
目录中,当我运行时:

me@me-desktop:/usr/bin$ ls -l | grep bashb*
-rwxr-xr-x 1 root root        6988 Mar 31  2024 bashbug

这是预期的,但如果我在外面做同样的事情

/usr/bin

me@me-desktop:~/Code/linux$ ls -l /usr/bin | grep bashb*
-rwxr-xr-x 1 root root     1446024 Mar 31  2024 bash
-rwxr-xr-x 1 root root        6988 Mar 31  2024 bashbug
-rwxr-xr-x 1 root root        4527 Apr 17  2023 dh_bash-completion
lrwxrwxrwx 1 root root           4 Aug 20 23:14 rbash -> bash

如您所见,它现在可以选择忽略

b
中的最后一个
bashb

在许多其他情况下也会发生这种情况。例如如果您这样做

apt list | grep lib*
,那么它也会列出带有
li
的内容。

regex linux bash grep
1个回答
0
投票

bashb*
ls -l | grep bashb*
中进行通配并匹配文件
bashbug
。您的
grep
实际上变成了

ls -l | grep bashbug

当您的当前目录包含匹配文件时,

bashb*
按原样使用,这也是错误的,因为它会匹配名称中任何位置带有
bash
的任何文件,后跟0个或多个
b 
的。

© www.soinside.com 2019 - 2024. All rights reserved.