*
- 匹配任意数量任意字符
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命令行操作的效率和灵活性。