实用小命令

一、实用小命令

1.1、cat

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。
常用选项
-n :查看文本时显示行号
-b :查看文本时显示行号,有空白的行不计其内
-E :显示是否换行,结尾以"$"结尾表示有换行
-A :显示TAB是否有加键,一个"^I"表示一个TAB
-s :压缩相邻的空行为一个

(1)测试文件
[[email protected] ~]# cat  F1
123
 456
789
123123

(2)-n :查看文本时显示行号
[[email protected] ~]# cat -n F1
         1  123
         2   456
         3  789
         4  123123
         5
         6

(3)-b :查看文本时显示行号,有空白的行不计其内
[[email protected] ~]# cat -b F1
         1  123
         2   456
         3  789
         4  123123

(4)-E :显示是否换行,结尾以"$"结尾表示有换行
[[email protected] ~]# cat -E F1
123$
 456$
789  $
123123           $
$
$

(5) -A :显示TAB是否有加键,一个"^I"表示一个TAB
[[email protected] ~]# cat -A F1
123$
 456$
789  $
123123^I^I $
$
$

(6)-s :压缩相邻的空行为一个
[[email protected] ~]# cat -s  F1
123
 456
789
123123

(7)生成文件
[[email protected] ~]# cat > F2
test
ctrl + d退出
[[email protected] ~]# cat F2
test

(9)合并文件
[[email protected] ~]# cat F1 F2 > F3
[[email protected] ~]# cat F3
123
 456
789
123123

test

1.2、tac

将文本倒过来查看

(1)将文本倒过来查看
[[email protected] ~]# tac F1

123123
789
 456
123

1.3、rev

反向显示

(1)反向显示内容
[[email protected] ~]# echo "abcd" | rev
dcba
[[email protected] ~]# 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=DIUU
0 0        stluafed    paws                    paws paws-sotnec/reppam/ved/

1.4、head

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

(1)-# :#表示数字,表示显示前几#行
[[email protected] ~]# head -5 /etc/passwd
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

(2)-n # :#表示数字,表示显示前几#行,跟上面-#类似
[[email protected] ~]# head -n 5 /etc/passwd
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

(3)-c # :#表示数字,表示显示前几个字节的数据
[[email protected] ~]# head -c 5 /etc/passwd
root:

1.5、tail

显示倒数后几行或倒数后几个字节,当然tail使用起来更加丰富
常用选项
-# :显示倒数后#行
-n # :跟-#一样,显示倒数后#行
-c # :显示倒数后#字节
-f :实时显示最后一行
-F :实时显示最后一行,当文件不存在则显示文件不存在

(1)-# :显示倒数后#行
[[email protected] ~]# tail -5 /etc/passwd
gitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/sh
jenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/false
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:990:987::/home/mysql:/sbin/nologin

(2)-n # :跟-#一样,显示倒数后#行
[[email protected] ~]# tail -n 5 /etc/passwd
gitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/sh
jenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/false
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:990:987::/home/mysql:/sbin/nologin

(3)-c # :显示倒数后#字节
[[email protected] ~]# tail -c 10 /etc/passwd
n/nologin

(4) -f :实时显示最后一行, 默认情况会打印后10行并且监控最后一行,当增加一行机会实时显示数据出来
[[email protected] ~]# tail -f F1
123
 456
789
123123
[[email protected] ~]# echo "testline" >> F1
[[email protected] ~]# tail -f F1
123
 456
789
123123

testline
实时监测只显示最后一行
[[email protected] ~]# tail -n 0  -f /etc/fstab
tesst

(5) -F :实时显示最后一行,当文件不存在则显示文件不存在
[[email protected] ~]# tail -F F1
123
 456
789
123123

testline
[[email protected] ~]# rm -f F1
[[email protected] ~]# tail -F F1
123
 456
789
123123

testline
tail: ‘F1’ has become inaccessible: No such file or directory

1.6、tailf

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

[[email protected] ~]# tailf /var/log/nginx/access.log

1.7、tr

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

(1)测试文件
[[email protected] ~]# cat > F1
123     34545
asdasdas
123  7878
ctrl + d退出
[[email protected] ~]# cat F1
123     34545
asdasdas
123  7878

(2)删除文件内容,删除带有"123"字眼的内容
[[email protected] ~]# tr -d "123" < F1
         4545
asdasdas
    7878

(3)将小写字母替换成大写字母,标准输出生成F3文件
[[email protected] ~]# tr "a-z" "A-Z" < F1 > F3
[[email protected] ~]# cat F3
123     34545
ASDASDAS
123  7878

(4)将多列空白压缩成一列
[[email protected] ~]# df
Filesystem              1K-blocks     Used Available Use% Mounted on
/dev/mapper/centos-root 120527360 54045264  66482096  45% /
devtmpfs                  1919508        0   1919508   0% /dev
tmpfs                     1931784        0   1931784   0% /dev/shm
tmpfs                     1931784    11968   1919816   1% /run
tmpfs                     1931784        0   1931784   0% /sys/fs/cgroup
/dev/sda1                 1038336   145300    893036  14% /boot
tmpfs                      386360        0    386360   0% /run/user/0
[[email protected] ~]# 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% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 378M 0 378M 0% /run/user/0

1.8、cut

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

(1)以/etc/passwd为列子前5行为列子
[[email protected] ~]# cat /etc/passwd | head -5
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

(2)取出第1列,用户名
[[email protected] ~]# cut -d : -f 1 /etc/passwd | head -5
root
bin
daemon
adm
lp

(3)取出第1和第3列
[[email protected] ~]# cut -d : -f 1,3 /etc/passwd | head -5
root:0
bin:1
daemon:2
adm:3
lp:4

(4)取出第1列至第3列
[[email protected] ~]# cut -d : -f 1-3 /etc/passwd | head -5
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4

(5)取出第1列至第3列,以|号为分割符输出
[[email protected] ~]# cut --output-delimiter="|" -d : -f 1-3 /etc/passwd | head -5
root|x|0
bin|x|1
daemon|x|2
adm|x|3
lp|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
[[email protected] ~]# cat F1
[host]
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4

文件2
[[email protected] ~]# cat F2

ansible_ssh_user=root
ansible_ssh_user=root
ansible_ssh_user=root
ansible_ssh_user=root

文件3
[[email protected] ~]# cat F3

ansible_ssh_pass=123
ansible_ssh_pass=456
ansible_ssh_pass=789
ansible_ssh_pass=910

合成文件,循序要F1,F2,F3
[[email protected] ~]# paste   F1 F2 F3
[host]
10.1.1.1        ansible_ssh_user=root   ansible_ssh_pass=123
10.1.1.2        ansible_ssh_user=root   ansible_ssh_pass=456
10.1.1.3        ansible_ssh_user=root   ansible_ssh_pass=789
10.1.1.4        ansible_ssh_user=root   ansible_ssh_pass=910

(2)加上-d选项的效果
[[email protected] ~]# paste -d :  F1 F2 F3
[host]::
10.1.1.1:ansible_ssh_user=root:ansible_ssh_pass=123
10.1.1.2:ansible_ssh_user=root:ansible_ssh_pass=456
10.1.1.3:ansible_ssh_user=root:ansible_ssh_pass=789
10.1.1.4:ansible_ssh_user=root:ansible_ssh_pass=910

(3)-s :将每个文件的所有行合并成1行,第1个文件所有内容合并成第一行,第2个文件的所有内容合并成第二行
[[email protected] ~]# 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)以这个为列子
[[email protected] ~]# cat F1
[host]
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4

(2)默认不加任何选项表示为,5行,5个单词,43个字节数
[[email protected] ~]# wc F1
 5  5 43 F1

(3)-l :统计多少行
[[email protected] ~]# cat F1  | wc -l
5

(4)-w :统计多少个单词
[[email protected] ~]# cat F1  | wc -w
5

(5)-c :统计多少个字节
[[email protected] ~]# cat F1  | wc -c
43

(6)-m :统计多少个字符
[[email protected] ~]# cat F1  | wc -m
43

-L :显示文件中最长行的长度
[[email protected] ~]# cat F1  | wc -L
8

2.1、sort

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

(1)以/etc/passwd为列子前5行为列子
[[email protected] ~]# cat /etc/passwd | head -5
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

(2)默认情况不加任何选项以每行第一个字符排序,adm,bin,daemon,lp,root
[[email protected] ~]# cat /etc/passwd | head -5 | sort
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

(3)指定以第3列UID排序,并且以数字排序,升序
[[email protected] ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -n
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

(4)-r 倒排
[[email protected] ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -n -r
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

(5)去掉重复的行
[[email protected] ~]# cat F1
11
11
2
3
4
5
22
22

[[email protected] ~]# cat F1 | sort -u
11
2
22
3
4
5

2.2、uniq

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

(1)以这个为例子
[[email protected] ~]# cat F1
11
11
2
3
4
5
22
22

(2)-c :对连续重复以及不连续重复的行统计
[[email protected] ~]# cat F1 | uniq -c
  2 11
  1 2
  1 3
  1 4
  1 5
  2 22

(3) -u :只显示不连续重复的行
[[email protected] ~]# cat F1 | uniq -u
2
3
4
5

(4)-d :只显示相邻并且连续重复的行
[[email protected] ~]# cat F1 | uniq -d
11
22

2.3、其他

(1)生成随机数取前30个字节
base64
openssl rand -base64 30 | head -c 30

16进制
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日志文件为例子
[ro[email protected] ~]# cat access.log  | head -1
192.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例,然后对他进行排序,排序完就去重复,然后统计
[[email protected] ~]# cat access.log  | cut -d " " -f 1 | sort -n | sort -u | wc -l
4
[[email protected] ~]# cat access.log  | cut -d " " -f 1 | sort -n | uniq | wc -l
4

1.2、PV

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

(1)以这个nginx日志文件为例子
[[email protected] ~]# cat access.log  | head -1
192.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
[[email protected] ~]# 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

时间: 2024-07-31 01:04:19

实用小命令的相关文章

linux实用小命令--查看文本内容

一.cat命令 $ cat [参数]filename 这还有一些可以和cat命令一起用的参数,可能对你有所帮助. 1.-n 参数会所有的行加上行号: $ cat -n test1 2.这个功能在检查脚本时很有用.如果只在有文本的行加上行,可以用-b参数. $ cat -b test1  3.最后,如果不让制表符出现,可以用-T参数. $ cat -T test1 -T参数会用^I代替文中的所有制表符. 对于大文件来说,cat看起来就不太方便了.不如看看其他命令吧 二.more命令 使用more命

实用小命令汇总(个人使用)

只显示目录的命令 1.ls -F | grep '/$' 2.ls -l | grep '^d' 3.ls -ld */ 注:*表示所有的文件,加上/就是子目录了 4.ls -ap | grep '/' 注:ls -p可以给目录加上一个'/',过滤一下就能只显示目录了. 5.tree -d -L 1 # Centos 默认没安装treen 命令, 可使用 yum install tree -y 进行安装,前提要能上网 注: tree:显示目录树 -d:只显示目录 -L:选择显示的目录深度 1:只

Git 实用小命令收集

修改 commit我们经常会在提交的时候拼写错误或者填入一些错误的信息,我们可以使用: git commit --amend 如果你想修改已经提交的过的 commit 信息的话,你需要修改后: git commit --amend // ... edit you messagegit push --force example-branch 合并 commit有的时候我们会经常性的提交,但是等到项目开发差不多得时候在发现 commit 信息很杂乱.你可以使用下面信息将所有的 message 合并在

windows实用小命令排行榜!

win(有人称徽标键或者windows),只是一个称呼,不必纠结.这是自己平时喜欢用的快捷键,分享一下. NO1.win+l  --锁屏,非常方便. NO2.ctl+alt+del   --任务管理器 NO3.win+e  --资源管理器 NO4.win+r  --cmd NO5.win+d  --显示桌面(或者win+m) NO6.win+ ++ --放大镜 NO7.alt+tab   --切换 NO8.alt+f4   --关闭窗口 NO9.win+tab   --3d应用 NO10. sh

实用小技巧1

把windows电脑变成路由器使用 适用对象: windows7.windows8的笔记本电脑或者有无线网卡的台式电脑 网络要求: CMCC-EDU和家里拨号上网的都可以,但是电信的校园有线不行 步骤如下: 1.在开始菜单里搜索cmd,找到后以管理员身份运行 2.在cmd命令行上输入以下命令: netsh wlan set hostednetwork mode=allow ssid=你所共享的无线的名字(最好是英文或者是拼音) key=密码 回车 这一步主要是设置你的“路由器” 3.下一步是开启

ANDROID开发实用小工具

分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 详情请参考:http://baike.baidu.com/view/2367937.htm 二.内测宝 - 测试分发管理平台 国内功能最完

Maven在Eclipse中的实用小技巧

前言 我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天主要跟大家分享一下我们在日常开发中的Maven实用小知识,让大家不再云里雾里. 安装配置Maven 1.安装Maven,下载一个maven包解压,然后配置maven环境变量(配置完成后在dos窗口用mvn命令测试下). 2.在Eclipse中安装Maven插件,Maven插件在线安装地址为:http://m

必看!macOS进阶不得不知的实用小技巧

不知道大家对使用苹果电脑的体验如何?您充分利用您的mac了吗?其实macOS上存在着许多快捷方式和技巧可以帮助简化我们的工作流程,提高效率,但是在日常生活中经常被人们忽略或者遗忘.以下是macdown小编整理的一些macOS实用小技巧,希望能够帮助大家更好地使用苹果电脑. 桌面和应用程序管理 激活聚焦搜索 如果想在第一时间唤出聚焦搜索的话,你可以使用[Command + 空格].聚焦搜索可以找到任何位于电脑中广泛项目,包含文件.图片.音乐.应用程式.系统喜好设定控制台,也可以是文件或是PDF中指

Linux小命令(1)yum

Linux命令(1)yum 使用最简易安装CentOS后.开启了网卡基本就可以使用yum在Linux中下载安装软件了.Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE.CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装. 命令格式如下: #yum [options] [command] [package ...] 常用命令: #yum grouplikst 查询可能批量安