bash命令中\!
的功能是什么?
例如,我注意到以下此命令的行为与\!
:
find subdir -lname 'test*' \! -newer somethinghere
Google搜索似乎没有显示与\!
特别相关的任何内容,除了命令行格式。
答案 0 :(得分:3)
在角色转义之前加上反斜杠,防止它被解析为语法。因此,testVec
相当于\!
- 它确保'!'
作为参数传递find
,而shell不会以任何方式解释它。
如果没有其中任何一个,如果!
(在交互式shell中默认情况下为true),并且[[ $- = *H* ]]
未从其默认值修改,则histchars
会触发历史记录扩展。这是根据bash手册页的QUOTING部分:
当使用命令历史记录扩展工具时(请参阅下面的历史扩展),必须引用历史记录扩展字符(通常为
!
)以防止历史记录扩展。
答案 1 :(得分:2)
!用于否定,例如:
find . -readable
将返回所有可读文件/目录,而
find . ! -readable
将返回所有可以不读取的文件/目录(断开链接或-r权限)
\ 字符用于转义。
然而,好奇地在我的电脑上(Debian / bash)我需要逃避* char但不是!一。为了更明确,我需要写
find . -name abc\*
但是
find . -name abc\* ! -readable
find . -name abc\* \! -readable
工作并具有相同的效果