以下是 Linux 中常用符号命令的分类对比及实例,按功能整理:
一、通配符(Wildcards)
1. * vs ? vs []
*:匹配任意数量字符(包括0个)。1
ls *.txt # 列出所有以 .txt 结尾的文件
?:匹配单个字符。1
ls file?.txt # 匹配 file1.txt、fileA.txt 等
[]:匹配括号内的任意单个字符。1
ls file[1-3].txt # 匹配 file1.txt、file2.txt、file3.txt
二、重定向(Redirection)
1. > vs >>
>:覆盖输出到文件(清空原内容)。1
echo "Hello" > output.txt # 覆盖写入
>>:追加输出到文件。1
echo "World" >> output.txt # 追加到文件末尾
2. < vs <<
<:从文件读取输入。1
grep "error" < log.txt # 从 log.txt 中搜索 "error"
<<:Here Document(输入多行内容直到终止符)。1
2
3
4cat << EOF
Line 1
Line 2
EOF
三、管道与命令组合
1. |(管道)
- 将前一个命令的输出作为后一个命令的输入。
1
ls -l | grep ".txt" # 列出文件后过滤出包含 ".txt" 的行
2. && vs ||
&&:前一条命令成功(退出码0)后执行后续命令。1
make && make install # 编译成功后安装
||:前一条命令失败后执行后续命令。1
ping example.com || echo "Ping failed"
四、引用与转义
1. "(双引号) vs '(单引号)
":允许变量和命令替换。1
echo "$USER" # 输出当前用户名(如 root)
':完全原样输出,禁止替换。1
echo '$USER' # 输出 $USER(不解析变量)
2. \(反斜杠)
- 转义单个字符。
1
echo "Price: \$100" # 输出 Price: $100
五、命令替换与变量
1. $() vs ` `
$():执行命令并替换结果(推荐使用)。1
echo "Today is $(date)"
` `:功能同$(),但可读性较差。1
echo "Today is `date`"
2. ${}(变量操作)
- 定义或操作变量。
1
2name="Linux"
echo "${name}_OS" # 输出 Linux_OS
六、进程控制
1. &(后台运行)
- 将命令放到后台执行。
1
sleep 10 & # 后台运行 sleep 命令
2. ;(命令分隔符)
- 按顺序执行多条命令。
1
echo "Start"; sleep 2; echo "End"
七、其他符号
1. {}(大括号扩展)
- 生成序列或组合。
1
2echo {1..3} # 输出 1 2 3
echo file{a,b}.txt # 输出 filea.txt fileb.txt
2. !(历史命令与逻辑非)
- 调用历史命令或逻辑否定。
1
2
3!! # 执行上一条命令
!grep # 执行最近一条以 grep 开头的命令
[ ! -f file.txt ] # 如果文件不存在则条件为真
总结对比表
| 符号 | 功能说明 | 实例 |
|---|---|---|
* |
匹配任意数量字符 | rm *.log |
>/>> |
覆盖/追加输出到文件 | echo "A" > file / echo "B" >> file |
&&/` |
` | |
"/' |
允许/禁止变量替换 | echo "$PATH" / echo '$PATH' |
$()/`` |
命令替换(推荐前者) | echo $(ls) |
| ` | ` | 管道传递数据 |
常见误区
- 通配符与正则表达式:通配符(
*,?)用于文件名匹配,而正则表达式(如grep中的.*)用于文本匹配。 >与>>:误用覆盖符号可能导致文件内容丢失。- 引号差异:单引号会忽略变量,双引号会展开变量。
掌握这些符号的用法可以大幅提高 Linux 命令行的操作效率!