Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 科恩希尔指挥部_Shell_Unix_Grep_Ksh - Fatal编程技术网

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
      nullglob
      设置的状态(在Bash中;我不知道它们的Korn shell等价项):

    • grep
      与一起工作,而不是一起工作
      *
      是有效的glob,但不是前面没有任何内容的有效正则表达式

        • 未加引号的星号在传递到
          grep
          之前。这意味着,如果除
          .dir
          目录外,您的目录为空,则传递到
          grep
          的字符串取决于
          dotglob
          nullglob
          设置的状态(在Bash中;我不知道它们的Korn shell等价项):

        • 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