在 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命令行操作的效率和灵活性,是系统管理和脚本编写的基础技能。