在 Linux 系统中,特殊符号在命令行操作、脚本编写和系统管理中扮演着重要角色。以下是对这些符号的详细分类和解释:
*
- 匹配任意数量任意字符
ls *.txt
列出所有.txt文件?
- 匹配单个任意字符
ls file?.txt
匹配file1.txt, fileA.txt等*
不同,它只代表一个字符[]
- 匹配指定范围内的单个字符
ls [abc]*.txt
匹配以a、b或c开头的.txt文件[a-z]
、[0-9]
、[A-Za-z0-9]
[!abc]
或[^abc]
表示不匹配a、b、c>
- 输出重定向(覆盖)
echo "text" > file.txt
覆盖写入文件>>
- 输出重定向(追加)
echo "text" >> file.txt
追加到文件末尾<
- 输入重定向
wc -l < file.txt
统计文件行数2>
- 错误输出重定向
command 2> error.log
将错误信息写入文件&>
- 同时重定向标准输出和错误输出
command &> output.log
将所有输出重定向到文件> file 2>&1
的简写|
- 管道
ls -l | grep "txt"
将ls输出传递给grep处理|&
- 同时管道标准输出和错误输出
command |& grep "error"
搜索命令的所有输出2>&1 |
的简写;
- 命令分隔符
command1; command2
顺序执行多个命令&&
- 逻辑与
command1 && command2
只有前一个成功才执行下一个||
- 逻辑或
command1 || command2
前一个失败才执行下一个&
- 后台运行
command &
在后台运行命令$
- 变量引用
echo $PATH
输出PATH变量的值$0
(脚本名), $1
(第一个参数), $#
(参数个数)等$(...)
- 命令替换
echo "Today is $(date)"
将命令输出作为字符串`...`
,但更推荐使用这种形式${...}
- 变量扩展
${var:-default}
如果var未设置则使用default${var#pattern}
(删除前缀), ${var%pattern}
(删除后缀)等' '
- 单引号(强引用)
echo '$HOME'
输出$HOME字面量" "
- 双引号(弱引用)
echo "$HOME"
输出变量值` `
- 反引号(命令替换)
echo `date`
输出命令结果$(...)
形式取代,不推荐使用#
- 注释符号
# This is a comment
\
- 转义字符
echo "This is a \"quote\""
输出引号!
- 历史命令扩展
!ls
执行最近的ls命令!!
执行上一条命令,!n
执行历史记录中第n条命令~
- 家目录
cd ~
进入当前用户家目录~username
进入指定用户的家目录-
- 标准输入/输出或前一个目录
tar xf -
从标准输入读取cd -
切换到前一个工作目录{...}
- 花括号扩展
echo file{1..3}.txt
生成file1.txt file2.txt file3.txt{ cmd1; cmd2; } > file
<<
- Here文档
bash
cat << EOF
This is a multi-line
text block
EOF
<<<
- Here字符串
grep "text" <<< "$var"
将变量内容作为输入()
- 子shell
(cd /tmp && ls)
在子shell中执行,不影响当前shell$(...)
而非反引号掌握这些特殊符号可以显著提高Linux命令行操作的效率和灵活性,是系统管理和脚本编写的基础技能。