一、bash及其特性
1、shell:外壳,用户直接连接计算机
a)GUI:Gnome、KDE、Xfce;
b)CLI:sh、csh、ksh、bash、tcsh、zsh;
2、如果当前系统登录2个用户,2个用户的shell相同吗?
root,student:一个程序,2个进程;
进程:在每个进程看来,当前主机上只存在内核和当前进程;
进程是程序的副本,进程是程序执行实例;
3、用户工作环境
a)#:管理员,$:普通用户;每个用户的工作环境设定可以不同;
4、shell:包含子shell,如:bash,bash ,用pstree查看当前bash结果;
5、bash特性
a)命令历史:
history:查看命令历史;
-c:清空命令历史;
-d:删除指定位置命令,如:history -d 10,history -d 10 11;
-w:保存命令历史至历史文件中,.bash_history为历史命令缓存;
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史的倒数第n条命令;
!!:执行上一条命令;
!STRING:执行命令历史中最近一个以指定字符串开头的命令;
!$:引用前一个命令的最后一个参数,如:cat /tmp/inittab;nano !$;
ESC,.:引用前一个命令的最后一个参数;
ALT+.:引用前一个命令的最后一个参数;
b)命令补全:
命令补全:tab键,表示在PATH下搜索补全;
路径补全:tab键,在指定开头命令下搜索补全;
c)命令别名:
alias:alias CMDALIAS=‘COMMAND [options] [arguments]‘(有空格中‘’引用),如:alias cls=clear;
在shell中定义的别名仅在当前shell生命周期中有效:别名的有效范围仅为当前shell进程;
unalias:撤销命令别名,如:unalias cls;
\COMMAND:使用命令本身;
d)命令替换:($(COMMAND)、反引号:`COMMAND`)
把命令中某个子命令替换为其执行结果的过程:
如:echo “The current directory /root.”
cd /etc/sysconfig
echo “The current directory is $(pwd).”。
创建file-当前年月日-当前时-当前分-当前秒.txt,
如:touch ./file-$(date +%F-%H-%M-%S).txt;
bash支持的引号:
反引号``:命令替换;
"":弱引用,可以实现变量替换;
‘‘:强引用,不完成变量替换;
e)文件名通配,globbing:
*:通配符,表示匹配任意长度的任意字符;
如:touch a123 abc ab123 xyz x12 xyz123 helloy123 1xy6 ‘a b‘;
显示以字母a开始的所有文件:
ls a*;
显示以字母a开头数字3结尾的所有文件:
ls a*3;
?:匹配任意单个字符;
如:显示一个字符开头,中间跟y的所有文件:
ls ?y*;
[]:匹配指定范围内的任意单个字符;
如:[abc], [a-m], [a-z], [A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z];
显示以字母开头,中间任意字符,以数字结尾的所有文件:
ls [a-zA-Z]*[0-9]
[^]:匹配指定范围之外的任意单个字符;
如:显示以非数字开头的所有文件:
ls [^0-9]*;
[:space:]:所有空白字符;
[:punct:]:所有标点符号;
[:lower:]:所有小写字母;
[:upper:]:所有大写字母;
[:alpha:]:大小写字母;
[:digit:]:数字;
[:alnum:]:数字和大小写字母;
man 7 glob:获取以上所有列表;
如:显示字母开头,中间空白字符,字母结尾的所有文件:
ls [[:alpha:]]*[[:space:]]*[[:alpha:]];
作业:
1、创建a123,cd6,c78m,c1 my,m.z,k 67,8yu,789等文件,注意:以上文件是以逗号隔开的,其它符号都是文件名的组成部分;
2、显示所有以a或m开头的文件;
ls [am]*;
3、显示所有以数字结尾且文件名中不包含空白的文件?
ls *[^[:space:]]*[0-9]不能完全表达此题的意思,通过正则表达式可以;???
4、显示文件名中包含了非字母或数字的特殊符号的文件;
ls *[^[:alnum:]]*;
f)命令行编辑:
光标跳转:
Ctrl+a:跳到命令行首;
Ctrl+e:跳到命令行尾;
Ctrl+u:删除光标至命令行首的内容;
Ctrl+k:删除光标至命令行尾的内容;
Ctrl+l:清屏;
g)命令行展开
h)管道、重定向:
i)变量
j)编程
6、环境变量
a)PATH:命令搜索路径;
b)HISTSIZE:命令历史缓冲区大小。
本文出自 “Nick Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1392326