bash入门@linux

Bourne-Again SHell; Born Again SHell

Introduction

入门指的是由使用驱动的学习。

Six Core Responsibility

Shell的责任(responsibility,职责是duty)有:

  1. 程序执行:负责执行终端中指定的所有程序;
  2. 变量及其替换:只要在命令行中将变量名放置在$之后,就会被bash替换为对应的变量值;
  3. I/O重定向:负责处理输入/输出的重定向;指令有>(写入),<(读入),>>(追写),<<(?);
  4. 管道:负责将前一个命令的标准输出连接到之后命令的标准输入;管道符号为|,如who | wc -l
  5. 环境控制:定制个人环境的命令;个人环境包括主目录(~)、命令行提示符及用于搜索待执行程序的目录列表;
  6. 解释型编程语言:内建的解释型编程语言;分析所遇到的每一条语句,然后执行所发现的有效命令。

Variable & its Replacement

Variable

匹配变量的正则表达式为[a-zA-Z_][a-zA-Z0-9_]*
变量赋值形如variable=value
显示变量值形如echo $variable.

bash在执行指令时,按照如下顺序进行操作:

  1. 命令分割:依据空格字符(一个或多个)分割命令与参数;
  2. 变量替换:扫描命令行,用变量值替换变量名;
  3. 引用字符替换:扫描上一步的输出,将引用字符替换为其语义所指表示;
  4. 命令执行:执行上一步的输出。

特殊字符有*,代表当前目录下的所有文件及文件名;之外,还有四种不同的引用字符:'(单引号)/"(双引号)/\/ `(反引号);
其中除斜杠外,其他引用字符都需要成对出现。

'(单引号):被单引号包裹的特殊字符将被忽略;
"(双引号):被双引号包裹的字符大部分都会被保护,除了三种字符$(美元字符)/\(反斜线)/ `(反引号);
\(反斜线):反斜线大部分情况下相当于在单个字符周围放置单引号;当反斜线出现在输入行的最后一个,起到续行符的作用;
`(反引号):反引号一般包裹待执行的命令;命令输出会被插入到它的当前所在位置上;但注意更提倡使用与之等价的 $(command)

示例:

1
2
3
echo "<<< echo \$x >>> displays the value of x, which is $x"
echo '<<< echo \$x >>> displays the value of x, which is' $x
echo Your current working directory is $(pwd)

Passing

Everyday Commands

alias

别名是shell提供的一种可以用于自定义命令的快捷记法。

shell保存了一个别名列表,在命令输入之后,会在执行其他替换操作之前首先搜索该列表。如果命令行的第一个单词是别名,将该别名替换成对应的文本。

其形式如下:

1
alias name=string

示例:

1
alias ll='ls -l'

More

重定向:http://wrran.com/blog/2019/08/18/learn/bash/redirect/

References

UNIX/Linux/OS X中的Shell编程@ISBN: 9787115470416:https://book.douban.com/subject/30410589/

0%