5. bash的基础特性
Bash(GNU Bourne-Again Shell)是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell。
shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”
事实上,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的。Shell脚本对于管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。
bash的基础特性:
1.命令历史:shell进程会其会话中保存此前用户提交执行过的命令
~]# history:显示历史命令
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史文件;
命令用法:
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 参数 [参数...]
-c 删除所有条目从而清空历史列表。
-d 偏移量 从指定位置删除历史列表。
-r 读取历史文件并将内容追加到历史列表中
-w 把历史列表中的命令追加至历史文件中
history #:显示最近的#条命令
调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令
!!:再一次执行上一条命令
!STRING:再一次执行命令历史列表最近一个以STRING开头的命令
注意:命令的重复执行有时候需要依赖于幂等性
调用上一条命令的最后一个参数:
快捷键:ESC, .
字符串:!$
2.命令补全:
shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当作命令;
命令查找机制:
查找内部命令:
根据PATH环境变量中设定的目录,自左向右逐个搜索目录下的文件名;
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全,不能唯一标识某命令程序文件,再击tab健一次,会给出列表;
3.路径补全:
再给定的起始路径下,以对应路径下的打头字串来逐一匹配其实路径下的每个文件;
tab:
如果能唯一标识,则直接补全,不能唯一标识某命令程序文件,再击tab健一次,会给出列表;
4.命令执行的状态结果:
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完之后,其状态返回值保存于bash的特殊变量 $? 中;
命令正常执行时,有的还会有命令返回值;
根据命令及其功能不同,结果各不相同;
引用命令的执行结果:
$(COMMAND)
或`COMMAND`
5.引用
强引用:' '
弱引用:" "
命令引用:` `
6.快捷键
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符
Ctrl+k:删除光标所在处至行尾的所有字符
Ctrl+l:清屏,相当于clear
7.globbing:文件名通配
匹配模式:元字符
*:匹配任意长度的任意字符
例:*pa*:文件名中包含pa的所有文件
?:匹配任意单个字符
例:pa?:pa后必须且只能有一个任意字符
[ ]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z],[A-Z],[0-9],[a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]:除大写字母外的单个字符
[^a-z]:除a-z外的单个字符
........
练习题:

8.IO重定向及管理
程序:指令+数据
输出重定向:>
特性:覆盖输出
例:cat /etc/log/log1.txt > /home/log2.txt 把log1.txt文件中查看到的内容重定向到log2.txt文件中并把log2.txt中的数据覆盖,
如果没有log2.txt文件则会创建名为log2.txt的文件并包含log1.txt内的数据;
输出重定向:>>
特性:追加输出,保留原文件数据
set -c:禁止覆盖输出重定向至已存在的文件;
此时可使用强制覆盖输出:>|
set +c:关闭上述特性
错误输出流重定向:2>,2>>
合并正常输出流和错误输出流:&>,&>>
输入重定向:<,<<
<<:此处创建文档 ,把输入的内容创建成文件

浙公网安备 33010602011771号