shell和vi编辑器
一、Shell
1、什么时shell
Shell就是用户与操作系统内核之间的接口,起着协调用户和系统的一致性和用户在系统之间的交互作用。具体如下图:
2、shell的功能
Shell的重要的功能就是命令解释,从某种意义上来说,shell就是一个命令解释器。Linux中的所有的可执行文件都可以作为shell命令来执行。可执行文件的分类见下表:
类别
说明
Linux命令
存放在/bin、/sbin目录下
内置命令
出与效率考虑,将一些常用的命令程序构造在shell的内部
使用程序
存放在/usr/bin、/usr/sbin、/usr/local/bin等目录下。
用户程序
用户经过编译生成的可执行文件后,也可以作为shell命令运行
Shell脚本
由shell语言编写的批处理文件
当用户输入一个命令后,shell首先判断是否为内部命令,如果是就通过shell内部的解释器进行解释将其结果交给内核来完成;如果是外部命令或使用的程序就试图在硬盘中查找其命令掉入内存,再将其解释为系统功能调用并转发给内核来执行。在查找该命令时有两种情况。
(1) 用户给出了命令的路径,shell就沿着用户给出的路径进行查找,若找到则掉入内存,或者给出提示信息。
(2) 用户没有给出命令的路径,shell就在环境变量PATH所制定的路径中依次的去查找,若找到就掉入内存,若没有找到就给出提示信息。命令的解释过程如下图:
 
另外shell还有一些其他的功能
1) Shell的环境变量
2) 正则表达式
3) 输入输出重定向与管道
3、shell的环境变量
环境的变量是用户登陆时linux系统为用户预先设定好的一类shell变量。环境变量的功能是设置用户在当前的shell中的工作环境,包括用户的宿主目录,命令的查找路径,用户当前的目录等。
环境变量的特点:
1) 环境变量的名称通常由大写之母,数字和其他字符组成,而不使用小写字母
2) 环境变量在linux系统中拥有固定的含义,因此环境变量名称是固定的
3) 环境变量的初始值在用户登陆时已经存在,并可以被其他命令读取和使用
4) 环境变量的值通常由linux系统自动维护,无需人工设置
5) 环境变量中的值会随用户状态的改变而改变,用户可以通过读取环境变量了解自己的当前的状态。
Set命令 用于查看当前系统的shell变量
Echo命令用了显示变量的值。 命令格式 echo 变量名称
Linux常用的环境变量:
USRE:表示当前用户登陆的命令。与whoami结果一样
UID:表示当前用户的UID。与id –u 的命令结果一样
SHELL:表示当前用户登陆的shell,与passwd中shell字段一致
HOME:表示当前用户的登陆目录(宿主目录),与passwd文件中的home字段一样
PWD:表示用户当前所在的目录,该变量和pwd命令的结果一样。
PATH:表示当前用户的命令搜索路径,即用户不能指定全路径的时候,shell程序将在哪些
目录下去搜索这些命令的搜索路径。
PS1:表示当前用户的主提示符。
PS2:表示当前用户的辅助提示符。
4、环境变量的配置文件
Linux中的用户的环境变量是在用户登录时设置完成的,环境变量的配置是通过配置文件来实现的,环境变量配置文件分为全局配置文件和用户配置文件两种。
环境变量的全局配置文件包括“profile”和“bashrc”两个文件,linux中的用户在的登录的时候都会按照全局配置文件的内容进行设置工作环境。Profile和bashrc两个文件在功能上各有分工。这两个配置文件分别位置在/etc目录中。
Profile文件负责设置全局的环境,并应用于所有的用户登录shell。
Bashrc文件用于定义全局的函数和别名,文件的内容除了为系统中所有登录用提供设置外,也使用于非交互shell和非登录shell。
全局配置文件只有root用户才有权限进行修改和设置,文件的内容是很严谨的。因此没有特殊的要求,不要去修改里面的内容。
用户配置文件位于用户的宿主目录中,文件名是“.bash_profile” 和“.bashrc”这两个文件。这两个文件名称都是以“.”开始的,在linux中系统作为默认的隐藏文件。用户可以通过修改“.bash_profile” 和“.bashrc”文件来更改自己的环境变量。
/etc/skel目录中保存了初始化的用户配置文件的模板,当用户对自己的配置文件进行错误的设置后,可以直接将“/etc/skel”中的模板文件复制到自己的目录,可以恢复正确的配置。
5、位置变量
位置变量于shell脚本程序执行时所对应的命令参数相对应,命令行中的参数按照从左到右的顺序赋值给位置变量。位置变量的名称的格式是“$n”,其中n是参数的位置序号,n是从1-9.例如:$1, $2, $3, $4分别表示命令的第一个参数、第二个参数、第三个参数和第四个参数。
在bash中的环境变量中有单引号(‘)、双引号(“)、和反引号(·)三种表示字符串用不同的功能。其中单引号(’)中的字符串不进行任何的变量替换,保持字符串中的原有的数据;双引号(”“)中的变量会引用变量的值来替换,并作为字符串的一部分来;反引号(·)用于进出命令的替换,引号中命令的执行结果将替换命令本身作为字符串。
6、预定义变量
预定义变量是linux系统中已经定义好的变量,用户只能使用预定义变量,而不能创建或赋值预定义变量。所有的预定义变量都是又 $和一个符号组成的,常用的shell预定义变量有:
$#:表示位置参数的数量
$*:表示所有位置参数是内容
$?:表示抿了执行后返回的状态,用于检查上一个命令的执行是否正确;在linux中命令退出状态为0表示命令正确执行,任何非0表示命令执行错误。
$$:表示当前进程的进程号
$!:表示后台运行的最后一个进程号
$0:表示当前进程执行的进程号
7、用户自定义变量
用户自定义变量是用户自己定义的变量,只在用户自己的shell中有效。
(1)自定义变量是设置格式:
变量名=变量值
(2)自定义变量的引用:echo $变量名(如上图)
Set命令可以显示系统中的所有变量,包括用户自定义变量:
(3) 自定义变量的输出
用户在当前shell中定义了某个变量后,只能在本shell中有效,对于当前shell的子shell是无效的。为了在用户的子shell也可以使用用户定义的变量,可以将其输出为全局变量。其命令格式如下:
Export [nf] [name[=value]………]
(4)自定义变量的清除
命令格式:nuset [-f] [-v] [name………]
二、bash的功能
1、 光标的移动
使用方向键可以任意的移动。
2、 退格键于删除键。
3、 定位命令到行首和行尾。
Home和end
4、 行内快速删除命令。
Ctrl+u组合键用于删除当前光标到行首的内容。
Ctrl+k组合键用于删除当前光标到行尾的内容。
5、 历史文件
History查看历史命令。
History –c清除历史命令。
6、 命令别名
命令别名的格式:alias name=value…..
Alias不加任何参数的时候显示当前shell的所有定义的别名
命令别名的取消:unalias [-a] name [name…..]
-a:表示删除当前shell中的所有定义的别名
三、shell的脚本
1、shell脚本的概念和特点
Shell脚本是使用shell命令编写的可执行程序,具有以下特点:
a) Shell脚本类似于dos中的批处理文件,是shell命令语句的集合,用于实现特定的功能。
b) Shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑。
c) Shell脚本程序是由shell环境解释执行的,不需要在执行前进行编辑。
d) 执行shell程序的时候,shell脚本文件需要具有可执行的权限。
2、基本脚本的编程
建立一个完整可运行的脚本需要经过以下几个步骤:
a) 建立shell文件。
b) 脚本中包含的内容。
1) 脚本运行环境设置
Shell脚本文件的首行内容是指定当前脚本运行需要的环境。通常以#!开始,后面需要使用的shell程序的全路径。
2) 注释的使用
在注释可以说明程序的功能,版本信息等。通常以“#“开始,后面跟注释的内容。
3) 脚本语言
脚本语言是脚本程序的重要的组成部分,是真正需要在shell程序中解释执行的部分。
c) 设置脚本文件为可执行。
2、脚本的运行
使用shell命令程序执行脚本
其命令的格式如下:bash [option] [file]
使用“.“命令执行脚本
其命令格式:.filename [argunents]