繁体   English   中英

\\! 在Bash命令中

[英]\! In Bash Commands

\\!的功能是什么\\! 在bash命令中?

例如,我注意到下面的命令与\\!行为会有所不同\\!

find subdir -lname 'test*' \\! -newer somethinghere

Google搜索似乎未显示与\\!相关的任何内容\\! 命令行格式除外。

将反斜杠放在字符转义符之前,以防止将其解析为语法。 因此, \\! 是相当于'!'的简短形式 -确保find通过! 作为参数,而无需外壳以任何方式解释它。

如果没有上述任何一个,则为[[ $- = *H* ]] (在交互式shell中为默认值,并且默认情况下为true),并且histchars的默认值未更改! 触发历史扩展。 这是根据bash手册页的QUOTING部分:

当使用命令历史记录扩展工具时(请参见下面的HISTORY EXPANSION),历史记录扩展字符通常是! 必须加引号,以防止历史记录扩展。

用于否定 ,例如:

find . -readable 

将返回所有可读文件/目录,而

find . ! -readable

将返回所有无法读取的文件/目录(链接断开或-r权限)

\\ char用于转义。

但是,奇怪的是,在我的计算机(Debian / bash)上,我需要转义* char而不是!! 一。 更明确地说,我需要写

 find . -name abc\*

 find . -name abc\* ! -readable
 find . -name abc\* \! -readable

工作并具有相同的效果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM