前几天我在 RHEL7.1 系统上,我想在所有 systemd 单元文件所在的 /usr/lib/systemd/system 目录中搜索特定词。我像往常一样使用 grep 命令。看看发生了什么:
# cd /usr/lib/systemd/system
# grep After *
grep: invalid option -- '.'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Run Code Online (Sandbox Code Playgroud)
然后,我尝试了 RHEL7.0、RHEL7.2、RHEL7.3 并得到了相同的结果。如果我在任何其他目录中使用 grep 命令,一切正常。谁能告诉我为什么我会有这种奇怪的行为?
问题是该目录中有一个以破折号开头的文件,即-.slice
.
当您使用*
所有文件名时,将成为 的参数grep
,-.slice
并被解释为试图将选项传递给 grep。由于破折号后的第一个字符是一个点,您会收到该消息:
grep: invalid option -- '.'
Run Code Online (Sandbox Code Playgroud)
如果你只是尝试,你会发现你在目录中扩展shell也有同样的问题
ls *
Run Code Online (Sandbox Code Playgroud)
一旦理解了问题,就很容易找到答案。也就是说,您可以添加双破折号以表示grep
正常选项列表已结束,并且以下所有参数都将被视为文件名:
grep After -- *
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
879 次 |
最近记录: |