操作系统组成作用shell是离用户最近的程序
shell:外壳
两类
GUI:Gnome,KDE,Xfce
CLI:sh, csh,ksh,bash(都是程序,就是功能支持的不同而已)
进程:在每个进程看来,当前主机只存在内核和当前进程
进程是程序的副本,进程是程序执行实例
不同的用户,登陆系统的时候可以使用同一个shell,也可以使用不同的shell
同个用户,多次登陆系统也可以使用不同的shell
用户工作环境时可以各不相同
bash:
1.命令历史
2.管道,重定向
3.命令别名
4.命令行展开
5.命令行编辑
光标跳转
ctrl+a:跳到命令行首
ctrl+e:跳到命令行尾
ctrl+u:删除光标至命令行行首的内容
ctrl+k:删除光标至命令行行尾的内容
ctrl+l:清屏
命令历史:
history
-c:删除缓存区中的历史命令
-d:删除第500个 history -d 500
history -d 500 10 从第500个开始删除10个
-w:将缓存去的命令写入文件
环境变量:
PATH:命令搜索路径
HISTSIZE:命令历史大小,缓存去大小
命令历史命令的使用技巧
!n:执行命令历史中的第n条命令
!-n:执行命令历史中倒数第n条命令
!!:执行上一条命令
!string:执行命令历史中最近一个以指定字符串开头的命令
定义别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期有效,别名的有效范围仅为当前的shell进程
取消别名
unlias CMDALIS
命令替换
$(COMMAND),反引号 `COMMAND`
把命令中某个子命令替换为其执行结果的过程
echo "The current directory is $(pwd))"
touch ./file-$(date +%F-%H-%M-%S).txt
bash支持的引号
``:反引号,命令替换
"":双引号,弱引用,可以实现变量替换
'':单引号,强引用,不完成变量替换
文件名通配:
man 7 glob
globbing
*:任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z]
[^0-9]*:所有非数字开头的文件
[0-9a-zA-Z]:表示以数字或者大写字母或者小写字母开头的文件
[^]:匹配指定范围之外的任意单个字符
[:space:]:表示所有的空白字符
[:punct:]:标点符号
[:lower:]:小写字符
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
[[:alpha:]]*[[:space:]]*[[:alpha:]]:字母开头,字母结尾,中间有空白字符
6.文件名通配
7.变量
8.编程