linux基础六 bash
1) type
查看指令是外部指令还是内建在bash中的指令
type [-tpa] 指令
-t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义: file :表示为外部指令;alias :表示该指令为命令别名所设定的名称;builtin :表示该指令为 bash 内建的指令功能;
-p :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias
2)查看环境变量
env 或export
3)查看所有变量(环境变量和自定义变量)
set
环境变量(可以)和自定义变量(不能)区别,是否能被子程序引用;
shell编程
1)变量设定规则
-
变量与变量值以一个等号『=』来连结 如:myname=VBird
-
等号两边不能直接接空格符,如下所示为错误: 『myname = VBird』或『myname=VBird Tsai』
-
变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误: 『2myname=VBird』
-
变量值若有空格符可使用双引号『"』或单引号『'』将变量值结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:『var="lang is $LANG"』则『echo $var』可得『lang is en_US』 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』
-
转义字符 \
-
在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号『`指令`』或『$(指令)』,如『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』
-
若该变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示: 『PATH="$PATH":/home/bin』
-
若该变量需要在其他子程序执行,则需要以export来使变量变成环境发量: 『export PATH』
-
通常大写字符为系统默认变量,自行设定变量可以使用小写字符
-
取消变量的方法 unset
几个比较重要的变量
1)PS1
提示字符
2)$
echo $$ 输出PID
3) ?
上个执行指令的回传值
执行指令时,这些指令都会回传一个执行后的代码,一般来说,成功执行该指令,回传0。执行过程中发生错误,就会回传错误代码
4)locale 影响显示结果的语系变量
5)变量键盘读取、数组、声明
read [-pt] variable
-p :后面可以接提示字符!
-t :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!
变量声明
declare [-aixr] variable
-a :将后面名为 variable 的变量定义成为数组 (array) 类型
-i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x :用法与 export 一样,就是将后面的variable 变成环境发量;
-r :将变量设定成为 readonly 类型,该变量不可被更改内容,也不能 unset
declare +x 是对declare -x的逆操作
myname[1]=a
myname[2]=b
echo "${myname[1]}"
注:默认情况下,bash变量类型默认是字符串,bash环境中的数值运算,预设仅能到达整型形态
变量值【内容】的删除与替换
变量赋值
myname=a
变量myname存在,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1
myname1=${myname-b}
变量myname存在并且不为空,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1
myname1=${myname:-b}
文件系统与程序的限制
ulimit [-SHacdfltu] [配额]
历史命令
history
!number
执行第number条指令
!command
由最近的指令向前搜寻『指令串开头为 command』的那个指令, 并执行;
!!
执行上一个指令
指令的执行顺序
login与nologin shell
读取的配置文件数据不一样
login shell只读取一下两个配置文件
1. /etc/profile:这是系统整体的设定,最好不要修改这个档案;
2. ~/.bash_profile或~/.bash_login或~/.profile:(按顺序读取,前边的存在就不会读取后边的了)属于使用者个人设定,要改自己的数据,就写入这里!