bash shell的功能
-
命令记忆功能(history)
-
命令与文件补全功能(Tab按键的好处)
-
命令别名设置功能(alias)
-
作业控制、前台、后台控制(job control、foreground、background)
-
脚本程序(shell script)
-
通配符
bash shell的内置命令:type
[root@www ~] #type [-tpa] name
参数:
type:不加任何参数是,type会显示出name是外部命令还是bash内置命令
-t:当加入-t参数时,type会将下面这些字眼显示出它的意义
file:表示为外部命令
alias:表示该命令为命令别名所设置 的名称
builtin:表示该命令为bash内置的命令功能
-p: 如果后面接的name为外部命令时,才会显示完整文件名;
-a:会由PATH变量定义的路径中,将所有含name的命令都列出来,包括alias
变量的显示与设置:echo,unset
-
变量的显示:echo
利用echo读出变量内容,只需要在变量前面加上$,或者是${变量}
-
变量的设置规则
1. 变量与变量的内容以一个“=”来连接
“myname=VBird”
2. 等号两边不能直接接空格符
3. 变量名只能是英文与数字,但是开头字符不能是数字
4. 变量内若有空格符可以使用双引号或单引号将变量内容结合起来
“双引号输出变量内的内容,单引号为原样输出”
5. 可用转义字符\将特殊符号变成一般字符
6. 在一串命令中,还需要通过其他命令提供的信息,可以使用饭单引号`命令`或$(命令)
7. 若该变量为了增加变量内容时,则可用“ 变量名称”或 变量名称”或 变量名称”或{变量}累加内容
“PATH="$PATH":/home/bin”
8. 若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量
“export PATH”
9. 通常大写字符为默认系统变量,自行设置变量可以使用小写字符,方便判断
10. 取消变量的方法为使用“unset 变量名称”
环境变量的功能
-
用env查看环境变量与 常见环境变量说明
-
用set查看所有环境变量(含环境变量与自定义变量)
-
PS1 (提示符设置,这里是数字1)
-
$(关于本shell的PID):代表目前这个Shell的线程代号。使用“echo $$”即可查看
-
?(关于上个执行命令的回传码):是上一个执行命令所传回的值。当我们执行某些命令时,这些命令都会回传一个执行后的代码。一般来说,如果成功执行该命令,则会回传一个0值,如果执行过程发生错误,就会回传“错误代码”
-
export:自定义变量转环境变量
-
变量键盘读取、数组与声明:read、array、declare
-
read:读取来自键盘输入的变量
[root@localhost ~]#read [-pt] variable
参数:
-p:后面可以接提示符
-t:后面可以接等待的“秒数”。不会让用户一直等待
-
declare/typeset:声明变量的类型
与文件系统及程序的限制关系:ulimit
- 可以限制用户的某些系统资源,包括可以打开的文件数量、可以使用的CPU时间、可以使用的内存总量等
通配符与特殊符号
符号 | 意义 |
---|---|
* | 代表0到无穷多个任意字符 |
? | 代表一定有一个任意字符 |
[] | 同样代表一定有一个在中括号内的字符(非任意字符)。例如[abc]代表一定有一个字符,可能是a、b、c、d这四个任何一个 |
[-] | 若有减号在中括号内时,代表在编码顺序内的所有字符。例如[0-9]代表0到9之间的所有数据 |
[^] | 若中括号内的第一个字符为指数符号(^),吧那表示原向选择,例如[^abc]代表一定有一个字符,只要是非a、b、c、d的其他字符 |
变量内容的删除、替代与替换
变量的设置方式 | 说明 |
---|---|
${变量#关键字} | 若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除 echo ${PATH#/*kerberos/bin:} |
${变量##关键字} | 若变量内容从头开始的数据符合“关键字”,则将符合的最长数据删除 |
${变量%关键字} | 若变量内容从尾向前的数据符合“关键字”,则将符合的最短数据删除 |
${变量%%关键} | 若变量内容从尾向前的数据符合“关键字”,则将符合的最长数据删除 |
${变量/旧字符串/新字符串} | 若变量内容符合“旧字符串”,则第一个旧字符串会被新字符串替换 |
${变量//旧旧字符串/新字符串} | 若变量内容符合“旧字符串”,则全部的旧字符串会被新字符串替换 |
命令执行的判断依据
命令执行情况 | 说明 |
---|---|
cmd1 && cmd2 | 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2; 若cmd1执行完毕且为错误($?≠0),则cmd2不执行 |
cmd1 || cmd2 | 若cmd1执行完毕且正确执行($?≠0),则开始执行cmd2; 若cmd1执行完毕且为错误($?=0),则cmd2不执行 |
选取命令:cut、grep
-
这个命令可以将以短信向的某一段“切”出来,处理信息以“行”为单位
[root@www ~]# cut -d’分割字符’ -f fields (用于分割字符)
[root@www ~]# cut -c 字符范围 (用于排列整我的信息)