bash及其特性:

shell:外壳

程序:进程

进程:在每个进程看来,当前主机上,只存在内核和当前进程。

进程是程序的副本,进程是程序执行实例。

shell,子shell

[root@localhost ~]#bash
bash-bash-pstree
[root@localhost ~]#pstree

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]'

[root@localhost ~]# alias cls='clear'

撤销别名

unalias cls

\clear 不使用别名

命令替换:

把命令中某个子命令替换为执行结果的过程

$(COMMAND), 或者使用 反引号​​COMMAND​​​

echo “The current dirctory is $(pwd).”

[root@localhost ~]# echo “The current dirctory is $(pwd).”
“The current dirctory is /root.”
[root@localhost ~]# echo "Dir is `pwd`"
Dir is /root

创建file-当前日期时间分钟.txt的文件

[root@localhost ~]#touch ./file-$(date +%F-%H-%M).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]

[root@localhost test]# touch a123 cd6 c78m 'k 67' 8yu 789
[root@localhost test]# ls
789 8yu a123 a b c1 my c78m cd6 k 67 m.z
显示所有以a或m开头的文件
[root@localhost test]# ls [am]*
a123 a b m.z
显示所有文件名中包含了数字的文件
[root@localhost test]# ls *[0-9]*
789 8yu a123 c1 my c78m cd6 k 67
[root@localhost test]# ls *[[:digit:]]*
789 8yu a123 c1 my c78m cd6 k 67
显示所有以数字结尾且文件名中不包含空白的文件
[root@localhost test]# ls *[^[:space:]][^[:space:]][0-9]
789 a123 cd6
显示文件名中包含了非字母或数字的特殊符号的文件
[root@localhost test]# ls *[^[:alnum:]]*
a b c1 my k 67 m.z

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