[命令] Linux 命令 uniq (文件里字符重复的管理)

案例一:uniq 命令去重

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq
a1
b2
c3
d2
e3

(补充:这里以给 test.txt 文件里的字符为例)

案例二:uniq 只显示重复的行

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -d
a1
c3

(补充:这里以只显示 test.txt 文件里重复的行为例)

案例三:uniq 只显示不重复的行

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -u
b2
d2
e3

(补充:这里以只显示 test.txt 文件里不重复的行为例)

案例四:显示每个字符出现的次数

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -c
      3 a1
      1 b2
      2 c3
      1 d2
      1 e3

(补充:这里以显示 test.txt 每个字符出现的次数为例)

[命令] Linux 命令 set (设置 Shell 里的位置变量或者 Shell 的执行方式)

内容一:set 命令的格式

1.1 设置 Shell 的位置变量的格式

# set <Value of the first position variable> <Value of the second location variable> ......

1.2 设置 Shell 的执行方式

# set <parameter>

或者:

# set <parameter> +o

或者:

# set <parameter> -o

(补充:+o 代表打开特殊属性,-o 代表结束特殊属性)

内容二: set 的常用参数

1) -a 将已修改的变量进行标记,为将其输出至环境变量做准备
2) -b 让被中止的后台进程立刻显示退出状态代码
3) -d 取消使用杂凑表记忆中使用过的指令
4) -e 若退出状态代码不为 0 (正常退出)则立即退出,并显示错误原因
5) -f 取消通配符
6) -h 默认自动记录函数位置
7) -k 让命令的参数为此命令的环境变量
8) -l 默认自动记录 for 循环变量名
9) -m 监视模式
10) -n 测试模式(只读取不执行)
11) -p 优先顺序模式
12) -P 让文件或目录代替符号链接
13) -t 让随后的命令执行后立即退出
14) -u 使用未定义的变量时显示错误信息
15) -v 显示输入值
16) -H shell 使用感叹号 “!” + 号码的方式调用 history 命令中的历史命令
17) -x 命令指向前先显示此命令的参数或变量

(补充:将以上参数前面的 – 换成 + 则会变成相反的效果)

[步骤] Linux rm 命令的监控

步骤一:将原来的 rm 命令进行备份

# cp /usr/bin/rm  /usr/bin/rm.original

步骤二:创建一个记录 rm 命令使用的脚本

# cat /usr/bin/rm
#!/bin/bash
log=/var/log/rm_command.log
echo "The $$ is calling rm command" >> $log
echo "The full command is $*" >> $log
echo
echo "now use this command to get more information: /bin/ps axwwo user,pid,ppid,%cpu,%mem,vsz,rss,stat,time,cmd" >>$log
/bin/ps axwwo user,pid,ppid,%cpu,%mem,vsz,rss,stat,time,cmd >>$log
/usr/bin/rm.original $*
echo "============================================================" >>$log

步骤三:给记录 rm 命令使用的脚本执行权限

# chmod 755 /usr/bin/rm.original

步骤四:下次使用 rm 命令后就可以监控 /var/log/rm_command.log 日志了

(步骤略)