乐趣区

bash常见特殊符号及含义

文章转载自:bash 常见特殊符号及含义

bash 命令和 shell 脚本编程中,一些特殊字符具有特殊含义。不了解的人往往认为其晦涩难懂神秘如符文,而掌握其含义则能在使用过程中起到事半功倍的效果。

本文整理 bash 命令中 常用 的特殊符号并简要说明其意义,希望对常用 bash 等 shell 的人有帮助。文章主要参考 tldp 的 Advanced Bash-Scripting Guide,英文不熟悉的网友可查看 linux 中国删减版的翻译:Bash 中的特殊字符大全。本文不求全(太多特殊的符号很少用到),更注重 常见易用易懂 的特殊字符(比如 $_ 很常用,但上述两个文档中均没有),让读者看完后能迅速上手。

简单的特殊字符

  • !:最直接的功能是 逻辑非 ,最常用的功能是 操作历史命令 (注意此功能不能用在 shell 编程中)。例如!! 执行上一条命令,!$指代上一条命令的最后一个单词,!#指代执行的整条命令,更多可参考:bash 快捷键整理;
  • ,:最直接的功能是表达式分隔符,较常见的是用在 ${} 中用于 参数替代,一个逗号表示首字母小写,两个逗号表示全部小写(bash 4.0 版本添加的功能):
var=FooBar
echo ${var,} // 结果是 fooBar
echo ${var,,} // 结果是 foobar
  • .:最常见的功能是 当前目录 ,有用的功能是代替source 命令,其他功能包括正则表达式中的任意字符
  • ::空命令(返回 0),也常用作 PATH 等环境变量中的分隔符,神奇的功能是可以作函数名
  • ;:命令分隔符
  • 用户主目录,代替 $HOME 环境变量
  • #:注释符号,也是字符串裁截符
  • &:让程序放入后台执行,可单独使用,也常配合 nohup 一起让程序脱离当前终端
  • /:文件夹分隔符,单独代表 根目录,也是除号
  • *:最常用是匹配通配符,也是乘号
  • \:转义或换行
  • :常用功能的是命令 短选项 ,例如ls -ah;实用的用法是 单独使用代表前一个目录,以及取代标准输入输出;也是减号
  • +:常用在正则表达式中表示至少匹配一次,也是加号
  • |:管道
  • ?:匹配一个字符,或正则表达式中的 0 - 1 次匹配,也是三元运算符
  • ..:上级目录
  • <<:here-doc
  • :最常用的是 长选项 符号,神奇的用法是单独使用时代表 后面参数不做解析,也是递减符号
  • <<<:here-string,与 << 的区别是不用手动输入
  • &&, ||:逻辑与和逻辑或,常用在测试结构或多条命令有条件执行
  • >, <, >>, &<, >&:输入输出重定向
  • {} ;find命令中与 -exec 一起使用,代表文件的绝对路径。注意反斜杆和分号都不能省略

$ 开头的特殊字符

&dollar;符号除引用变量、执行子命令外,还有许多晦涩但又有用的黑魔法。其经常出现在 hell 脚本、makefile 文件中,因此非常有必要掌握。本节特地选出常见的用法。

  • $$:当前脚本的进程 id
  • $!:上一个后台进程的 id
  • $#:参数个数
  • $[0-n]:第 0 - n 个参数,第 0 个参数即命令本身
  • $?:上一条命令的退出码,用来判断命令是否执行成功
  • &dollar;_:上一条命令的最后一个单词,命令行中与 !$ 相同
  • $@:全部参数(数组)
  • $*:全部参数(字符串)

参考

  1. Advanced Bash-Scripting Guide
  2. Bash 中的特殊字符大全
  3. bash 快捷键整理
退出移动版