Bourne-Again SHell; Born Again SHell
Introduction
写作“入门”,读作由使用驱动的学习。
Six Core Responsibility
Shell的责任(responsibility,职责是duty)有:
- 程序执行:负责执行终端中指定的所有程序;
- 变量及其替换:只要在命令行中将变量名放置在
$
之后,就会被bash替换为对应的变量值; - I/O重定向:负责处理输入/输出的重定向;指令有
>
(写入),<
(读入),>>
(追写),<<
(?); - 管道:负责将前一个命令的标准输出连接到之后命令的标准输入;管道符号为
|
,如who | wc -l
; - 环境控制:定制个人环境的命令;个人环境包括主目录(
~
)、命令行提示符及用于搜索待执行程序的目录列表; - 解释型编程语言:内建的解释型编程语言;分析所遇到的每一条语句,然后执行所发现的有效命令。
Variable & its Replacement
Variable
匹配变量的正则表达式为[a-zA-Z_][a-zA-Z0-9_]*
。
变量赋值形如variable=value
;
显示变量值形如echo $variable
.
bash在执行指令时,按照如下顺序进行操作:
- 命令分割:依据空格字符(一个或多个)分割命令与参数;
- 变量替换:扫描命令行,用变量值替换变量名;
- 引用字符替换:扫描上一步的输出,将引用字符替换为其语义所指表示;
- 命令执行:执行上一步的输出。
特殊字符有*
,代表当前目录下的所有文件及文件名;之外,还有四种不同的引用字符:'
(单引号)/"
(双引号)/\
/ `(反引号);
其中除斜杠外,其他引用字符都需要成对出现。
'
(单引号):被单引号包裹的特殊字符将被忽略;
"
(双引号):被双引号包裹的字符大部分都会被保护,除了三种字符$
(美元字符)/\
(反斜线)/ ****(反引号);
`(反斜线):反斜线大部分情况下相当于在单个字符周围放置单引号;当反斜线出现在输入行的最后一个,起到续行符的作用;
`(反引号):反引号一般包裹待执行的命令;命令输出会被插入到它的当前所在位置上;但注意更提倡使用与之等价的 $(command)
。
示例:
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保存了一个别名列表,在命令输入之后,会在执行其他替换操作之前首先搜索该列表。如果命令行的第一个单词是别名,将该别名替换成对应的文本。
其形式如下:
alias name=string
示例:
alias ll='ls -l'
More
重定向:https://www.jianshu.com/p/b3f8daf73db2
References
UNIX/Linux/OS X中的Shell编程@ISBN: 9787115470416:https://book.douban.com/subject/30410589/
网友评论