本次学习bash的特性
bash及其特性:
shell:外壳
GUI Gnome KDE Xfce
shell的种类:CLI sh csh ksh bash tcsh zsh
进程:从每个进程看来,当前主机上只存在内核和当前进程。进程是程序的副本,进程是程序执行实例
bash特性:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程
命令行编辑:
光标跳转:ctrl +A 行首, ctrl +E 行尾
ctrl+u 删除光标至命令行首的内容
ctrl+k 删除光标至命令行尾的内容
ctrl+方向左右 远程终端不支持 字符跳转
ctrl+l 清屏
命令历史:
查看命令历史:history
-c:清空命令历史
-d:OFFSET [n]删除指定位置命令
history -d 510 3 就是从510开始删除三行
-w:保存命令历史至历史文件中
环境变量:
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
echo $HISTSIZE 查询缓冲
命令历史的使用技巧:
!n:执行命令历史的第n条命令
!-n:执行命令历史中倒数第n条命令
!!:执行上一条命令
! string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数
ESC +方向
ALT +方向
两个命令终端不支持,本地才支持
命令补全:
PATH: tab键
路径补全:tab键
命令补全:搜索PATH环境变量所指定的每个路径下以我们自己给出的字符串开头的可执行文件,如果多余一个,两次tab,可以给出列表,否则将直接补全。
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全。
命令别名:
alias(别名)CMDALIAS='COMMAND [options] [arguments]
例:alias cls=clear
定义别名只在当前生命周期中有效,别名的有效范围为当前shell进程。
alias:列出所有别名
ualias CMDALIAS
例:ualias cls
\CMD
命令替换:(重要) $(COMMAND),`COMMAND`
把命令中某个子命令替换为其执行结果的过程
echo "The current directory /root"
echo "The current directory is $(pwd)"
echo ”Dir is `pwd` "
赋予pwd变量
file-2013-02-28-14-53-31.txt
touch ./file $(date-%F-%H-%M-%S).txt
bash支持的引导:
` ` : 命令替换 (反引号)
““: 弱引用,可以实现变量替换
‘ ‘:强引用,不完全变量替换
文件名通配:globbing
* :任意长度的任意字符
?:任意单个字符
[ ]:匹配指定范围内的任意单个字符
如:ls a* ls a*3 ls ?y* ls ??y*
[abc] [a-m] [a-z] [A-Z] [0-9] [a-zA-Z]
ls [a-zA-Z]*[0-9] [0-9a-zA-Z]
[^]:匹配指定范围之外的任意单个字符
^:拖字符
[:space:] 空白字符
[:punct:] 标点符号
[:lower:] 小写字母
[:upper:] 大写字母
[:alpha:] 大小写字母
[:digit:] 数字
[:alnum:] 数字和大小写字母
支持取反
man 7 glob 命令可以看到以上列表
[[:alpha:]] *[[:space:]] *[[:alpha:]]
字母开头 空白符 字母结尾
ls * [^[:space:]] * [0-9]
[[ ]] 两个中括号是限定取值范围,里边内容是字符集合