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)变量设定规则

  1. 变量与变量值以一个等号『=』来连结  如:myname=VBird

  2. 等号两边不能直接接空格符,如下所示为错误: 『myname = VBird』或『myname=VBird Tsai』

  3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误: 『2myname=VBird』

  4. 变量值若有空格符可使用双引号『"』或单引号『'』将变量值结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:『var="lang is $LANG"』则『echo $var』可得『lang is en_US』 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』

  5. 转义字符 \

  6. 在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号『`指令`』或『$(指令)』,如『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』

  7. 若该变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示: 『PATH="$PATH":/home/bin』

  8. 若该变量需要在其他子程序执行,则需要以export来使变量变成环境发量: 『export PATH』

  9. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符

  10. 取消变量的方法 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环境中的数值运算,预设仅能到达整型形态

变量值【内容】的删除与替换

linux基础六 bash

变量赋值

linux基础六 bash

myname=a

变量myname存在,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1

myname1=${myname-b}

变量myname存在并且不为空,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1

myname1=${myname:-b}

 

文件系统与程序的限制

ulimit [-SHacdfltu] [配额]

 

历史命令

history

linux基础六 bash

!number

执行第number条指令

!command

由最近的指令向前搜寻『指令串开头为 command』的那个指令, 并执行;

!!

执行上一个指令

 

指令的执行顺序

linux基础六 bash

 

 

login与nologin shell

读取的配置文件数据不一样

login shell只读取一下两个配置文件

1. /etc/profile:这是系统整体的设定,最好不要修改这个档案;

2. ~/.bash_profile或~/.bash_login或~/.profile:(按顺序读取,前边的存在就不会读取后边的了)属于使用者个人设定,要改自己的数据,就写入这里!

linux基础六 bash