特殊符号
1.*任意个任意字符
2.?任意一个字符
3.#注释字符
4.\脱义字符
5.|管道符
cut命令是用来截取一个字段
cut选项
-d分割字符 分割字符需要用单引号括起来
-c 指定后面是第几个字符
-f 显示指定字段的内容
cut的用法
[root@qklinux-01 ~]# cat /etc/passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@qklinux-01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 //表示截取第一段
root
bin
[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 //表示截取前两段
root:x
bin:x
[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 //表示截取前三段
root:x:0
bin:x:1
sort排序,-n以数字排序
-r反向排序
-t 分隔符 –kn1/-kn1,n2
例:追加/etc/passwd到1.txt
[root@qklinux-01 ~]# head /etc/passwd >> 1.txt
编辑1.txt文件并写入特殊符号
[root@qklinux-01 ~]# vim 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1212aaaaaa
88888888dhajskkd
*sjakjsk
1212312
1231
>
<
{
]
用sort排序
[root@qklinux-01 ~]# sort 1.txt
<
>
]
{
1212312
1212aaaaaa
1231
1.txt
2.txt
88888888dhajskkd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*sjakjsk
sync:x:5:0:sync:/sbin:/bin/sync
sort –n以数字排序 字母和特殊符号会认为是0
[root@qklinux-01 ~]# sort -n 1.txt
<
>
]
{
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*sjakjsk
sync:x:5:0:sync:/sbin:/bin/sync
1.txt
2.txt
1212aaaaaa
1231
1212312
88888888dhajskkd
sort –r会反着排序 最大的数字在前面
[root@qklinux-01 ~]# sort -nr 1.txt
88888888dhajskkd
1212312
1231
1212aaaaaa
2.txt
1.txt
sync:x:5:0:sync:/sbin:/bin/sync
*sjakjsk
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
{
]
>
<
wc命令
wc –l统计行数
[root@qklinux-01 ~]# wc -l 1.txt
21 1.txt
wc –m统计字数
[root@qklinux-01 ~]# wc -m 1.txt
455 1.txt
wc –w统计词
[root@qklinux-01 ~]# wc -w 1.txt
21 1.txt
uniq命令去重
编辑2.txt文件
[root@qklinux-01 ~]# vi 2.txt
[root@qklinux-01 ~]# cat 2.txt
123
abc 111,222
123
abd
1
2
1
先排序 再去重
[root@qklinux-01 ~]# sort 2.txt |uniq
1
123
2
abc 111,222
abd
[root@qklinux-01 ~]# sort 2.txt |uniq -c
2 1
2 123
1 2
1 abc 111,222
1 abd
十二 tee_tr_split命令
tee命令 和>类似,重定向的同时还在屏幕显示
[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee a.txt
2 1
2 123
1 2
1 abc 111,222
1 abd
[root@qklinux-01 ~]# cat a.txt
2 1
2 123
1 2
1 abc 111,222
1 abd
tee –a也可以追加内容
[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee -a a.txt
2 1
2 123
1 2
1 abc 111,222
1 abd
[root@qklinux-01 ~]# cat a.txt
2 1
2 123
1 2
1 abc 111,222
1 abd
2 1
2 123
1 2
1 abc 111,222
1 abd
tr命令 用来替换字符 tr ‘a’ ‘b’ 大小写替换tr ‘[a-z]’ [A-Z]’
[root@qklinux-01 ~]# echo "qkailinux" |tr '[al]' '[AL]'
qkAiLinux
[root@qklinux-01 ~]# echo "qkailinux" |tr 'a' 'A'
qkAilinux
[root@qklinux-01 ~]# echo "qkailinux" |tr '[a-z]' '[A-Z]'
QKAILINUX
split切割, 用于切割文档, -b大小(默认单位字节)
追加重定向文件
[root@qklinux-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@qklinux-01 ~]# du -sh a.txt
240K a.txt
[root@qklinux-01 ~]# ls
111 4.txt
123 aa.txt
1_heard.ttx anaconda-ks.cfg.1
1_sorft.txt a.txt
1.txt a.xtt
1.txt~ bb.txt
1.xtt qkai2
234 yum.log
2.txt zsh-5.0.2-31.el7.x86_64.rpm
3.txt 新建文本文档.txt
[root@qklinux-01 ~]# mv a.txt test/
mv: 无法将"a.txt" 移动至"test/": 不是目录
[root@qklinux-01 ~]# mkdir test
[root@qklinux-01 ~]# mv a.txt test/
切割文件1000k 不加单位默认的是字节
[root@qklinux-01 test]# split -b 1000 a.txt
[root@qklinux-01 test]# ls
a.txt xaw xbt xcq xdn xek xfh xge xhb xhy xiv
xaa xax xbu xcr xdo xel xfi xgf xhc xhz xiw
xab xay xbv xcs xdp xem xfj xgg xhd xia xix
xac xaz xbw xct xdq xen xfk xgh xhe xib xiy
xad xba xbx xcu xdr xeo xfl xgi xhf xic xiz
xae xbb xby xcv xds xep xfm xgj xhg xid xja
xaf xbc xbz xcw xdt xeq xfn xgk xhh xie xjb
xag xbd xca xcx xdu xer xfo xgl xhi xif xjc
xah xbe xcb xcy xdv xes xfp xgm xhj xig xjd
xai xbf xcc xcz xdw xet xfq xgn xhk xih xje
xaj xbg xcd xda xdx xeu xfr xgo xhl xii xjf
xak xbh xce xdb xdy xev xfs xgp xhm xij xjg
xal xbi xcf xdc xdz xew xft xgq xhn xik xjh
xam xbj xcg xdd xea xex xfu xgr xho xil xji
xan xbk xch xde xeb xey xfv xgs xhp xim xjj
xao xbl xci xdf xec xez xfw xgt xhq xin xjk
xap xbm xcj xdg xed xfa xfx xgu xhr xio xjl
xaq xbn xck xdh xee xfb xfy xgv xhs xip
xar xbo xcl xdi xef xfc xfz xgw xht xiq
xas xbp xcm xdj xeg xfd xga xgx xhu xir
xat xbq xcn xdk xeh xfe xgb xgy xhv xis
xau xbr xco xdl xei xff xgc xgz xhw xit
xav xbs xcp xdm xej xfg xgd xha xhx xiu
[root@qklinux-01 test]# du -sh
1.3M .
指定大小
[root@qklinux-01 test]# split -b 100k a.txt
[root@qklinux-01 test]# ls
a.txt xaa xab xac
[root@qklinux-01 test]# du -sh *
240K a.txt
100K xaa
100K xab
40K xac
指定以abc开头的名字
[root@qklinux-01 test]# split -b 100k a.txt abc
[root@qklinux-01 test]# ls
abcaa abcab abcac a.txt
指定切割每1000行一个 split指定行数
[root@qklinux-01 test]# split -l 1000 a.txt
[root@qklinux-01 test]# wc -l *
2500 abcaa
2577 abcab
1101 abcac
6178 a.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
1000 xaf
178 xag
18534 总用量
shell特殊符号
特殊符号 $
变 量 前 缀 , ! 变量前缀,! 变量前缀,!组合 正则里面表示行位
;多条命令写到一行,用分号分割
比如:
[root@qklinux-01 ~]# ls 1.txt ; wc -l 2.txt
1.txt
7 2.txt
~用户的家目录,后面正则表达时表示匹配符
&把命令放到后台去
[root@qklinux-01 ~]# sleep 30&
[1] 8188
root@qklinux-01 ~]# jobs
[1]+ 运行中 sleep 30 &
一个大于号表示正确重定向 会把之前内容覆盖
两个大于号追加重定向
2> 错误重定向
2>>错误追加重定向
&>正确错误不区分全部输入到一个文件里
中括号[]指定字符中的一个,[0-9] [abc]
符号||和&&,用于命令之间
||用在shell中表示或者 如果命令用|| 第一条命令执行成功就不会执行第二条 ,如果第一条命令是错误的,执行失败就会执行第二条
[root@qklinux-01 ~]# ls a.txt || wc -l 2.txt
ls: 无法访问a.txt: 没有那个文件或目录
7 2.txt
[root@qklinux-01 ~]# ls 1.txt || wc -l 2.txt
1. txt
&&命令表示前面命令执行成功才会执行后面命令 如果前面命令执行不成功,后面命令就不会执行
[root@qklinux-01 ~]# ls 1.txt && wc -l 2.txt
1.txt
7 2.txt
[root@qklinux-01 ~]# ls 1a.txt && wc -l 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
简易审计系统
1. linux系统添加操作记录审计 设置线上用户操作记录 进行历史记录
设置用户操作记录实时记录 保证普通用户无权删除
步骤 :创建目录并给权限
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'
二. 关于PROMPT_COMMAND环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html
source exec 区别
http://alsww.blog.51cto.com/2001924/1113112
sort并未按ASCII排序
http://blog.csdn.net/zenghui08/article/details/7938975