寫入其中的數據直接丟棄,但命令返回成功。常用於「只關心退出狀態,不關心輸出」的場景:
if grep hello TestFile > /dev/null; then
echo "Found"
else
echo "NOT Found"
fi
對比不重定向時,grep 會輸出匹配行。
打開它會自動重定向到進程關聯的終端,適合讀取密碼等敏感交互輸入:
printf "Enter new password: "
stty -echo # 關閉回顯
read password < /dev/tty
printf "\nEnter again: "
read password2 < /dev/tty
stty echo # 恢復回顯
sh -x script.sh執行前每條命令前加 + 輸出,適合小腳本。
set -x / set +xset -x
echo "this will be traced"
set +x
echo "this will NOT be traced"
適合大型腳本定位特定區域問題。
| 元字符 | 模式含義 | 用例 | 適用 |
|---|---|---|---|
\ | 轉義,恢復字面義 | \(..\) 匹配括號本身 | BRE/ERE |
. | 匹配任意單字符 | a.b 匹配 abb、acb | BRE/ERE |
* | 前字符 0-n 次 | a*b 匹配 ab、aab | BRE/ERE |
^ | 行首錨定 | ^ab 匹配以 ab 開頭 | BRE/ERE |
$ | 行尾錨定 | ab$ 匹配以 ab 結尾 | BRE/ERE |
[...] | 字符集,- 表範圍,^ 取反 | [a-z0-9]、[^abc] | BRE/ERE |
\{n,m\} | 區間量詞(BRE 需轉義) | ab\{2,4\} 匹配 abb~abbbb | BRE |
{n,m} | 區間量詞(ERE 無需轉義) | ab{2,4} | ERE |
\+ | 1-n 次(ERE) | ab+ 匹配 ab、abb... | ERE |
\? | 0-1 次(ERE) | ab? 匹配 a 或 ab | ERE |
\| | 分支(或) | foo\|bar | ERE |
\(...\) | 捕獲組,引用 \1~\9 | \(ab\).*\1 匹配 ab...ab | BRE |
(...) | 捕獲組(ERE) | (ab)\1 | ERE |
\w | 單詞字符 [[:alnum:]_] | ERE/部分工具 | |
\W | 非單詞字符 | ERE/部分工具 | |
\< \> | 單詞邊界 | \<read 匹配 readme | BRE/ERE |
[:alpha:] 等 POSIX 字符類 | 如 [:digit:] [:space:] 等 | [[:alpha:]!] | BRE/ERE |
grep、sed、viegrep(= grep -E)、awk注意:grep 默認用 BRE,加 -E 切換 ERE;sed 用 BRE,但部分實現支持 -r 切換 ERE。