博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实用小命令
阅读量:6881 次
发布时间:2019-06-26

本文共 10867 字,大约阅读时间需要 36 分钟。

一、实用小命令

1.1、cat

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。

常用选项
-n :查看文本时显示行号
-b :查看文本时显示行号,有空白的行不计其内
-E :显示是否换行,结尾以"$"结尾表示有换行
-A :显示TAB是否有加键,一个"^I"表示一个TAB
-s :压缩相邻的空行为一个

(1)测试文件[root@kube-master ~]# cat  F1123 456789123123(2)-n :查看文本时显示行号[root@kube-master ~]# cat -n F1         1  123         2   456         3  789         4  123123         5         6(3)-b :查看文本时显示行号,有空白的行不计其内      [root@kube-master ~]# cat -b F1         1  123         2   456         3  789         4  123123(4)-E :显示是否换行,结尾以"$"结尾表示有换行[root@kube-master ~]# cat -E F1123$ 456$789  $123123           $$$(5) -A :显示TAB是否有加键,一个"^I"表示一个TAB[root@kube-master ~]# cat -A F1123$ 456$789  $123123^I^I $$$(6)-s :压缩相邻的空行为一个[root@kube-master ~]# cat -s  F1123 456789123123(7)生成文件[root@kube-master ~]# cat > F2testctrl + d退出[root@kube-master ~]# cat F2test(9)合并文件[root@kube-master ~]# cat F1 F2 > F3[root@kube-master ~]# cat F3123 456789123123test

1.2、tac

将文本倒过来查看

(1)将文本倒过来查看[root@kube-master ~]# tac F1123123789 456123

1.3、rev

反向显示

(1)反向显示内容[root@kube-master ~]# echo "abcd" | revdcba[root@kube-master ~]# rev < /etc/fstab#batsf/cte/ #9102 24:54:90 13 naJ uhT no adnocana yb detaerC ##'ksid/ved/' rednu deniatniam era ,ecnerefer yb ,smetsyselif elbisseccA #ofni erom rof )8(diklb ro/dna )8(tnuom ,)8(sfdnif ,)5(batsf segap nam eeS ##0 0        stluafed     sfx                       / toor-sotnec/reppam/ved/0 0        stluafed     sfx                   toob/ 5fe0eaa3ec3f-6eb9-5234-0aee-21b8c81d=DIUU0 0        stluafed    paws                    paws paws-sotnec/reppam/ved/

1.4、head

显示头几行或者头几个字节

常用选项
-# :#表示数字,表示显示前几#行
-n # :#表示数字,表示显示前几#行,跟上面-#类似
-c # :#表示数字,表示显示前几个字节的数据

(1)-# :#表示数字,表示显示前几#行[root@kube-master ~]# head -5 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin(2)-n # :#表示数字,表示显示前几#行,跟上面-#类似[root@kube-master ~]# head -n 5 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin(3)-c # :#表示数字,表示显示前几个字节的数据[root@kube-master ~]# head -c 5 /etc/passwdroot:

1.5、tail

显示倒数后几行或倒数后几个字节,当然tail使用起来更加丰富

常用选项
-# :显示倒数后#行
-n # :跟-#一样,显示倒数后#行
-c # :显示倒数后#字节
-f :实时显示最后一行
-F :实时显示最后一行,当文件不存在则显示文件不存在

(1)-# :显示倒数后#行[root@kube-master ~]# tail -5 /etc/passwdgitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/shjenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/falsentp:x:38:38::/etc/ntp:/sbin/nologinnginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologinmysql:x:990:987::/home/mysql:/sbin/nologin(2)-n # :跟-#一样,显示倒数后#行[root@kube-master ~]# tail -n 5 /etc/passwdgitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/shjenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/falsentp:x:38:38::/etc/ntp:/sbin/nologinnginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologinmysql:x:990:987::/home/mysql:/sbin/nologin(3)-c # :显示倒数后#字节[root@kube-master ~]# tail -c 10 /etc/passwdn/nologin(4) -f :实时显示最后一行, 默认情况会打印后10行并且监控最后一行,当增加一行机会实时显示数据出来[root@kube-master ~]# tail -f F1123 456789123123[root@kube-master ~]# echo "testline" >> F1[root@kube-master ~]# tail -f F1123 456789123123testline实时监测只显示最后一行[root@squid ~]# tail -n 0  -f /etc/fstab   tesst(5) -F :实时显示最后一行,当文件不存在则显示文件不存在[root@kube-master ~]# tail -F F1123 456789123123testline[root@kube-master ~]# rm -f F1[root@kube-master ~]# tail -F F1123 456789123123testlinetail: ‘F1’ has become inaccessible: No such file or directory

1.6、tailf

跟tail -f 一样,但是性能更高,当文件发生变化才输出内容,不实监测磁盘,省电,减少磁盘读写.

[root@kube-master ~]# tailf /var/log/nginx/access.log

1.7、tr

对标准输入做文本的删除,替换等

常用选项
-d :对标准输入删除指定内容
-s : 缩减连续重复的字符成指定的单个字符

(1)测试文件[root@kube-master ~]# cat > F1123     34545asdasdas123  7878ctrl + d退出[root@kube-master ~]# cat F1123     34545asdasdas123  7878(2)删除文件内容,删除带有"123"字眼的内容[root@kube-master ~]# tr -d "123" < F1         4545asdasdas    7878(3)将小写字母替换成大写字母,标准输出生成F3文件[root@kube-master ~]# tr "a-z" "A-Z" < F1 > F3[root@kube-master ~]# cat F3123     34545ASDASDAS123  7878(4)将多列空白压缩成一列[root@kube-master ~]# dfFilesystem              1K-blocks     Used Available Use% Mounted on/dev/mapper/centos-root 120527360 54045264  66482096  45% /devtmpfs                  1919508        0   1919508   0% /devtmpfs                     1931784        0   1931784   0% /dev/shmtmpfs                     1931784    11968   1919816   1% /runtmpfs                     1931784        0   1931784   0% /sys/fs/cgroup/dev/sda1                 1038336   145300    893036  14% /boottmpfs                      386360        0    386360   0% /run/user/0[root@kube-master ~]# df -h | tr -s " "Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 115G 52G 64G 45% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 12M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/sda1 1014M 142M 873M 14% /boottmpfs 378M 0 378M 0% /run/user/0

1.8、cut

对列切割

常用选项
-d :以什么作为分隔符
-c :取出第几列
--output-delimeter="#" :输出内容的时候以什么作为分隔符

(1)以/etc/passwd为列子前5行为列子[root@kube-master ~]# cat /etc/passwd | head -5root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin(2)取出第1列,用户名[root@kube-master ~]# cut -d : -f 1 /etc/passwd | head -5rootbindaemonadmlp(3)取出第1和第3列[root@kube-master ~]# cut -d : -f 1,3 /etc/passwd | head -5root:0bin:1daemon:2adm:3lp:4(4)取出第1列至第3列[root@kube-master ~]# cut -d : -f 1-3 /etc/passwd | head -5root:x:0bin:x:1daemon:x:2adm:x:3lp:x:4(5)取出第1列至第3列,以|号为分割符输出[root@kube-master ~]# cut --output-delimiter="|" -d : -f 1-3 /etc/passwd | head -5root|x|0bin|x|1daemon|x|2adm|x|3lp|x|4

1.9、paste

将两文件横向合并,默认将第1个文件的第一行和第2个文件的第一行合并在一起以此类推

常用选项
-d :合并中间输出的分隔符,默认为空格
-s :将每个文件的所有行合并成1行,第1个文件所有内容合并成第一行,第2个文件的所有内容合并成第二行

(1)大家如果用过ansible都知道,如果使用ansible批量发送SSH公钥需要在/etc/ansible/hosts中定义每个主机的SSH用户和密码,一般在管理主机的时候我们都会将密码类的信息记录在xls中,这时候就排上用场了(假如有100台主机,密码都不一样)将xls记录的IP列复制到F1文件,不排除有windwos的"^M"回车,使用dos2unix清除,下面F2,F3文件也一样,当然ansible_ssh_user,ansible_ssh_pss不是xls记录内容,还需要先合并F1,F2这个我就不讲了,下面会了就明白了。文件1[root@kube-master ~]# cat F1[host]10.1.1.110.1.1.210.1.1.310.1.1.4文件2[root@kube-master ~]# cat F2ansible_ssh_user=rootansible_ssh_user=rootansible_ssh_user=rootansible_ssh_user=root文件3[root@kube-master ~]# cat F3ansible_ssh_pass=123ansible_ssh_pass=456ansible_ssh_pass=789ansible_ssh_pass=910合成文件,循序要F1,F2,F3[root@kube-master ~]# paste   F1 F2 F3[host]10.1.1.1        ansible_ssh_user=root   ansible_ssh_pass=12310.1.1.2        ansible_ssh_user=root   ansible_ssh_pass=45610.1.1.3        ansible_ssh_user=root   ansible_ssh_pass=78910.1.1.4        ansible_ssh_user=root   ansible_ssh_pass=910(2)加上-d选项的效果[root@kube-master ~]# paste -d :  F1 F2 F3[host]::10.1.1.1:ansible_ssh_user=root:ansible_ssh_pass=12310.1.1.2:ansible_ssh_user=root:ansible_ssh_pass=45610.1.1.3:ansible_ssh_user=root:ansible_ssh_pass=78910.1.1.4:ansible_ssh_user=root:ansible_ssh_pass=910(3)-s :将每个文件的所有行合并成1行,第1个文件所有内容合并成第一行,第2个文件的所有内容合并成第二行[root@kube-master ~]# paste -s  F1 F2 F3[host]  10.1.1.1        10.1.1.2        10.1.1.3        10.1.1.4                ansible_ssh_user=root   ansible_ssh_user=root   ansible_ssh_user=root   ansible_ssh_user=root                ansible_ssh_pass=123    ansible_ssh_pass=456    ansible_ssh_pass=789    ansible_ssh_pass=910

2.0、wc

-l :统计多少行

-w :统计多少个单词
-c :统计多少个字节
-m :统计多少个字符
-L :显示文件中最长行的长度

(1)以这个为列子[root@kube-master ~]# cat F1[host]10.1.1.110.1.1.210.1.1.310.1.1.4(2)默认不加任何选项表示为,5行,5个单词,43个字节数[root@kube-master ~]# wc F1 5  5 43 F1(3)-l :统计多少行[root@kube-master ~]# cat F1  | wc -l5(4)-w :统计多少个单词[root@kube-master ~]# cat F1  | wc -w5(5)-c :统计多少个字节[root@kube-master ~]# cat F1  | wc -c43(6)-m :统计多少个字符[root@kube-master ~]# cat F1  | wc -m43-L :显示文件中最长行的长度[root@kube-master ~]# cat F1  | wc -L8

2.1、sort

对内容排序或者去重复等,默认以每行第一个字符排序

常用选项
-t :指定分隔符
-k :指定对哪一列排序,一般跟-t配合使用
-n :按数字排序,默认按升序排序,从小到大1,2,3,4,5,6
-r :倒序
-u :排序同时去掉重复的行,相邻和不相邻的重复行也会删除
-f :忽略大小写

(1)以/etc/passwd为列子前5行为列子[root@kube-master ~]# cat /etc/passwd | head -5root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin(2)默认情况不加任何选项以每行第一个字符排序,adm,bin,daemon,lp,root[root@kube-master ~]# cat /etc/passwd | head -5 | sortadm:x:3:4:adm:/var/adm:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinroot:x:0:0:root:/root:/bin/bash(3)指定以第3列UID排序,并且以数字排序,升序[root@kube-master ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -nroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin(4)-r 倒排[root@kube-master ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -n -rlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologinroot:x:0:0:root:/root:/bin/bash(5)去掉重复的行[root@kube-master ~]# cat F1111123452222[root@kube-master ~]# cat F1 | sort -u11222345

2.2、uniq

去重复行或者对重复行统计

常用选项
-c :对连续重复以及不连续重复的行统计
-u :只显示不连续重复的行
-d :只显示相邻并且连续重复的行

(1)以这个为例子[root@kube-master ~]# cat F1111123452222(2)-c :对连续重复以及不连续重复的行统计[root@kube-master ~]# cat F1 | uniq -c  2 11  1 2  1 3  1 4  1 5  2 22(3) -u :只显示不连续重复的行[root@kube-master ~]# cat F1 | uniq -u2345(4)-d :只显示相邻并且连续重复的行[root@kube-master ~]# cat F1 | uniq -d1122

2.3、其他

(1)生成随机数取前30个字节base64openssl rand -base64 30 | head -c 3016进制openssl rand -hex 30 | head -c 30随机生成30个数字tr -dc '[[:digit:]]' < /dev/urandom | head -c 30随机生成30个小写字母tr -dc '[[:lower:]]' < /dev/urandom | head -c 30随机生成30个大写字母tr -dc '[[:upper:]]' < /dev/urandom | head -c 30

二、简单实操一下

1.1、UV

UV即用户访问量,一般统计以不重复的单个IP之和来衡量

(1)以这个nginx日志文件为例子[root@kube-master ~]# cat access.log  | head -1192.168.126.111 - - [20/Feb/2019:15:35:16 +0800] "GET / HTTP/1.1" 200 1482 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"(2)先取出第1例,然后对他进行排序,排序完就去重复,然后统计[root@kube-master ~]# cat access.log  | cut -d " " -f 1 | sort -n | sort -u | wc -l4[root@kube-master ~]# cat access.log  | cut -d " " -f 1 | sort -n | uniq | wc -l4

1.2、PV

PV即页面访问量,每个页面的访问量多少

(1)以这个nginx日志文件为例子[root@kube-master ~]# cat access.log  | head -1192.168.126.111 - - [20/Feb/2019:15:35:16 +0800] "GET / HTTP/1.1" 200 1482 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"(2)首先取出URI第7列,然后按字符排序,然后uniq -c对重复或者不重复的进行统计,然后升序排序,找出页面访问最大的URI[root@kube-master ~]# cat access.log  | cut -d " " -f 7 | sort  | uniq -c | sort -r -n 60 /favicon.ico  3 /zabbix  3 /lnmp.gif  3 /  1 /zabbix/api_jsonrpc.php

一步一步来!!!!!!!!!!!!!!!!!!!!!!

其实很简单哒!!!!!!!!!!!!!!!!!!!!!

转载于:https://blog.51cto.com/10869205/2405600

你可能感兴趣的文章
linux命令学习(12 13)-crontab at
查看>>
corosync+openais+pacemaker+web+drbd
查看>>
网络设备构成及管理方式
查看>>
[硕.Love Python] 高斯N皇后问题(回溯法)
查看>>
iOS 获取本地视频的缩略图
查看>>
Android Shape渲染的使用(经典,学习研究不后悔)
查看>>
修改RAC环境中的ASM DG名称
查看>>
Mongo数据库 客户端_启动.bat
查看>>
iOS 获取app的基本信息
查看>>
MySQL编码问题
查看>>
gpasswd命令--Linux命令应用大词典729个命令解读
查看>>
首次打开应用是显示引导页
查看>>
CCNA题库第一部分
查看>>
虚拟键盘弹出时挡住EditText的解决方案
查看>>
公共子串计算
查看>>
向域中批量创建用户
查看>>
某企业之打印管理方案
查看>>
linux 系统上的进程查看管理工具之htop/dstat/top/ps命令详解
查看>>
巧妙链接WPS文字中的文本框,让内容分栏呈现出来
查看>>
Windows Server 2012 R2 WDS部署服务之五排错
查看>>