8.1 UNIX shell和shell变量
通过/etc/passwd文件进行用户身份鉴定、确定主目录和默认shell
shell可以作为一种解释型的程序设计语言进行编程
- echo命令:显示长度
没有参数输出空行,参数可以任意长,串中含有元字符则整个串全部用双引号括起
bash识别转义字符必须使用-e选项
转义字符必须用双引号括起来
\r光标回到本行行首
- 消除元字符特殊含义的过程
\:后面的元字符按照字符字面解释
“”:双引号“”中除$ 、’’、\ 外的字符都能按照字面意思解释
‘’:中的任何字符都失去特殊含义
?通配符
\? 普通问号
set:查看当前使用的shell变量
unset:删除不需要的变量
赋值:变量名=变量值
变量名必须以字母开始,等号两边不能有空格
HOME :保存用户主目录,可用于其他命令定位主目录
PATH :设置shell定位命令(程序)时所要查找的目录名
- 修改PATH值的格式
$PATH= $PATH:/usr/mybin
PS1:设置shell作为顶层命令提示符的字符串(赋值方式PS1=“提示符”),PS1中可使用转义序列,默认的PS1为[\u@\h\W]$ - \u:显示当前用户的名称
- \h:显示当前机器的主机名
- \W:显示工作目录(最底层)
- $:当前用户是root,显示#;否则显示 $
- \s:当前运行的shell名称
- \w:工作目录的完整路径
- \d :显示当前日期
- \t:显示当前时间
PS2:多行输入一条命令时,设置第二行及以后行的提示符,默认是>,输入\换行
SHELL:设置登录shell的完整路径
TERM:设置终端类型
TZ变量:设置用户所在时区
8.2 其他元字符和其他UNIX系统工具
重音符号``是告诉shell先执行重音符号括起来的命令,其结果替换命令行中原来的命令
;在一个命令行中分隔多个命令,shell从左至右执行
()几个命令放在一对括号中,编成一组执行,编组命令可以被重定向
&可以让程序在后台运行:command &
|:链接命令,使用管道操作符
管道使用方式:command A | command B
管道流水线:com1 | com2 | com3 | … | …
sleep:使执行该命令的进程延时指定的秒数
ps:不带选项显示用户活动进程的状态
PID 进程ID号
TTY 控制进程的终端号
TIME 进程已经运行的时间
CMD 命令名
ps命令选项:
- -e 显示所有进程
- -f显示信息的完整列表(包括完整的命令行)
可以叠加使用
nohup命令:保持执行,使用户退出系统时,后台进程不被终止,nohup命令不能自动将任务放在后台运行,需要在命令末尾加&,输出自动保存在nohup.out文件中
kill命令:终止不需要的进程, 发信号给指定进程,进行进程间的通信,kill信号种类与用途:重新加载相关配置,重新打开日志,激活调用输出等
kill -l
kill信号列表
kill [信号码/号码] PID
$ kill -SIGKLII 5025
向5025号进程发送9号信号
$ kill -9 5025
向5025号进程发送9号信号
PID为0,会终止所有和shell有关的进程(退出终端)
15会保存,9不会,不到万不得已不用9
- 用户只能终止自己的进程,管理员可以终止任何进程
tee命令:分离输出
tee 命令和| 一起实现多重输出
grep命令:文件搜索
grep 字符串 文件名
指定查找的样式和文件名
在一个或多个文件中查找满足特定格式(正则表达式,RE)
grep命令文件参数可以使用通配符,grep命令选项:
-c:只显示每个文件中包含匹配样式的行数
-i: 搜索匹配时忽略大小写
-l :只显示具有匹配的行的文件名,而不显示匹配行
-n:每个输出前显示行号
-v:仅显示不匹配的行
sed 's/abc/ABC/' file
s指替换,旧内容abc,新内容ABC,在file文件中操作
sort 文件名:对文件内容按照字母或数字顺序排序
$ sort filename
sort命令选项:
-b:忽略前导空格
-d: 按字典顺序排序,忽略标点符号和控制字符
-f :忽略大小写区别
-n:数字以数值排序,包括负数和小数
-o:将输出存储在指定文件中
-r:倒序排序,由升序变为降序
sort -k n 文件名
按第n列排序(前提:文件按相应格式建立,字段间隔符默认为空格或Tab)
8.3 启动文件、别名与UNIX进程管理
/etc/profile 登录shell首先执行该文件,管理员创建、维护、修改,对所有用户生效
export:使一系列shell变量用于子shell(登录类文件大量使用)
$ export var1 var2
导入变量var1,var2
$ export
查看已有变量
umask用于设置用户创建文件或目录的默认权
alias命令:为经常使用命令定义一个更短、更容易记的名字
$ alias del=rm
等号两侧不能有空格,被赋值中若有空格则用双引号引起
$ alias
显示系统中设置的别名
$ unalias 别名
取消别名