shell 语法

shell 执行命令操作

当shell读取输入时,它将执行一系列操作。如果输入表示注释的开头,则shell将忽略注释符号('#')和该行的其余部分。

shell 读取和执行命令时将经过下列操作:

  1. 从一个文件(Shell脚本)中读取它的输入,从作为参数的字符串到 “-c” 调用选项(调用Bash),或者从用户的终端。
  2. 将输入拆分为单词和操作符,遵守所描述的引用规则。这些标记由“元字符”分隔。此步骤执行别名扩展。
  3. 将令牌解析为简单的复合命令。
  4. 执行各种shell扩展,将扩展令牌分解为文件名、命令和参数列表。
  5. 执行任何必要的重定向,并从参数列表中删除重定向操作符及其操作数。
  6. 执行命令
  7. 可选地等待命令完成并收集其退出状态。

引用(Quoting)

引用被用来去除某些字符或单词对shell的特殊意义。引用可用于禁用特殊字符的特殊处理,防止保留字被识别,并防止参数扩展。每个shell元字符对于shell都有特殊的意义,必须引用它来表示自己。

  • 有三种引用机制:转义字符、单引号和双引号。

转义字符

一个非引用的反斜杠“\”是Bash转义字符。它保留下一个字符的文字值。
用途:

  1. 将普通字符转为特殊用途,用于表示不能直接显示的字符,比如后退键,回车键,等。
  2. 用来将特殊意义的字符转换回它原来的意义。

单引号

单引号通常以以'开头以'结尾,常在两个单引号之间存储字符串。单引号不能出现在使用单引号闭合的表达式中,例如:a=' I'm so hot';系统将会报错。可以使用转义字符将单引号转义,例如:a='i\'m so hot';上列语句将不会报错。

双引号

与单引号类似,双引号亦可以用来存储字符串,双引号必须转义才能存在与表达试中,单引号可以之间使用,当双引号内出现" $ "符号时,shell会试图解释该变量或表达式,以$到其后面单词为变量名称。而单引号则不会解释变量和表达式

注释

shell 以“ # ” 为注释符号。常用于shell文件(shell脚本中),当文件某一行出现符号“#”时,“#”后面一直到行尾,将会被shell忽略。

命令的语法

在shell中,命令格式为:命令+参数,命令和参数使用空格分隔,参数和参数也使用空格分隔开来。
如:

echo 1 2 3 4 5

查看命令帮助信息

  1. 使用参数 -h | --help.在shell中大多数命令都支持:命令 --help|-h 来查看命令的使用说明
  2. 使用man命令:man命令可以查看命令的man手册的详细信息。
  3. 使用whatis:whatis用来显示命令的描述

查看shell内置命令(builtin)的使用帮助

使用help命令可以查看内置命令的使用帮助
显示构建命令的简短摘要。如果指定了模式,则在所有命令匹配模式上提供详细的帮助,否则将打印帮助主题列表。

如:

[root@localhost ~]# help true
true: true
    Return a successful result.
    Exit Status:
    Always succeeds.
[root@localhost ~]# 

使用info命令查看信息格式文档

使用info命令可以查看命令的详细信息文档,如bash,gawk,sed,grep等命令都可以使用info命令查看其详细使用文档。