文章目录
- 特殊符号
- 井号 `#` (Comments)
- 波浪号 `~` (Home Directory)
- 分号 `;` (Command Separator)
- 连续分号 `;;` (Terminator)
- 逗号 `,`
- 斜线 `/` (Forward Slash)
- 倒斜线 `\`
- 管道 `|`
- 惊叹号 `!` (Negate or Reverse)
- 冒号 `:`
- 问号 `?` (Wild Card)
- 星号 `*` (Wild Card)
- 双星号 `**`
- 钱号 `$` (Dollar Sign)
- 变量的正规表达式 `${}`
- `$*` 和 `$@`
- `$#`
- `$?`
- `()` (Command Group)
- `(( ))`
- `{ }` (Block of Code)
- `[ ]` 和 `[[ ]]`
- `&&` 和 `||`
- 背景符号 `&`
- 单字边界 `\<...\>`
- 加号 `+`
- Shell 特殊符号总结
- 总结
特殊符号
以下是关于Shell中常用特殊符号的表格,包含符号、描述和示例,方便快速参考。
符号 | 描述 | 示例 |
---|---|---|
# | 注释符号,后面的内容不会被执行 | # This line is a comment. |
~ | 表示当前用户的主目录 | cd ~ |
; | 指令分隔符 | cd ~/backup; mkdir startup |
;; | case 语句中选项的结束 | case "$fop" in help) ...;; esac |
, | 运算中的分隔 | let "t1 = ((a = 5 + 3, b = 7 - 1))" |
/ | 表示目录或进行除法运算 | cd /etc/rc.d |
\ | 转义字符,取消特殊符号的作用 | echo "Backup dir, \$bkdir = $bkdir" |
` | ` | 管道,将一个指令的输出作为下一个指令的输入 |
! | 反逻辑条件 | if [ "$?" != 0 ]; then ... fi |
: | 什么事都不干且返回状态值0 | : > f.$$ |
? | 通配符,匹配一个任意字符 | ls a?a1 |
* | 通配符,匹配任意字符(包括零个字符) | ls a*a |
** | 次方运算 | let "sus=2**3" |
$ | 变量替换 | echo "vrs = $vrs" |
${} | 变量的正规表达式 | echo "${#parameter}" |
$* | 代表所有参数,作为一个整体 | echo "$*" |
$@ | 代表所有参数,保持区分 | echo "$@" |
$# | 表示参数的数量 | echo "$#" |
$? | 上一个命令的返回状态 | echo "$?" |
() | 指令组,执行后不会影响外部环境的变量 | (a=1; echo $a) |
(( )) | 算数运算 | (( a = 10 )) |
{ } | 定义一组命令,不会产生子Shell | { a=1; echo "a=$a"; } |
[ ] | 条件判断 | if [ "$a" -eq 1 ]; then ... fi |
[[ ]] | 更强大的条件判断 | `if [[ $a -gt 5 |
&& | 逻辑与 | command1 && command2 |
` | ` | |
& | 背景符号,指令放入后台执行 | tar cvfz data.tar.gz data & |
\<...\> | 单字边界,正则表达式 | grep '\<the\>' FileA |
+ | 运算中的加法 | expr 1 + 2 + 3 |
这个表格汇总了Shell中的常用特殊符号及其功能,方便查阅与学习。希望能对你撰写博客有所帮助!
井号 #
(Comments)
井号用于添加注释。当井号出现在行首或完整指令后时,它后面的内容不会被执行。
# This line is a comment.
echo "a = $a" # a = 0
# 不执行的指令
# echo "a = $a" # a = 0
波浪号 ~
(Home Directory)
波浪号代表当前用户的主目录。
cd ~ # 切换到主目录
cd ~user # 切换到指定用户的主目录
~+
:当前工作目录,与pwd
相同。~-
:上次工作目录。
分号 ;
(Command Separator)
分号用于分隔多个指令,使其在同一行中连续执行。
cd ~/backup; mkdir startup; cp ~/.* startup/.
连续分号 ;;
(Terminator)
用于 case
语句,表示选项的结束。
case "$fop" in
help) echo "Usage: Command -help -version filename";;
version) echo "version 0.1";;
esac
逗号 ,
用于运算中的分隔。
let "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"
echo "t1= $t1, a = $a, b = $b"
斜线 /
(Forward Slash)
用于表示目录或除法运算。
cd /etc/rc.d # 切换到指定目录
let "num1 = ((a = 10 / 2))" # 除法
倒斜线 \
用于转义字符,取消特殊符号的作用,或表示行继续。
# 取消别名
\rm ./*.log
# 转义变量
echo "Backup dir, \$bkdir = $bkdir"
管道 |
用于将一个指令的输出作为下一个指令的输入。
who | wc -l # 计算当前用户数量
惊叹号 !
(Negate or Reverse)
用于反逻辑条件。
if [ "$?" != 0 ]; then
echo "Executes error"
exit 1
fi
冒号 :
在Bash中,表示“什么事都不干”且返回状态值0。
: > f.$$ # 创建或清空文件
问号 ?
(Wild Card)
匹配一个任意字符。
ls a?a1 # 匹配 a1, a2 等
星号 *
(Wild Card)
匹配任意字符(包括零个字符)。
ls a*a # 匹配 a1a, a2a 等
双星号 **
在运算中,表示次方运算。
let "sus=2**3"
echo "sus = $sus" # 输出 8
钱号 $
(Dollar Sign)
用于变量替换。
vrs=123
echo "vrs = $vrs" # 输出 123
变量的正规表达式 ${}
Bash支持多种用法,如:
${parameter:-word}
${parameter:=word}
${parameter:?word}
${#parameter}
$*
和 $@
$*
:代表所有参数,作为一个整体。$@
:代表所有参数,保留各个参数的区分。
echo "$*" # 输出所有参数
echo "$@" # 输出所有参数,保持区分
$#
表示参数的数量。
echo "$#" # 输出参数的个数
$?
表示上一个命令的返回状态。
echo "$?" # 输出上一个命令的返回状态
()
(Command Group)
用于将一组指令括起来,执行后不会影响外部环境的变量。
(a=1; echo $a) # 输出 1
echo $a # 不会输出任何内容
(( ))
用于算数运算,是Bash的内建功能。
(( a = 10 ))
echo "initial value, a = $a"
(( a++ ))
echo "after a++, a = $a"
{ }
(Block of Code)
定义一组命令,不会产生子Shell。
{ a=1; echo "a=$a"; }
echo "a=$a" # 输出 a=1
[ ]
和 [[ ]]
[ ]
:用于条件判断。[[ ]]
:更强大的条件判断,支持逻辑运算符。
if [ "$a" -eq 1 ]; then
echo "a is 1"
fi
if [[ $a -gt 5 || $a -lt 9 ]]; then
echo "Condition met"
fi
&&
和 ||
&&
:逻辑与。||
:逻辑或。
command1 && command2 # command2 仅在 command1 成功时执行
command1 || command2 # command2 仅在 command1 失败时执行
背景符号 &
在指令末尾使用,表示将指令放入后台执行。
tar cvfz data.tar.gz data > /dev/null &
单字边界 \<...\>
用于正则表达式,定义单字的边界。
grep '\<the\>' FileA # 匹配完整单词 the
加号 +
在运算中表示加法。
expr 1 + 2 + 3 # 输出 6
Shell 特殊符号总结
在Shell编程中,特殊符号具有重要的作用,能够帮助用户有效地控制命令执行、数据流转和条件判断。以下是对Shell中常用特殊符号的总体总结:
-
注释与目录:
#
用于注释,使后面的内容不会被执行。~
表示当前用户的主目录,方便用户快速导航。
-
指令分隔与逻辑控制:
;
可以分隔多条指令,使它们在一行内执行。&&
和||
用于条件控制,分别表示逻辑与和逻辑或。
-
管道与重定向:
|
管道符将一个命令的输出传递给下一个命令。>
和<
用于重定向输入输出,实现文件和命令间的数据交互。
-
变量与参数处理:
$
用于变量替换,${}
用于更复杂的变量操作。$#
表示传递给脚本的参数数量,$@
和$*
则用于获取所有参数。
-
条件判断与循环:
[]
和[[ ]]
用于条件判断,后者提供更强大的功能。()
和{}
用于命令组和子Shell,允许将多条命令作为一个整体执行。
-
算数运算与通配符:
(( ))
用于算数运算,提供更直观的计算方式。*
、?
和**
是通配符,便于文件匹配和搜索。
-
背景执行与状态返回:
&
用于将命令放入后台执行,允许用户继续进行其他操作。$?
获取上一个命令的返回状态,以便于错误处理。
总结
掌握Shell中的特殊符号对于编写高效的脚本至关重要。通过合理使用这些符号,用户可以提高命令行操作的灵活性和效率,简化复杂的操作流程。学习和理解这些符号的作用,不仅能够帮助用户更好地进行系统管理,也为后续深入学习Shell编程打下良好的基础。