1.env与set
env查看环境变量,set查看自定义变量。
bash启动后它就是一个独立的进程PID,此时如果执行了另一个命令后所生成的一个进程就称为子进程,在子进程中只能使用父进程的环境变量而不能用父进程的自定义变量。因此要想使用自定义变量在父进程及子进程中都有效,可以通过export来实现,export就是让自定义变量变为环境变量的。
export self-definition-variable
2.变量
读取 read
read [-pt] variable 接受用户输入并赋值给指定变量
-p 提示符
-t 等待时间表(秒)
声明变量 declare / typeset
declare [-aixr] variable 若不指定,默认为字串类型
-a array
-i integer
-x used as export,transform var into environment variable
-r read only
3.修改变量
(1)删除
path = ${PATH} 设path = /usr/ab:/usr/ac:/etc/xx
${path#/*:} 表示从前删除/与:之间的最短的数据, 删除后 path = /usr/ac:/etc/xx
${path##/*:} 表示从前删除/与:之间的最长的数据, 删除后 path = etc/xx
${path%:*xx} 表示从后删除xx与:之间的最短的数据, 删除后 path = /usr/ab:/usr/ac
${path%%:*xx} 表示从后删除xx与:之间的最长的数据, 删除后 path = /usr/ab
(2)替换
${path/sbin/SBIN} sbin替换成SBIN,替换第一个
${path//sbin/SBIN} sbin替换成SBIN,替换所有的
4.条件选择
如果将多个命令写在一行并让他们依次执行,则需要
sync;sync; shutdown -h now
但是如果前一条命令与后一条命令具有依赖性,怎么办呢?比如说我要查看某目录或文件是否存在,如果存在则不操作,如果不存在则新建。这个时候就需要用到 &&,||这两个命令了,它们来判断前一个命令是否成功并判断是否继续执行下一个命令。
cmd1&&cmd2 cmd1成功(回传码$(?=0)),执行cmd2
cmd1失败(回传码$(?!=0)),不执行cmd2
可以理解为:命令相与操作,即两个命令都需要执行的,依次执行命令,只要有一上执行失败则不执 行后面的命令。
cmd1||cmd2 cmd1成功,不执行cmd2
cmd1失败,执行cmd2
可以理解为:从最前面的命令开始执行,只要有一个命令执行成功就OK,即不再继续执行下去。
ex:
ls /home/abc || mkdir /home/abc
cmd1 && cmd2 || cmd3,顺序通常不变,cmd2,cmd3且必须能够成功执行
5.管道命令|
管道命令仅会处理stand output.
ex :
ls -al /etc | less
只查看自己感兴趣的信息cut,grep,配合管道使用
cut -d "splitliine" -f fields
cut -c indexs of charactor
ex:
echo $path
/bin:/usr/bin:/sbin
echo $path | cut -d ":" -f 1 #-f 3,4
/bin
echo $path | cut -c 5-
/usr/bin:/sbin
grep it's a strong and usefull command,get more information from google help,heh.
last | grep 'root' #support regular expression
6.排序
sort,uniq,wc
cat /etc/passwd | sort -t ':' -k 3 -n ':'分开的第3个字段并以数值方式排序