shell能够提供给用户操作系统的一个接口,能够将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误的工作。shell中有很多中形式,比如bshell,CShell,KShell,TCSH等等,通过/etc/shells中文件可以查看当前系统中存在的shell形式。当我们进行用户登录时,系统会自动检查/etc/passwd目录下的文件,取得当前系统中当前用户使用的shell形式。
bshell中的特性:
1、命令补全
2. 命令历史
查看命令历史:history
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
3.命令别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
ualias CMDALIAS
4、命令行编辑
光标跳转:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏2、管道、重定向
bash支持的引号:
``: 命令替换
"": 弱引用,可以实现变量替换
'': 强引用,不完成变量替换
5、文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
# man 7 glob
[^]: 匹配指定范围之外的任意单个字符
[[:alpha:]]*[[:space:]]*[^[:alpha:]]
6、变量
主要分为环境变量、本地变量、位置变量、特殊变量。
本地变量: set VARNAME=VALUE:作用域为整个bash进程。
局部变量:local VARNAME=VALUE 作用域为当前代码段
环境变量: 作用域为当前shell进程及其子进程;
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME "导出"
特殊变量$?:上一个命令的执行状态返回值
程序执行可能有两类返回值:程序执行结果,程序状态返回代码(0-255) 0:正确执行 1-255:错误执行,其中1,2,127系统预留。
与变量相关的操作命令有:
查看系统中所有变量(含环境变量和自定义变量):set
撤销变量: unset VARNAME
查看当前shell中的环境变量:printenv、env、export
7、编程 ..............
补充对shell的认识
1.变量的显示与取消 echo unset
2.命令的运行顺序
1.以相对/绝对路径执行命令
2.由alias找到该命令来执行
3.由bash内置的命令来执行
4.通过$PATH这个变量的顺序找到第一个命令执行
3.bash的登陆与欢迎信息
\d :本地终端的日期
\l:显示第几个终端接口
\m:显示硬件的等级
\n :显示主机的网络名称
\o :显示domain name
/etc/issue :登陆信息
/etc/motd :欢迎信息
4.login 与no-login shell
login shell:取得bash时需要完整的登录流程,就称为login shell。举例来说,由tty1~tty6登陆,需要输入用户的账号和密码。。
no-login shell:取得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读取配置文件的方式:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh