bash及其特性:
shell:外壳
程序:进程
进程:在每个进程看来,当前主机上,只存在内核和当前进程。
进程是程序的副本,进程是程序执行实例。
shell,子shell
bash:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程
命令行编辑
光标跳转:
ctrl+a 跳到命令行首
ctrl+e 跳到命令行尾
ctrl+u 删除光标至命令行首内容
ctrl+k 删除光标至命令行尾内容
ctrl+l 清屏
命令历史
查看命令历史
history
-c 清空命令历史
-w 保存命令历史至历史文件中
-d OFFSET [n] 删除指定位置的命令
环境变量
PATH:命令搜索路径
HISTSIZE:命令历史缓存区大小
命令历史的使用技巧:
!n :执行命令历史中的第n条命令
!-n:执行命令历史中倒数第n条命令
!! :执行上一条命令
!string:执行命令历史中最近一个指定字符串开头的命令 !m !c !d
!$ :引用前一个命令的最后一个参数
Esc,.:按一下Esc 松开后按. 快速引用前一条命令的最后一个参数
命令补全
Tab键
路径补全
Tab键
命令别名 : 在shell中定义的别名仅在当前shell生命周期中有效:别名的有效范围仅为当前shell进程
alias COMMANDS='COMMAND [option] [arguments]'
撤销别名
unalias cls
\clear 不使用别名
命令替换:
把命令中某个子命令替换为执行结果的过程
$(COMMAND), 或者使用 反引号COMMAND
echo “The current dirctory is $(pwd).”
创建file-当前日期时间分钟.txt的文件
bash支持的引号:
``:命令替换
"":弱引用,可以实现变量替换
'':强引用,不完成变量替换
文件通配: globbing
*:任意长度的任意字符
?:任意单个字符
[]:匹配指定单位内的任意单个字符
[abc],[a-m],[0-9] [a-zA-Z] [0-9-a-zA-Z]
[[:space:]]:空白字符
[[:punct:]]:标点符号
[[:lower:]]:小写字母
[[:upper:]]:大写字母
[[:alpha:]]:大小写字母
[[:digit:]]:数字
[[:alunm:]]:数字和大小写字母
[^]:匹配指定范围之外的任意单个字符
[^0-9]
bash的配置文件
全局配置
/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
个人配置
~/.bash_profile, ~/.bashrc
profile类的文件:
设定环境变量
运行命令或脚本
bashrc类的文件:
设定本地变量
定义命令别名
登录式shell 如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> /.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何读取配置文件
~/.baschrc --> /etc/bashrc --> /etc/profile.d/*.sh