bash
及其特性
shell 外壳
GUI :Gnome KDE
xface
CLI :shell csh
ksh bash
程序,进程
进程:每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例
用户的工作环境:
bash:
# root用户
$ 普通用户
shell ,子shell
bash :
1.命令历史
2.管道,重定向
3.命令行编辑
4.命令别名
5.命令行展开
6.文件名通配
7.变量
8.编程
命令行使用技巧:
Ctrl + a 光标跳转行首
Ctrl + e
光标跳转行尾
Ctrl + u 删除光标至行首的内容
Ctrl + k
删除光标至行尾内容
Ctrl +
l 实现清屏
命令历史使用技巧:
!n 执行命令历史中第N行命令
!-n 执行历史命令中倒数第N行命令
!! 执行上一条命令
!CHARACTER 执行历史命令中最近一次以CHARACTER开头的命令
!$ 引用前一个命令的最后一个参数
ESC 松开按. 引用前一个命令的最后一个参数
tab按键功能:
命令补全 :搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件
路径补全 :搜索我们给我的起始路径下的每个文件名,并试图补全
命令别名:
#alias CMDALIAS=COMAND 命令重命名
在shell 中定义的别名仅在当前shell 生命周期中有效,别名的有效范围当前shell进程
#unalias 取消命令重命名 ,#unalias COMAND
bash 支持的引号及作用:
`` 反引号, 命令替换
“” 双引号,弱引用,可以完成变量替换
‘’ 单引号,强引用,不可完成变量替换
命令替换
把命令中某个子命令替换为命令执行结果的过程
#echo “The directory is $(pwd)”
#touch ./file-$(date +%F-%H-%M-%S).txt == #touch ./file-`date +%F-%H-%M-%S`.txt ,功能相同
命令历史:
#history
[[email protected] skel]# help history history: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...] 显示或操纵历史列表。 带行号显示历史列表,将每个被修改的条目加上前缀 `*‘。 参数 N 会仅列出最后的 N 个条目。 选项: -c 删除所有条目从而清空历史列表。 -d 偏移量 从指定位置删除历史列表。 -a 将当前绘画的历史行追加到历史文件中 -n 从历史文件中读取所有未被读取的行 -r 读取历史文件并将内容追加到历史列表中 -w 将当前历史写入到历史文件中 并追加到历史列表中
环境变量 :
PATH 命令路径
HISTSIZE 命令历史大小
示例:# echo $HISTSIZE ,显示缓存命令的大小
#echo $shell ,显示用户Shell 环境
文件名通配 ,globbing
* 匹配任意长度的任意字符,包含空#ls a*
? 匹配任意单个字符 ,#ls ?y*
[ ] 匹配指定范围内的任意单个字符,如[a-zA-Z][0-9]
[0-9a-zA-Z]
[[:space:]] 所有的空白字符
[[:punct:]]
所有标点符号
[[:lower:]] 所有小写字符
[[:upper:]] 所有大写字符
[[:alpha:]] 所有大小写字母
[[:digit:]] 所有数字
[[:alnum:]] 数字和大小写字
[^] 匹配指定范围之外的任意单个字符
例#ls
[[:alpha:]]*[[:space:]]*[[:alpha:]] ,显示以字母开头并以字母结束,且中间包含空格的文件
站在用户登录的角度来说,shell 的类型
登录式shell
正常通过某终端登录
su - USERNAME
su -l USERNAME
非登录式shell
su USERNAME
图形终端下打开的命令窗口
自动执行的shell
脚本
bash
的配置文件
全局配置
/etc/profile , /etc/profile.d/*.sh , /etc/bashrc
个人配置
~/.bash_profile , ~/.bashrc
profile类的文件
设定全局环境变量
登录运行命令或脚本
bash 类的文件
设定本地变量
定义命令别名
登录式shell 如何读取配置文件
/etc/profile --->
/etc/profile.d/*.sh ---> ~/.bash_profile -->~/.bashrc -->/etc/bashrc
非登录式shell
~/.bashrc
-->/etc/bashrc-->/etc/profile.d/*.sh