Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux Shell 進階技巧大全:特殊文件、命令跟蹤與正則表達式

編輯:Linux 教學

一、兩個特殊文件:/dev/null 與 /dev/tty

/dev/null —— 數據黑洞

寫入其中的數據直接丟棄,但命令返回成功。常用於「只關心退出狀態,不關心輸出」的場景:

if grep hello TestFile > /dev/null; then
    echo "Found"
else
    echo "NOT Found"
fi

對比不重定向時,grep 會輸出匹配行。

/dev/tty —— 當前終端設備

打開它會自動重定向到進程關聯的終端,適合讀取密碼等敏感交互輸入:

printf "Enter new password: "
stty -echo          # 關閉回顯
read password < /dev/tty
printf "\nEnter again: "
read password2 < /dev/tty
stty echo           # 恢復回顯

二、命令跟蹤調試技巧

1. 全局跟蹤:sh -x script.sh

執行前每條命令前加 + 輸出,適合小腳本。

2. 部分跟蹤:腳本內嵌 set -x / set +x

set -x
echo "this will be traced"
set +x
echo "this will NOT be traced"

適合大型腳本定位特定區域問題。

三、正則表達式語法速查(BRE vs ERE)

元字符模式含義用例適用
\轉義,恢復字面義\(..\) 匹配括號本身BRE/ERE
.匹配任意單字符a.b 匹配 abb、acbBRE/ERE
*前字符 0-n 次a*b 匹配 ab、aabBRE/ERE
^行首錨定^ab 匹配以 ab 開頭BRE/ERE
$行尾錨定ab$ 匹配以 ab 結尾BRE/ERE
[...]字符集,- 表範圍,^ 取反[a-z0-9]、[^abc]BRE/ERE
\{n,m\}區間量詞(BRE 需轉義)ab\{2,4\} 匹配 abb~abbbbBRE
{n,m}區間量詞(ERE 無需轉義)ab{2,4}ERE
\+1-n 次(ERE)ab+ 匹配 ab、abb...ERE
\?0-1 次(ERE)ab? 匹配 a 或 abERE
\|分支(或)foo\|barERE
\(...\)捕獲組,引用 \1~\9\(ab\).*\1 匹配 ab...abBRE
(...)捕獲組(ERE)(ab)\1ERE
\w單詞字符 [[:alnum:]_]ERE/部分工具
\W非單詞字符ERE/部分工具
\< \>單詞邊界\<read 匹配 readmeBRE/ERE
[:alpha:] 等 POSIX 字符類如 [:digit:] [:space:] 等[[:alpha:]!]BRE/ERE

四、常用工具支持的正則類型

  • BRE:grep、sed、vi
  • ERE:egrep(= grep -E)、awk

注意:grep 默認用 BRE,加 -E 切換 ERE;sed 用 BRE,但部分實現支持 -r 切換 ERE。

Copyright © Windows教程網 All Rights Reserved