Shell 科恩希尔指挥部
我有一个名为Shell 科恩希尔指挥部,shell,unix,grep,ksh,Shell,Unix,Grep,Ksh,我有一个名为.dir的文件夹。当我键入ls-al | grep.dir时,它会找到它并显示结果,但当我键入ls-al | grep*dir或(*I*,*d*)时,它不会显示任何内容。我不明白为什么找不到匹配项 当您执行grep*dir时,可能会发生两件事: 如果有任何以dir结尾的非隐藏文件,例如(foodir和bardir),该命令将扩展到grep foodir bardir,并且它不会执行您所期望的操作。此外,行为将根据只有一个文件或多个文件而有所不同 没有以dir结尾的非隐藏文件,则*di
.dir
的文件夹。当我键入ls-al | grep.dir
时,它会找到它并显示结果,但当我键入ls-al | grep*dir
或(*I*
,*d*
)时,它不会显示任何内容。我不明白为什么找不到匹配项 当您执行grep*dir
时,可能会发生两件事:
dir
结尾的非隐藏文件,例如(foodir
和bardir
),该命令将扩展到grep foodir bardir
,并且它不会执行您所期望的操作。此外,行为将根据只有一个文件或多个文件而有所不同dir
结尾的非隐藏文件,则*dir
不会展开,而是用作grep调用中的正则表达式。但grep中的星号用于重复上一次匹配的任意次数,因为没有先前的字符,所以它代表它自己。结论:grep在字面上寻找“*dir”*dir
(
代表任何字符):
或者,如果您只想查看您的目录:
ls -la | grep "\.dir"
请注意,如果不使用
\
转义
,它还会显示文件,例如adir
,\u dir
。执行grep*dir
时,可能会发生两种情况:
dir
结尾的非隐藏文件,例如(foodir
和bardir
),该命令将扩展到grep foodir bardir
,并且它不会执行您所期望的操作。此外,行为将根据只有一个文件或多个文件而有所不同dir
结尾的非隐藏文件,则*dir
不会展开,而是用作grep调用中的正则表达式。但grep中的星号用于重复上一次匹配的任意次数,因为没有先前的字符,所以它代表它自己。结论:grep在字面上寻找“*dir”*dir
(
代表任何字符):
或者,如果您只想查看您的目录:
ls -la | grep "\.dir"
请注意,如果不使用\
转义
,它还会显示文件,如adir
,\u dir
…- 未加引号的星号在传递到
之前。这意味着,如果除grep
目录外,您的目录为空,则传递到.dir
的字符串取决于grep
和dotglob
设置的状态(在Bash中;我不知道它们的Korn shell等价项):nullglob
与一起工作,而不是一起工作grep
是有效的glob,但不是前面没有任何内容的有效正则表达式*
- 未加引号的星号在传递到
之前。这意味着,如果除grep
目录外,您的目录为空,则传递到.dir
的字符串取决于grep
和dotglob
设置的状态(在Bash中;我不知道它们的Korn shell等价项):nullglob
与一起工作,而不是一起工作grep
是有效的glob,但不是前面没有任何内容的有效正则表达式*
$ cd -- "$(mktemp -d)"
$ mkdir .dir
$ shopt -u dotglob nullglob
$ echo *dir
*dir
$ shopt -s nullglob
$ echo *dir
$ shopt -s dotglob
$ echo *dir
.dir