井号

账户 Home 目录

分号

在 Shell 中,担任 连续指令 功能的符号就是分号(;)。
  1. cd ~/backup ; mkdir startup ; cp ~/.* startup/.

连续分号

逗号

单引号

双引号

倒引号

逗点

斜线

倒斜线

管道

管道和重定向 管道与管道符
  • 管道和信号一样,也是进程通信的方式之一
  • 匿名管道(管道符)是 Shell 编程经常用到的通信工具
  • 管道符是 |,将前一个命令执行的结果传递给后面的命令
  1. ps | cat
  2. echo 123 | ps

惊叹号

冒号

问号

星号

次方运算

钱号

指令群组

大括号

中括号

逻辑符号

逻辑符号分两种:或逻辑符 并逻辑符

后台工作

特殊字符

特殊字符:一个字符不仅有字面意义,还有元意(meta-meaning)
  • # 注释
  • ; 分号
  • \ 转义符号
  • ‘’ 符号

转义符号

单个字符前的转义符号:
  • \n\rt 单个字母的转义
  • \$\”\ 单个非字母的转义

赋值运算符

  • = 赋值运算符,用于算数赋值和字符串赋值
  • 使用 unset 取消为变量的赋值
  • = 除了作为赋值运算符还可以作为测试操作符

算数运算符

基本运算算符:+-/*% 使用 expr 进行运算:
  1. expr 4 + 5

数字常量

数字常量的使用方法:
  1. let “变量名=变量值”
  • 变量值使用 0 开头为八进制。
  • 变量值使用 0x 开头为十六进制

双圆括号

双圆括号是 let 命令的简化:
  1. (( a = 10))
  2. (( a++ ))
  3. echo $(( 10 + 20 ))

重定向符号

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。 输入重定向符号:<
  1. # 先编辑文本文件,并随便输入字符后保存
  2. vim a.txt
  3. # 将 a.txt 读入到 var2 变量中,代替手动输入
  4. read var2 < a.txt
  5. # 输出 var2 变量,打印出 a.txt 内容
  6. echo $var2
输出重定向符号:>>>2>&>
  • >:相当于 1>,代表从左到右的重定向方向
  • >>:代表追加,也就是不改变重定向目标文件原有的内容,追加在后面
  • 2>:错误重定向
接上例子
  1. # 将变量 var2 值输出到 b.txt
  2. echo $var2 > b.txt
  3. # 查看 b.txt 验证
  4. cat b.txt
  1. # 把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。
  2. * cmd > file
  3. # 把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。
  4. * cmd >> file
  5. # 使cmd命令从file读入
  6. * cmd < file
  7. # 从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。
  8. # 如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。
  9. # * cmd << text
  10. # 把word(而不是文件word)和後面的换行作为输入提供给cmd。
  11. * cmd <<< word
  12. # 以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
  13. * cmd <> file
  14. # 功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。
  15. * cmd >| file
  16. # 把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).
  17. : > filename
  18. # 把输出送到文件描述符n
  19. cmd >&n
  20. # 把输出 到文件符m的信息重定向到文件描述符n
  21. cmd m>&n
  22. # 关闭标准输出
  23. cmd >&-
  24. # 输入来自文件描述符n
  25. cmd <&n
  26. # m来自文件描述各个n
  27. cmd m<&n
  28. # 关闭标准输入
  29. cmd <&-
  30. # 移动输入文件描述符n而非复制它。(需要解释)
  31. cmd <&n-
  32. # 移动输出文件描述符 n而非复制它。(需要解释)
  33. cmd >&n-
/dev/null 在 Unix 系统中时一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。 用处:禁止标准输出
  1. # 文件内容丢失,而不会输出到标准输出,禁止标准错误
  2. cat $filename > /dev/null
  3. # 表示 2 的输出重定向等同于 1,那么文本标题的语句 1>/dev/null,首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息
  4. 2>&1
  5. #