shell:外壳
GUI:Gnome, KDE, Xfce
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+l:清屏
Ctrl+ <- or -> :左右跳一个单词
命令历史:
查看命令历史:history
bash会自动记录过去执行过的命令,保存在缓冲区中,上下键可找到
-c:清空命令历史
-d OFFSET [n](行数):删除指定位置的命令
例:#-d 400 3 :总400开始删三行
-w:保存命令历史至历史文件中
HISTSIZE:保存命令大小【缓冲区大小】(1000条左右)
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!:执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
Esc , .:同上
Alt + .:同上
命令补全:tab补全
小技巧:两下tab,给出指定相关的所有命令
路径补全:同上
命令别名:
alias CMDALIAS = 'COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
ualias CMDALIAS:撤销命令
命令替换: $(COMMAND),反引号:`COMMAND`
把命令中某个子命令替换为其执行结果的过程
创建 file-2013-02-28-14-53-31.txtbash支持的引号:
` `:命令替换
" ":弱引用,可以实现变量替换
' ':强引用,不完成变量替换
文件名通配:globbing
*:任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
# man 7 glob 查看手册
[^]:匹配指定范围之外的任意单个字符
ls [^0-9]*列出以非数字开头的文件
[[:alpha:]]*[[:space:]]*[^[:alpha:]]
字母开头中间空格字母结尾的文件
练习
显示所有以a或m开头的文件;
ls [am]*
显示所有文件名中包含了数字的文件;
ls *[0-9]*
ls *[[:digit:]]*
网友评论