* - 匹配任意数量任意字符
ls *.txt # 列出所有.txt文件
? - 匹配单个任意字符
ls file?.txt # 匹配file1.txt, fileA.txt等
[] - 匹配括号内的任一字符
ls file[123].txt # 匹配file1.txt, file2.txt, file3.txt
. - 当前目录
./script.sh # 执行当前目录下的script.sh
.. - 父目录
cd .. # 切换到上级目录
~ - 用户主目录
cd ~ # 切换到当前用户主目录
- - 前一个工作目录
cd - # 切换到前一个工作目录
> - 输出重定向(覆盖)
echo "Hello" > file.txt # 将Hello写入file.txt(覆盖原有内容)
>> - 输出重定向(追加)
echo "World" >> file.txt # 将World追加到file.txt末尾
< - 输入重定向
wc -l < file.txt # 统计file.txt的行数
| - 将前一个命令的输出作为后一个命令的输入
bash
ps aux | grep nginx # 查找nginx进程; - 顺序执行多个命令
command1; command2 # 先执行command1,再执行command2
&& - 前一个命令成功才执行后一个
make && make install # 如果make成功才执行make install
|| - 前一个命令失败才执行后一个
command1 || command2 # 如果command1失败才执行command2
() - 在子shell中执行命令
(cd /tmp && ls) # 在子shell中切换目录并列出文件
{} - 在当前shell中执行命令
{ cd /tmp && ls; } # 在当前shell中切换目录并列出文件
'' - 单引号(强引用,不解释任何特殊字符)
echo '$HOME' # 输出$HOME,而不是变量值
"" - 双引号(弱引用,解释变量和命令替换)
echo "$HOME" # 输出用户主目录路径
`` - 反引号(命令替换,等同于$())
echo "Today is `date`" # 输出当前日期
\ - 转义单个字符
bash
echo "Price: \$100" # 输出Price: $100& - 后台运行
long_running_command & # 在后台运行命令
$! - 最后一个后台进程的PID
command & echo $! > pidfile # 保存后台进程PID到文件
$ - 变量引用
echo $PATH # 输出PATH变量值
$0-$9 - 脚本参数
echo "Script name: $0" # 输出脚本名称
$# - 参数个数
echo "Number of arguments: $#" # 输出参数数量
$? - 上一条命令的退出状态
command; echo $? # 输出上一条命令的退出码
# - 注释
# 这是一行注释
: - 空命令
: # 什么都不做,返回0
! - 历史命令扩展或逻辑非
!ls # 执行最近以ls开头的命令
[[ ! -f file ]] # 如果file不存在
find /path -name "*.log" -exec rm {} \; # 删除所有.log文件
command1 > output.txt 2>&1 && command2 < input.txt || echo "Failed"
cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c | sort -nr
理解并熟练运用这些特殊字符可以大大提高Linux命令行操作的效率和灵活性。