Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
由于早年的Unix年代,发展者众,所以由于shell依据发展者的不同就有许多的版本,例如常听到的Bourne SHell(sh)、在Sun 里头默认的C SHell、商业上常用的K SHell , 还有TCSH等等,每一种Shell都各有其特点。至于Linux使用的这一种版本就称为“Bourne Again SHell(简称 bash)”,这个Shell是Bourne Shell 的增强版本,也是基准于 GNU的架构下发展出来的。
一、bash基本介绍
1.1 bash 的优点:
- 命令编修能力(history):只要在命令行按“上下键”就可以找到前/后一个输入的指令,默认的指令记忆功能可以到达 1000 个。
- 命令与文件补全功能:使用 [tab] 按键的时机依据 [tab]接在指令后或参数后而有所不同。主要有以下几种情形:[Tab] 接在一串指令的第一个字的后面,则为命令补全;[Tab] 接在一串指令的第二个字以后时,则为“文件补齐”!若安装 bash-completion 软件,则在某些指令后面使用 [tab] 按键时,可以进行“选项/参数的补齐”功能!例如,想要知道我的环境当中所有以c为开头的指令,则可以按下“c[tab][tab] ”即可。
- 命令别名设置功能:使用 alias 即可!你可以在命令行输入 alias 就可以知道目前的命令别名有哪些;也可以直接下达命令来设置别名:alias lm = ‘ls -al’
- 工作控制、前景背景控制
- 程序化脚本
- 万用字符, 除了完整的字串之外, bash 还支持许多的万用字符来帮助使用者查询与指令下达。例如,想要知道 /usr/bin下面有多少以X为开头的文件吗?使用:“ ls -l /usr/bin/X* ”就能够知道。此外,还有其他可供利用的万用字符,这些都能够加快使用者的操作呢!
1.2 指令的下达与快速编辑按钮
指令的下达:
![](https://i-blog.csdnimg.cn/blog_migrate/b68d945f3f5930b0bb04af46c839a86c.png)
快速编辑按钮:
![](https://i-blog.csdnimg.cn/blog_migrate/22fbcbc18ce8abbd70f6bd04582d4d78.png)
二、bash中的变量
变量就是以一组文字或符号等,来取代一些设置或者是一串保留的数据!其优点有:可变性与方便性、且能影响 bash 环境操作,脚本程序设计(shell script)中不可或缺的元素
2.1变量的取用
利用
echo
这个指令来取用变量,
但是,变量在被取用时,
前面必须要加上钱字号“
$
”,或者是以
${
变量
}
的方式来取用都可以,例如,取用变量
PATH
的值时,执行命令:
echo $PATH
或
echo ${PATH}
2.2变量设置规则
- 变量与变量内容以一个等号“=”来链接,如下所示:“myname=VBird”
- 等号两边不能直接接空白字符,如下所示为错误:“myname = VBird”或“myname=VBird Tsai”
- 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:“2myname=VBird”
- 变量内容若有空白字符可使用双引号“"”或单引号“'”将变量内容结合起来,但双引号内的特殊字符如$等,可以保有原本的特性,如下所示:“var="lang is $LANG"”则“echo$var”可得“lang is zh_TW.UTF-8”单引号内的特殊字符则仅为一般字符(纯文本),如下所示:“var='lang is $LANG'”则“echo $var”可得“lang is $LANG”
- 可用跳脱字符“\”将特殊符号(如 [Enter], $, \, 空白字符, '等)变成一般字符,如:“myname=VBird\Tsai”
- 在一串指令的执行中,还需要借由其他额外的指令所提供的信息时,可以使用反单引号“指令”或“$(指令)”。特别注意,那个`是键盘上方的数字键 1左边那个按键,而不是单引号!
- 若该变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示:“PATH="$PATH":/home/bin”或“PATH=${PATH}:/home/bin”
- 若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量:“export PATH”
- 通常大写字符为系统默认变量,自行设置变量可以使用小写字符,方便判断(纯粹依照使用者兴趣与嗜好);
- 取消变量的方法为使用 unset :“unset 变量名称”例如取消 myname 的设置:“unset myname”
三、常见的bash组合键及字符
3.1 组合键汇总
![](https://i-blog.csdnimg.cn/blog_migrate/5ed542c770f80b169394bac60806a7c2.png)
3.2
万用字符
![](https://i-blog.csdnimg.cn/blog_migrate/2a10beea18cee7f7d51de1f5c3f5ee0e.png)
3.3 特殊字符
![](https://i-blog.csdnimg.cn/blog_migrate/0e6132fb9794c2c8dc19caece02c7b1d.png)