在Linux系统中,特殊字符在命令行、脚本编程和文本处理中具有特定功能。以下是常见的分类及说明:
*
:匹配任意数量字符(如 *.txt
匹配所有txt文件)。?
:匹配单个字符(如 file?.log
匹配 file1.log
,但不匹配 file10.log
)。[]
:匹配括号内的任意单个字符(如 [abc].txt
匹配 a.txt
或 b.txt
)。[!]
或 [^]
:不匹配括号内的字符(如 [!0-9]
匹配非数字字符)。/
:路径分隔符(根目录或子目录分隔)。~
:用户家目录(如 cd ~
进入当前用户的家目录)。.
:当前目录(如 ./script.sh
执行当前目录下的脚本)。..
:上级目录(如 cd ..
返回上一级)。>
:覆盖输出到文件(如 ls > file.txt
)。>>
:追加输出到文件(如 echo "text" >> file.txt
)。<
:从文件读取输入(如 sort < file.txt
)。|
:管道,将前一个命令的输出作为下一个命令的输入(如 ps aux | grep nginx
)。' '
:单引号,禁止所有特殊字符解释。" "
:双引号,允许变量($VAR
)和命令替换(`command`
或 $(command)
)。` `
:反引号,用于命令替换(已逐渐被 $( )
取代)。\
:转义字符(如 echo "Price: \$5"
输出 Price: $5
)。;
:分隔多个命令(如 cmd1; cmd2
)。&&
:前一个命令成功(返回0)后执行下一个(如 make && make install
)。||
:前一个命令失败后执行下一个(如 cmd1 || echo "Failed"
)。&
:后台运行命令(如 sleep 10 &
)。$
:变量引用(如 echo $PATH
)或算术运算($((1+2))
)。$( )
:命令替换(如 echo "Today is $(date)"
)。${ }
:明确变量边界(如 ${var}_suffix
)。#
:注释符号(如 # This is a comment
)。!
:历史命令调用(如 !ls
执行最近的 ls
命令)或逻辑非(!=
)。-
:命令行选项前缀(如 ls -l
)或标准输入/输出(如 tar -cvf - dir | tar -xvf -
)。以下字符在Shell中有特殊含义,需用 \
转义或引号包裹:
`! $ & * ( ) [ ] { } ; \ ' " < > ? | ~ ``
rm "file name.txt"
)。grep
使用 .*
而非 *
)。掌握这些字符能高效操作Linux命令行和脚本编写!