簡體   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