shell:外壳
GUI:GNOME,KDE,Xfce
CLI:sh,csh,ksh,bash,tcsh,zsh
程序,进程
允许一个用户登录多次
进程:在每一个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行的实例
bash自身是外部命令 但是它带有自身命令
用户的工作环境:
bash:
shell,子shell
bash---bash
某些设定bash之间互不影响(非环境变量)
bash:
- 命令历史
- 管道,重定向
- 命令别名
- 命令行编辑
- 命令行展开
- 命令名通配
- 变量
- 编程
命令行编辑
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令的行尾
Ctrl+u:删除光标到行首
Ctrl+k:删除光标到行尾
Ctrl+l:清屏
命令历史:
上下箭头即可以翻历史命令
history
:查看命令历史
-c:清空命令历史
-d offset [n] :删除指定位置的命令
history -d 500 3 从500
-w :保存命令历史到文件中去
环境变量
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
命令历史的使用技巧:
!n :执行命令历史中的第n条命令
!-n:执行命令历史中的倒数第n条命令
!!:执行上一条命令
!string:执行命令历史中最近一次匹配的命令
引用前一个命令的最后参数
!$:引用前一个命令的最后参数
ESC,. 上一次命令
ALT+.
命令补全:
PATH:
TAB:自动补全
连敲两次TAB键
路径补全:(文件,目录补全)在给定的打头的路径下查找
命令别名:
alias CMDalias=command [option] 注意:如果有空格必须要单引号。
在shell定义的别名仅在当前生命周期中有效;别名的有效范围为当前shell进程。
alias 可以显示系统上所有的别名
ualias cmdalias
命令替换$(command) `command`
把命令中某个子命令替换为其执行结果的过程
file-2013-02-28-53-31.txt
touch ./file-$(date +%F-%H-%M-%S).txt
bash支持的引号:
``:命令替换
"":弱引用,可以实现变量替换
'':强引用,不完成变量替换
文件名通配,gloobbing
*:可以匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的单个字符
[abc] [a-z] [A-Z] [0-9] [a-zA-z]
[^]:匹配指定范围内之外的任意单个字符
touch a b touch 'a b'
[:space:]:空白字符
[:punct:] :标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:digit:]:数字
[:alnum:]:数字和字母
man 7 glob
[[:alpha:]]*[[:space:]]*[[:alpha:]]
[^[:alpha:]]
ls [am]*
ls *[0-9] ls *[[:digit:]]
ls [^[:space:]]*[0-9]
ls *[^[:alnum:]]*