1.什么是shell
简单来说,就是可以调用其他应用程序的接口。如:可以通过shell将我们的指令与kernel进行沟通,从而使得硬件进行工作。
2.bash的功能
2.1 命令记录功能(history)
可以通过上下键进行翻阅历史指令。这些指令一般存放在家目录下的.bash_history文件中。不过值得注意的是/.bash_history记录的是上一次登录以前执行过的指令,而本次执行的指令驻留在内存当中,当注销系统后,本次登录系统后执行过的指令会记录在/.bash_history文件中
2.2 tab指令文件不全功能
2.3 命令别名设定功能(alias)
可以在命令行输入
alias
指令查看目前别名有哪些。如果要给某个指令设置别名可以通过alias 别名='指令'
,如:alias lm='ls -al'
2.4 作业控制、前台、后台控制(jobs control、foreground、background)
jobs、fg、bg
2.5 程序化脚本
2.6 通配符(wildcard)
例如
ls -al /etc/s*
3.Shell的变量功能
变量是bash环境中重要的一个变量,linux系统是多人多任务的操作系统,每个用户登录都可以得到一个bash,所以对于每个用户而言,并不是所有的文件都是一样的,所以需要变量来区分。
3.1 影响bash环境的变量
某些特定的变量会影响到bash的环境。例如:PATH这个环境变量,能不能在任何目录下执行某个指令,与PATH这个环境变量有很大的关系。在Linux System中,真正以shell来和Linux沟通,是在正确的登录Linux系统之后,这个时候有一个bash的执行程序,也才可以真正的经由bash来和系统进行沟通。而在进入shell之前,由于系统需要一些变量来提供其数据的存储,就产生了所谓的环境变量。同时,为了区分环境变量与自定义的变量的不同,环境变量通常以大写字符表示。
3.2 脚本程序设计(shell script)的好帮手
.如果设计大型的脚本,可以使用自定义变量来定义,增强脚本的可移植性
3.3 变量的设定、变量的规则、以及变量移除
变量的读取:echo
可以在bash中通过echo $变量名
或者echo ${变量名}
读取变量的具体内容
变量的设定:
变量名=内容 注:其中=号两侧不能有空格,即使内容后面也不能有空格,如果内容中存在空格可以使用双引号或者单引号将内容括起来
变量具体的设定规则如下:
- 变量与变量内容以一个等号【=】来连接,如下所示
myname=helloworld
- 等号两边不能有直接空格符,如下错误演示:
myname = helloworld
或myname=hello world
- 变量内容若有空格符,可使用双引号或者单引号将变量内容括起来,但是以下两种情况要注意:
一、双引号内的特殊字符如$等,可以保持原本的特性,如:
var="language is $LANG"
则echo $var
可得到的是language is en_US
二、单引号内的特殊字符则仅为一般字符(纯文本),如:
var='language is $LANG
则echo $var
可得到的是language is $LANG- 可以使用反斜杠\将特殊字符变为一般字符
- 在一串指令中,如果还需要其他指令提供信息,可以使用反单引号`指令`或者 ( 指 令 ) 。 特 别 注 意 : 反 单 引 号 是 1 左 侧 的 按 键 , 如 : v e r s i o n = (指令)。特别注意:反单引号是1左侧的按键,如:version= (指令)。特别注意:反单引号是1左侧的按键,如:version=(uname -r)
- 如果该变量要增加内容时可以使用 变 量 名 或 者 变量名或者 变量名或者{变量名}累加内容,如:
PATH="$PATH":/home/bin- 如果该变量需要在其他子程序执行,可以以export来使得变量成为环境变量
export PATH
取消变量名的方法:unset 变量名