shell的功能
(1)命令行解释功能
(2)启动程序
(3)输入输出重定向
(4)管道连接
(5)文件名置换
(6)变量维护
(7)环境控制
(8)shell编程
一、变量
(一)列出系统预设的全部系统变量:env
HOSTNAME:表示主机的名称
SHELL: 表示当前用户的shell类型
HISTSIZE:表示历史记录数
PATH: 决定shell将在哪些目录寻找命令或程序
MAIL: 表示当前用户的邮件存放的目录
PWD: 表示当前目录
LANG: 与语言相关的环境变量,多语言环境可以在此修改环境变量
HOME: 表示当前用户的家目录
LOGNAME: 表示当前用户的登录名
(二)不仅显示系统预设的变量,也可以显示用户自定义的变量:set
注意①:
允许系统内的所有用户登录后等使用某变量,在/etc/profile中添加export +想要使用的变量,运行source /etc/profile生效文件。
注意②:
仅允许当前用户使用某变量,在用户主目录下.bashrc文件中添加export +想要使用的变量,运行source .bashrc生效文件。
(1)变量命名的法则
设置变量格式为a=b,其中a为变量名,b为变量内容,等号两边不能有空格。
变量名只能由字母、数字、下划线组成,不能以数字开头。
当变量内容中有特殊字符(如空格)时,需要使用单引号。
当变量内容中有单引号时,需要使用双引号。
当变量内容为命令时,可以使用反引号。
变量引用
格式:
$name
${name}
强引用
'$name’强引用,其中的变量引用不会被替换为变量值,而保持原字符串.
弱引用
"$name"弱引用,其中的变量引用会被替换为变量值.
例:
(2)变量类型
变量的概念:命名的内存空间,将数据放在内存空间中,通过变量名引用,获取数据。
- 局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量 :所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
(3)变量赋值
格式:name=‘value’
直接字串:name=‘root’
变量引用:name="$USER"
命令引用:name=COMMAND或name=$(COMMAND)
注意:变量赋值是临时生效,当退出终端后,变量会自动删除,无法持久保存,脚本中的变量会随着脚本结束,也会自动删除。字符串要用单引号或双引号引起来。
例:
(4)变量删除
unset< name >
例:
二、变量配置文件
/etc/profile:预设重要变量。例如:PATH、USER、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等
/etc/bashrc:主要预设umask和PS1。
.bash_profile:定义用户的个人化路径与环境变量的文件名称。当用户登陆时,该文件仅仅执行一次。
.bashrc:该文件包含专属于自己的shell的bash的信息,当登录或打开新的shell时,该文件会被读取。
.bash_history:记录历史命令
.bash_logout:当退出shell时,会执行该文件。
三、shell中的特殊符号
(一)*:代表零个或多个任意字符
(二)?:只代表一个任意的字符
(三)#:注释字符
(四)\:转义字符
将特殊符号转变成普通符号
(五)|:管道符
四、shell中常用命令
(一)cut:截取某一字段
-d:其后跟分隔符,分隔字符要使用单引号括起来。
-c:其后跟第几个字符。
-f:其后跟第几个区块。
(二)sort:排序
-t:其后跟分隔符。
-n:使用纯数字排序。
-r:反向排序。
-u:去重。
-kn1.n2:表示由n1区间排序到n2区间。
(三)wc:用于统计文档的行数、字符数和词数。
-l:统计行数
-m:统计字符数
-w:统计词数
(四)uniq:删除重复的行
-c:用于统计重复的行数,并把行数写在前面
(五)tee:把内容显示在屏幕上并重定向到文件中
(六)tr:替换,删除,去重字符,处理文档中特殊符号
-d:删除某个字符,
-s:删除重复的字符
将小写字母变成大写字母
替换某个字符
(七)split:切割文档
-d:根据大小切割文档,xa文件名用于存取切割后的文件,也可自定义。
-l:根据行数切割文档
五、重定向符号
>:重定向覆盖
>>:重定向追加
2>:错误覆盖重定向
2>>:错误追加重定向