查询命令
查询文件
locate
- 格式:locate 文件(夹)
- 优点:快(相当于目录寻找)
- 缺点:不全,会列出所有包含内容的文件,新建的搜不到(需刷新updatedb)
which
- 只能用于搜索命令位置
- $PATH(命令文件)
- echo $PATH(列出所有命令文件所在的文件夹)
- which 命令=whereis(更详细)
find
- 缺点:慢(相比较而言,需搜索全磁盘)
- 优点:实时查找,可以附加众多条件
- 格式:find 范围 [选项] 条件 处理动作
- 范围:指定具体目标路径;不指定为默认为当前目录
- 条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
- 处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
[选项]
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 find /etc -maxdepth 2 -mindepth 2 |
根据时间
#以“天”为单位
-atime [+|-]#
# #表示[#,#+1) 如#是3 3 到 4天
+# #表示[#+1,∞] 如#是3 代表 4天以上
-# #表示[0,#) 如#是3 3天以内
-mtime
-ctime
-atime
#以“分钟”为单位
-amin
-mmin
-cmin
处理动作
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
例:
1.找到/root/best/下的软链接并删除
[root@localhost ~]# ll /root/best
总用量 8
lrwxrwxrwx 1 root root 17 3月 11 18:26 a -> /proc/self/mounts
lrwxrwxrwx 1 root root 17 3月 28 19:08 i -> /proc/self/mounts
-rw-r--r--. 1 root root 357 3月 11 18:51 ifcfg-ens33
lrwxrwxrwx 1 root root 17 3月 11 18:26 p -> /proc/self/mounts
-rw-r--r--. 1 root root 52 3月 11 12:17 yum
[root@localhost ~]# find /root/best/ -type l -delete
[root@localhost ~]# ll /root/best
总用量 8
-rw-r--r--. 1 root root 357 3月 11 18:51 ifcfg-ens33
-rw-r--r--. 1 root root 52 3月 11 12:17 yum
2.找到/root/best/下的普通文件并移动到/mnt/下
[root@localhost ~]# ll /root/best
总用量 8
-rw-r--r--. 1 root root 357 3月 11 18:51 ifcfg-ens33
-rw-r--r--. 1 root root 52 3月 11 12:17 yum
[root@localhost ~]# find /root/best/ -type f -exec mv {} /mnt \;
[root@localhost ~]# ll /root/best
总用量 0
[root@localhost ~]# ll /mnt
总用量 8
-rw-r--r--. 1 root root 357 3月 11 18:51 ifcfg-ens33
-rw-r--r--. 1 root root 52 3月 11 12:17 yum
查询文件内容
head
格式:head [选项] 文件
查看文件前10(默认10)行
[root@localhost saber]# head ip
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
-n k(数字):前k行
[root@localhost saber]# head -n3 ip ----默认为前k行
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
[root@localhost saber]# head -n +3 ip ----k为正数时为前k行
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
[root@localhost saber]# head -n -3 ip ----k为负数时为除了后k行
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cde66a36-f5f2-4e2b-97ab-77212f4ba18b
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.87.10
-c k(数字):文件前k字符
[root@localhost saber]# head -c 2 ip ----一个汉字3字符
TY
tail
格式:tail [选项] 文件
查看文件后10(默认10)行
[root@localhost saber]# tail ip
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cde66a36-f5f2-4e2b-97ab-77212f4ba18b
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.87.10
NETMASK=255.255.255.0
GATEWAY=172.16.87.2
DNS1=8.8.8.8
-n k(数字):后k行
[root@localhost saber]# tail -n 3 ip ----默认后k行
NETMASK=255.255.255.0
GATEWAY=172.16.87.2
DNS1=8.8.8.8
[root@localhost saber]# tail -n +3 ip ----k为正数时从第k行开始显示
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cde66a36-f5f2-4e2b-97ab-77212f4ba18b
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.87.10
NETMASK=255.255.255.0
GATEWAY=172.16.87.2
DNS1=8.8.8.8
[root@localhost saber]# tail -n -3 ip ----k为负数时显示后k行
NETMASK=255.255.255.0
GATEWAY=172.16.87.2
DNS1=8.8.8.8
-f :实时追踪后十行
[root@localhost saber]# tail -f /var/log/yum.log
Mar 11 11:04:47 Installed: libsepol-devel-2.5-6.el7.x86_64
Mar 11 11:04:47 Installed: pcre-devel-8.32-17.el7.x86_64
Mar 11 11:04:48 Installed: libselinux-devel-2.5-11.el7.x86_64
Mar 11 11:04:48 Installed: libcom_err-devel-1.42.9-10.el7.x86_64
Mar 11 11:04:48 Installed: libverto-devel-0.2.5-4.el7.x86_64
Mar 11 11:04:48 Installed: keyutils-libs-devel-1.5.8-3.el7.x86_64
Mar 11 11:04:48 Installed: krb5-devel-1.15.1-8.el7.x86_64
Mar 11 11:04:48 Installed: zlib-devel-1.2.7-17.el7.x86_64
Mar 11 11:04:50 Installed: 1:openssl-devel-1.0.2k-8.el7.x86_64
Mar 27 11:30:19 Installed: tree-1.6.0-10.el7.x86_64
Mar 11 11:04:47 Installed: pcre-devel-8.32-17.el7.x86_64
Mar 11 11:04:48 Installed: libselinux-devel-2.5-11.el7.x86_64
Mar 11 11:04:48 Installed: libcom_err-devel-1.42.9-10.el7.x86_64
Mar 11 11:04:48 Installed: libverto-devel-0.2.5-4.el7.x86_64
Mar 11 11:04:48 Installed: keyutils-libs-devel-1.5.8-3.el7.x86_64
Mar 11 11:04:48 Installed: krb5-devel-1.15.1-8.el7.x86_64
Mar 11 11:04:48 Installed: zlib-devel-1.2.7-17.el7.x86_64
Mar 11 11:04:50 Installed: 1:openssl-devel-1.0.2k-8.el7.x86_64
Mar 27 11:30:19 Installed: tree-1.6.0-10.el7.x86_64
Mar 29 15:03:03 Installed: tree-1.6.0-10.el7.x86_64
wc
wc [选项]... 目标文件..
统计列数,wc本身就是参数 word
- -l:统计行数
- -w:统计单词个数
- -c:统计字节数
[root@localhost saber]# cat -An yum
1 [saber]$
2 $
3 $
4 name=saber$
5 $
6 $
7 baseurl=file:///GZ/CD$
8 $
9 $
10 $
11 gpgcheck=0$
[root@localhost saber]# wc -l yum
11 yum
[root@localhost saber]# wc -w yum
4 yum
[root@localhost saber]# wc -c yum
59 yum
grep
grep [选项]… 查找条件 目标文件
-
-i:查找时忽略大小写
[root@localhost best]# grep ob passwd ----在passwd中查找包含ob的行
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@localhost best]# grep -i ob passwd ----忽略大小写在passwd中查找包含ob的行
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
OB:x:7777:0::/home/OB:/bin/bash
-
-w:只选取单独的一个词
[root@localhost best]# grep -i ob passwd ----忽略大小写在passwd中查找包含ob的行
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
OB:x:7777:0::/home/OB:/bin/bash
[root@localhost best]# grep -iw ob passwd ----忽略大小写在passwd中查找包含ob单词的行
OB:x:7777:0::/home/OB:/bin/bash
-
-v:反向查找,输出与查找条件不相符的行
[root@localhost best]# grep -v nologin passwd ----在passwd中查找可登录用户(nologin代表不可登录)
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
saber:x:1000:1000:saber:/home/saber:/bin/bash
OB:x:7777:0::/home/OB:/bin/bash
-
-o :只显示匹配项
[root@localhost best]# grep root passwd ----在passwd中查找包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost best]# grep -o root passwd
root
root
root
root
-
-f: 对比两个文件的相同行
[root@localhost best]# cat 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
[root@localhost best]# cat tail
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
saber:x:1000:1000:saber:/home/saber:/bin/bash
OB:x:7777:0::/home/OB:/bin/bash
[root@localhost best]# grep -f head tail ----以head中的文本为参照在tail中找到相同的部份
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
-
-E:使用正则表达式
[root@localhost best]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.87.10 netmask 255.255.255.0 broadcast 172.16.87.255
inet6 fe80::d93d:12d9:c437:3ee1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:fc:02 txqueuelen 1000 (Ethernet)
RX packets 16548 bytes 1265399 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9054 bytes 5818584 (5.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost best]# ifconfig ens33 | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' ----查找ip配置
inet 172.16.87.10 netmask 255.255.255.0 broadcast 172.16.87.255
[root@localhost best]# ifconfig ens33 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
172.16.87.10
255.255.255.0
172.16.87.255
tr
基本功能转换
格式
tr [选项]... SET1 [SET2]
-d 删除
-s 压缩
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
#将文本中的123对应换成abc
[root@rule ~]#tr 123 abc
1g2j3k
agbjck
#长度不一
[root@rule ~]#tr 12345678 abc ----set1长于set2时最后一个字符对应多余部分
123456789
abcccccc9
[root@rule ~]# tr 12 abc ----set2长于set1时多余部分无影响
123
ab3
12345
ab345
#删除
[root@rule ~]#tr -d abc
2a34bc
234
#压缩
[root@rule ~]#tr -s " "
1 2 3 4
1 2 3 4
[root@rule ~]#tr -s "a"
aaaa
a
cut
cut 命令可以提取文本文件数据的指定列
格式:cut [选项]... [文件]...
常用选项
-d DELIMITER: 指明分隔符,默认tab
-f 想要获取的字段
#: 第#个字段,例如 3
#,#[,#]:离散的多个字段,例如 1,3,6
#-#:连续的多个字段, 例如 1-6
混合使用:1-3,7
-c 取字符
例子:提取/etc/passwd下以‘:’为分隔符的第一列和第七列
[root@rule data]# cut -d':' -f1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
operator:/sbin/nologin
games:/sbin/nologin
ftp:/sbin/nologin
nobody:/sbin/nologin
systemd-network:/sbin/nologin
dbus:/sbin/nologin
polkitd:/sbin/nologin
abrt:/sbin/nologin
libstoragemgmt:/sbin/nologin
rpc:/sbin/nologin
colord:/sbin/nologin
saslauth:/sbin/nologin
setroubleshoot:/sbin/nologin
rtkit:/sbin/nologin
pulse:/sbin/nologin
qemu:/sbin/nologin
ntp:/sbin/nologin
radvd:/sbin/nologin
chrony:/sbin/nologin
tss:/sbin/nologin
usbmuxd:/sbin/nologin
geoclue:/sbin/nologin
sssd:/sbin/nologin
gdm:/sbin/nologin
rpcuser:/sbin/nologin
nfsnobody:/sbin/nologin
gnome-initial-setup:/sbin/nologin
avahi:/sbin/nologin
postfix:/sbin/nologin
sshd:/sbin/nologin
tcpdump:/sbin/nologin
rider:/bin/bash
named:/sbin/nologin
dhcpd:/sbin/nologin
apache:/sbin/nologin
rule:/bin/bash
sort
格式:sort [options] file(s)
把整理过的文本显示在屏幕上,不改变原始文件
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t 指定分隔符
-k 指定列
##以UID号排列
#UID位于以:为分隔符的第三列
#正序
[root@rule ~]# sort -t: -k3 -n /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@rule ~]# sort -t: -k3 -nr /etc/passwd | head
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
rule:x:7777:7777::/home/rule:/bin/bash
rider:x:1000:1000:rider:/home/rider:/bin/bash
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
setroubleshoot:x:995:993::/var/lib/setroubleshoot:/sbin/nologin
chrony:x:994:990::/var/lib/chrony:/sbin/nologin
geoclue:x:993:988:User for geoclue:/var/lib/geoclue:/sbin/nologin
uniq
uniq [OPTION]... [FILE]...
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
uniq常和sort 命令一起配合使用:
[root@localhost ~]#cat f3.txt
1
2
3
3
4
5
6
6
3
6
[root@localhost ~]#uniq f3.txt
#只会将连续的行去重
1
2
3
4
5
6
3
6
[root@localhost ~]#uniq -c f3.txt
#显示出现次数
1 1
1 2
2 3
1 4
1 5
2 6
1 3
1 6