0404 Linux shell基础知识2
九、shell特殊符-cut命令
1、特殊符号
(1)* :任意个任意字符
(2)?:任意一个字符
(3)# :注释字符
(4)\ :脱义字符
(5)| :管道符
2、管道符相关的命令
cut命令的作用就是截取字符串的,例如,使用管道符将/etc/passwd目录下的前两行打印出来,针对这两行指定切割符号切割,
-d指定分隔符号“:”,-f指定截取段号
-c指定第四个字符
3、sort_wc_uniq 命令
Sort排序时使用,使更直观的查看文档
(1)以首字字母a-z排序,默认按照ASCII码排序。即符号在前,然后是0-9,然后是大写字母A-Z,然后是小写字母a-z
(2)使用sort -n排序时,会默认字母、符号开头的文件,首字字符为0,使用sort -nr 则反序排序。
(3)sort -t 分隔符 针对第几段进行排序
(4)wc -l 统计行数
(5)wc -m 统计字符数
(6)wc -w 统计词 以空格做词的区分
(7)uniq去重,-c统计行数
一般都需要先排序,再去重
(8)tee命令与重定向>类似,不过重定向内容可以显示在屏幕
tee -a 追加
(9)tr 命令用来替换字符,针对字符来操作的
(10)split 切割
split -b 100M 针对大小切割(默认单位字节)
也可指定文件前缀名
split -l 1000 针对行数切割
十、shell特殊符号(下)
(1)多条命令使用“;”分隔
(2)> 一个大于号,正确重定向,会把之前文件覆盖
>>追加重定向,追加正确的内容输出
2>错误内容重定向
2>>错误追加重定向,追加错误的内容输出
&>正确错误都重定向
(3)||和&&,用于命令之间的判断
|| 或者的含义 如果第一条命令执行不成功,则执行第二条,如果第一条命令执行成功,则第二条不执行
&&如果第一条命令执行成功了,才执行第二条命令,反之都不执行。
十一、简易审计系统
有时候我们需要对线上用户操作记录进行历史记录待出现问题追究责任人,但Linux系统自带的history命令用户有自行删除权限,那怎么设置可以让用户的操作记录实时记录,并保证普通用户无权删除呢?
1.mkdir -p /usr/local/domob/records/
chmod 777 /usr/local/domob/records/
chmod +t /usr/local/domob/records/
2.vi /etc/profile 在最后添加下面的代码
if [ ! -d /usr/local/domob/records/${LOGNAME} ]
then
mkdir -p /usr/local/domob/records/${LOGNAME}
chmod 300 /usr/local/domob/records/${LOGNAME}
fi
export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history"
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'