shell

十. shell特殊符_cut命令

特殊符号

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_wc_uniq命令

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 -c2 12 1231 21 abc 111,2221 abd

十二 tee_tr_split命令
tee命令 和>类似,重定向的同时还在屏幕显示

[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee a.txt2 12 1231 21 abc 111,2221 abd
[root@qklinux-01 ~]# cat a.txt2 12 1231 21 abc 111,2221 abd

tee –a也可以追加内容

[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee -a a.txt2 12 1231 21 abc 111,2221 abd
[root@qklinux-01 ~]# cat a.txt2 12 1231 21 abc 111,2221 abd2 12 1231 21 abc 111,2221 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 abcaa2577 abcab1101 abcac6178 a.txt1000 xaa1000 xab1000 xac1000 xad1000 xae1000 xaf178 xag18534 总用量

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.txtls: 无法访问a.txt: 没有那个文件或目录7 2.txt[root@qklinux-01 ~]# ls 1.txt || wc -l 2.txt1.    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} ]thenmkdir -p /usr/local/domob/records/${LOGNAME}chmod 300 /usr/local/domob/records/${LOGNAME}fiexport 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

学习linux 11相关推荐

  1. Linux系统新手学习的11点建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux的一些建议. 一.从基础开始:常常有些朋友在Linux论 ...

  2. [ZT]系统学习Linux的11点建议

    下面这篇文章不知是哪位仁兄的经验之谈,确有十分道理,读了这篇文章,也算作是我的Linux之路的开始吧. 系统学习Linux的11点建议 原文 随着Linux应用的扩展许多朋友开始接触Linux,根据学 ...

  3. 学习 Linux,101: 引导系统

    2019独角兽企业重金招聘Python工程师标准>>> 系列文章: http://www.ibm.com/developerworks/cn/views/linux/libraryv ...

  4. 让学习linux变成一种习惯

    无论学习什么技术,都是从小白开始,没有大佬是天生会Linux的,你羡慕的那些大佬,都是通过不断的刻苦学习从而蜕变成大佬的.由于需要解决生存问题,加上我也对Linux比较有兴趣,所以就打算从事故事Lin ...

  5. 凡人学习Linux之路

    近期Windows 11的信息频频出现在各个公众平台上,对它的评价好坏参半,我的关注点是它取消了任务栏移动功能,只能靠着屏幕底边,不能移动到顶部或左右两侧,而且有人喊话说准备撤了,换Linux.其实现 ...

  6. 小白该如何学习Linux操作系统(2)

    献给初学者:小白该如何学习Linux操作系统(2) 三.用虚拟机软件学习linux 3.1 什么是虚拟机软件 虚拟机软件能够在一台电脑上模仿出来若干台PC电脑,每台PC能够运转独自的操作系统而互不搅扰 ...

  7. 轻松学习LINUX系列教程推出

    本系列多媒体教程已完成的博文: 1.轻松学习Linux之入门篇 http://chenguang.blog.51cto.com/350944/449214 2.轻松学习Linux之本地安装系统 (分区 ...

  8. flayber正文 再谈如何学习Linux,一线Linux专家学习经验谈

    记得最早接触linux是在2000年,那个时候,还在上大学,一个同学从荷兰回来,带回来了一个Linux的拷贝版,记得版本还是Redhat6.2.曾经为安装一个系统让我们忘记疲劳,挑灯夜战,不亦乐乎.那 ...

  9. 谈谈如何学习Linux操作系统?

    本文首先向 "技术成就梦想"博主致敬,http://ixdba.blog.51cto.com/2895551/569329,感谢他所付出的诸多努力.科研项目以及未来发展驱动,lin ...

最新文章

  1. 波普艺术比较适合团队活动宣传海报设计风格,除了波普还有其他哪些艺术流派值得我们学习呢?
  2. class ts 扩展方法_一些让程序保持可扩展的 TypeScript 技巧
  3. JSHint 代码检查
  4. 微信微调助手WeChatTweak for mac(微信多开和防撤回工具)最新版
  5. PAIP.DB4O与SQL配合使用在海量数据下.txt
  6. Pandas Learning
  7. 基于单片机烟雾温湿度甲醛监测设计
  8. 鸿蒙支持ps4手柄吗,PS5硬件兼容性测试:哪些PS4硬件可以在PS5上使用
  9. 企业开票信息税号查询API接口服务
  10. 长连接与短连接的区别
  11. vs各个版本下载路径
  12. (跨模态)AI作画——使用stable-diffusion生成图片
  13. PDF转Markdown文件
  14. 图文详解win7声音图标不见了怎么办
  15. CC2530 ADC学习
  16. 学画画要花多少钱_孩子学画画大约需要多少钱呢?
  17. Diffusion Models专栏文章汇总:入门与实战
  18. Latex 表格整体居中(含实例)
  19. Js获取上传文件的绝对路径时总是的到C:\fakepath\+文件名称 解决方案
  20. 搭建一个自定义的工作流管理平台(二)

热门文章

  1. 谷歌流计算论文streaming 101: 批处理之上的世界(一)
  2. IT程序员如何写好PPT
  3. strptime 将时间字符串转为 struct tm 格式
  4. python代码运行助_【分享】中午吃什么,Python摇一摇代码帮助你 | 勤奋的小青蛙...
  5. js实现页面数据的筛选
  6. part-24 输出阻抗Ro和Rout
  7. UE5使用插件Quixel Bridge报错
  8. (切换多语言)elementUI +vue-i18n 的国际化设置及使用
  9. 1-线性回归之单变量线性回归基本原理的python实现
  10. 2006年10月4日 星期三