Shell的作用—–命令解释器
shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行结果返回在标准终端上
shell的分类:
<1>Bourne Shell
<2>C Shell
Shell的两种语法类型有Bourne和C,这两种语法彼此不兼容
Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell,其属于Bourne家族
Shell基础:
1.命令别名:
#alias 别名='原命令‘
(注:等号两边不能有空格)
alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效,如果重新开启一个Shell,或者重新登陆,则这些alias将无法使用。好在linux中提供alias永久化的方法:
<1>若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后#source ~/.bashrc
<2>若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后#source /etc/bashrc
2.删除别名:
#unalias 别名
多命令顺序执行:
多命令执行符:
; 作用:多个命令顺序执行,命令之间没有任何逻辑联系
&& 作用:逻辑与,当1正确执行时,2才会执行;1不正确时,2不会执行
|| 作用:逻辑或,1不正确时,2才会执行;1正确时,2不会执行
3.管道符:
命令1 | 命令2
命令1的正确输出作为命令2的操作对象
4.tee
#tee [-a] file
选项与参数:
-a: 以累加的方式,将数据加入到file中
5.echo输出命令:
#echo [选项] [输出内容]
-e:支持反斜线控制的字符转换
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\f 换行且光标移至行首
\n 光标移至行首,但不换行
\r 光标移至行首,但不换行
\t 插入tab
\v 与\f次相同
\\ 插入\字符
\nnn 插入nnn(八进制)所代表的ASCII符;
例如:#echo -e "a\abbbbb"
//输出同时会发出报告警声
Shell脚本的基本元素:
<1.>#!/bin/bash 必须的,指出shell的类型
<2.>#注释
<3.>变量
<4.>控制
常见运行Shell脚本方法:
方法1:#sh ./shell.sh
方法2:#chmod +x shell.sh
方法3:# /bin/bash shell.sh
Shell中的变量和符号:
变量:shell 变量可以保存如路径名、文件名或者一个数字
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2.在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数
值型。
变量:
<1.>本地变量:局部变量只在创建他们的shell中使用,可以在shell程序内任意使用和修改他们
<2.>环境变量:可以在创建他们的shell及派生出来的任意子程序中使用。有些变量时用户创建
的,其他的则是专用(比如:PATH,HOME)。是系统封环境的一部分,不必
去定义他们,可以在shell程序中使用他们。还能再shell中记忆修改
<3.>内部变量 :由系统提供的,与环境变量不同,单用户不能修改他们
1.本地变量:
本地变量再用户现在的shell生命期的脚本中使用
变量名=值
注意:
<1>等号两边不可以有空格
<2>取值包含空格,必须用双引号括起来
<3>Shell变量可以用大小写字母,区分大小写
变量的声明和使用
1.变量是弱类型的(不用声明类型)
2.变量声明及赋值格式
3.变量的引用
$变量名
${变量名}
注:变量名为1个字符时建议使用方式1,多余一个字符时建议使用方式2
显示变量
echo命令可以显示单个变量取值,变量名前加$
echo显示输出:
功能说明:显示文字
-n 不要在最后自动换行
-e 打开反斜杠ESC转义。
-help 显示帮助
-version 显示版本信息
清除变量:
unset 变量名(注:不需要$)
2.环境变量
环境变量用于所有用户进程(通常称为子进程).登陆进程称为父进程
通过pstree可以查看
1.环境变量可以用于所有子程序,着包括编辑器,脚本和应用
2.环境变量可以在命令行中设置,但用户注销时这些值将丢失
3.环境变量均为大写
4.必须用export命令导出
3.内部变量
在程序中做出判断
$# 传送给shell程序的位置参数的数量
$? 最后命令的完成码或者在shell程序内部执行的shell程序(返回值)
0表示没有错误,其他任何值表示有错误
$0 shell程序的名称
$*(强调整体) //所有参数列表,代表"$1 $2 … $n",即当成一个整
体输出,每一个变量参数之间以空格隔开。
$@(强调独立) //所有参数列表,代表"$1" "$2" … "$n" ,即每一个
变量参数是独立的 。也是全部输出。
$n 第n个参数
$$ 本程序的PID