通配符用于模式匹配,常用于文件名扩展:
* - 匹配任意数量的任意字符(包括零个字符)
ls *.txt 列出所有.txt文件? - 匹配任意单个字符
ls file?.txt 匹配file1.txt、fileA.txt等[] - 匹配括号内的任意一个字符
ls file[123].txt 匹配file1.txt、file2.txt、file3.txt[a-z]、[0-9]、[A-Za-z0-9][!0-9] 匹配非数字字符{} - 生成组合匹配
ls file{1,2,3}.txt 相当于file1.txt file2.txt file3.txt{1..5} 生成1 2 3 4 5元字符对shell有特殊意义:
| - 管道,将一个命令的输出作为另一个命令的输入
cat file.txt | grep "pattern"> - 输出重定向(覆盖)
echo "text" > file.txt>> - 输出重定向(追加)
echo "more text" >> file.txt< - 输入重定向
wc -l < file.txt; - 命令分隔符,在一行中执行多个命令
command1; command2& - 后台执行
long_running_command &&& - 逻辑与,前一个命令成功才执行后一个
command1 && command2|| - 逻辑或,前一个命令失败才执行后一个
command1 || command2$ - 变量引用
echo $PATH# - 注释符号
# 这是一条注释! - 历史命令引用或逻辑非
!123 执行历史记录中第123条命令[ ! -f file.txt ] 检查文件不存在用于取消字符的特殊含义:
\ - 反斜杠,转义单个字符
echo \$PATH 输出$PATH而不是变量值'' - 单引号,强引用,内部所有字符都作为普通字符
echo '$PATH' 输出$PATH"" - 双引号,弱引用,内部变量和命令替换仍会解析
echo "$PATH" 输出PATH变量的值` - 反引号,用于命令替换(推荐使用$()替代)
echo "Today isdate"echo "Today is $(date)"echo "He said, \"Hello\""理解这些字符的用法对于编写shell脚本和高效使用命令行至关重要。