博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux运维 常用命令 (搜索命令和压缩和解压缩命令)
阅读量:4105 次
发布时间:2019-05-25

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

七、搜索命令

1.whereis 命令

whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令。whereis 命令的基本信息如下。

  • 命令名称:whereis。
  • 英文原意:locate the binary, source, and manual page files for a command。
  • 所在路径:/usr/bin/whereis。
  • 执行权限:所有用户。
  • 功能描述:查找二进制命令、源文件和帮助文档的命令。

2.which 命令

which 也是搜索系统命令的命令。和 whereis 命令的区别在于:

  • whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;
  • 而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。

which 命令的基本信息如下。

  • 命令名称:which。
  • 英文原意:shows the full path of (shell) commands。
  • 所在路径:/usr/bin/which。
  • 执行权限:所有用户。
  • 功能描述:列出命令的所在路径。

3.locate 命令

3.1 基本用法

locate 命令才是可以按照文件名搜索普通文件的命令。

  • 优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,可以使用 updatedb 命令强制更新数据库。
  • 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。

locate 命令的基本信息如下。

  • 命令名称:locate。
  • 英文原意:find files by name。
  • 所在路径:/usr/bin/locate。
  • 执行权限:所有用户。
  • 功能描述:按照文件名搜索文件。

3.2 配置文件

[root@localhost ~]# vi /etc/updatedb.conf

PRUNE_BIND_MOUNTS = “yes” #开启搜索限制,也就是让这个配置文件生效
PRUNEFS = “……” #在 locate 执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = “……” #在 locate 执行搜索时,禁止搜索带有这些扩展名的文件
PRUNEPATHS = “……” #在 locate 执行搜索时,禁止搜索这些系统目录

4.find 命令

find 命令的基本信息如下

  • 命令名称:find
  • 英文原意:search for files in a directory hierarchy。、
  • 所在路径:/bin/find。
  • 执行权限:所有用户。
  • 功能描述:在目录中搜索文件。

4.1 按照文件名搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -name: 按照文件名搜索
  • -iname: 按照文件名搜索,不区分文件名大小写
  • -inum: 按照 inode 号搜索

4.2按照文件大小搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -size [+|-]大小: 按照指定大小搜索文件

这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。

find 命令的单位:

[root@localhost ~]# man find

-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:

  • ‘b’ for 512-byte blocks (this is the default if no suffix is used) #这是默认单位,如果单位为 b 或不写单位,则按照 512 Byte 搜索
  • ‘c’ for bytes #搜索单位是 c,按照字节搜索
  • ‘w’ for two-byte words #搜索单位是 w,按照双字节(中文)搜索
  • ‘k’ for Kilobytes (units of 1024 bytes) #按照 KB 单位搜索,必须是小写的 k
  • ‘M’ for Megabytes (units of 1048576 bytes) #按照 MB 单位搜索,必须是大写的 M
  • ‘G’ for Gigabytes (units of 1073741824 bytes) #按照 GB 单位搜索,必须是大写的 G

4.3 按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -atime [+|-]时间: 按照文件访问时间搜索
  • -mtime [+|-]时间: 按照文件数据修改时间搜索
  • -ctime [+|-]时间: 按照文件状态修改时间搜索

这里用 mtime 数据修改时间来举例,重点说说“[±]”时间的含义。

  • -5:代表 5 天内修改的文件。
  • 5:代表前 5~6 天那一天修改的文件。
  • +5:代表 6 天前修改的文件。

我们画一个时间轴,来解释一下:

在这里插入图片描述

4.4 按照权限搜索

命令格式。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
  • -perm -权限模式:查找文件权限全部包含“权限模式”的文件
  • -perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件

4.5 按照所有者和所属组搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
  • -gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
  • -user 用户名: 按照用户名查找所有者是指定用户的文件
  • -group 组名: 按照组名查找所属组是指定用户组的文件
  • -nouser: 查找没有所有者的文件

按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。

只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者。

4.6 按照文件类型搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -type d: 查找目录
  • -type f: 查找普通文件
  • -type l: 查找软链接文件

4.7 逻辑运算符

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

  • -a: and 逻辑与
  • -o: or 逻辑或
  • -not: not 逻辑非

1)-a:and 逻辑与

find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立,find 搜索的结果才成立。举个例子:

[root@localhost ~]# find . -size +2k -a -type f

#在当前目录下搜索大于 2KB,并且文件类型是普通文件的文件

2)-o:or 逻辑或

-o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例如:

[root@localhost ~]# find . -name cangls -o -name bols

./cangls
./bols
#在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件

3)-not:not 逻辑非

-not 是逻辑非,也就是取反的意思。举个例子:

[root@localhost ~]# find . -not -name cangls

#在当前目录下搜索文件名不是 cangls 的文件

4.8 其他选项

1)-exec 选项

这里我们主要讲解两个选项“-exec”和“-ok”,这两个选项的基本作用非常相似。我们先来看看“-exec”选项的格式。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令 2 {} ;

其次,这个选项的作用其实是把 find 命令的结果交给由“-exec”调用的命令 2 来处理。“{}”就

代表 find 命令的查找结果。

2)-ok 选项

“-ok”选项和“-exec”选项的作用基本一致,区别在于:“-exec”的命令 2 会直接处理,而不询
问;“-ok”的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。

5.grep 命令:补充命令

grep 的作用是在文件中提取和匹配符合条件的字符串行。命令格式如下:

[root@localhost ~]# grep [选项] “搜索内容” 文件名

选项:

  • -i: 忽略大小写

  • -n: 输出行号

  • -v: 反向查找

  • –color=auto: 搜索出的关键字用颜色显示

find 也是搜索命令,那么 find 命令和 grep 命令有什么区别?

1)find 命令

find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符是完全匹配(find 命令可以通过-regex 选项,把匹配规则转为正则表达式规则,但是不建议如此)。

2)grep 命令

grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。

3)通配符与正则表达式的区别

通配符:用于匹配文件名,完全匹配

通配符 作用
匹配一个任意字符
* 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符

正则表达式:用于匹配字符串,包含匹配

正则符 作用
匹配前一个字符重复 0 次,或 1 次(?是扩展正则,需要使用 egrep 命令)
* 匹配前一个字符重复 0 次,或任意多次
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
^ 匹配行首
$ 匹配行尾

6.管道符:补充命令

命令格式: 命令 1 | 命令 2

命令 1 的正确输出作为命令 2 的操作对象

1)例子 1:

举个例子,我们经常需要使用“ll”命令查看文件的长格式,不过在有些目录中文件众多,比如/etc/目录,使用“ll”命令显示的内容就会非常多,只能看到最后的内容,而不能看到前面输出的内容。这时我们马上想到 more 命令可以分屏显示文件内容,可是怎么让 more 命令分屏显示命令的输出呢?

我想到了一种笨办法:

[root@localhost ~]# ll -a /etc/ > /root/testfile

#用输出重定向,把 ll 命令的输出保存到/root/testfile 文件中
[root@localhost ~]# more /root/testfile
#既然 testfile 是文件,当然可以用 more 命令分屏显示了
总用量 1784
drwxr-xr-x. 105 root root 12288 10 月 21 12:49 .
dr-xr-xr-x. 26 root root 4096 6 月 5 19:06 …
…省略部分输出…
-rwxr-xr-x. 1 root root 687 6 月 22 2012 auto.smb
–More–(7%)

可是这样操作实在不方便,这时就可以利用管道符了。命令如下:

[root@localhost ~]# ll -a /etc/ | more

2)例子 2:

我想在命令 ll /etc/的结果中搜索 yum 的文件名,应该使用 find 命令?还是 grep 命令?

[root@localhost ~]# ll -a /etc/ | grep yum

3)例子 3:

netstat 命令(CentOS 7 中,需要安装 net-snmp.x86_64,net-tools.x86_64 两个包才有此命令。7.5系统中已经自动安装)格式如下:

[root@localhost ~]# netstat [选项] 选项:

  • -a: 列出所有网络状态,包括 Socket 程序
  • -c 秒数: 指定每隔几秒刷新一次网络状态
  • -n: 使用 IP 地址和端口号显示,不使用域名与服务名
  • -p: 显示 PID 和程序名
  • -t: 显示使用 TCP 协议端口的连接状况
  • -u: 显示使用 UDP 协议端口的连接状况
  • -l: 仅显示监听状态的连接
  • -r: 显示路由表

[root@localhost ~]# netstat -an | grep “ESTABLISHED” | wc -l

#如果想知道具体的网络连接数量,就可以再使用 wc 命令统计行数

统计正在连接的网络连接数量

7.命令的别名:补充命令

命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的。

命令格式:

[root@localhost ~]# alias
#查询命令别名
[root@localhost ~]# alias 别名=‘原命令’ #设定命令别名
例如:
[root@localhost ~]# alias ser=‘service network restart’
#用 ser 别名,替代 service network restart 命令

用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc

8.常用快捷键:补充命令

快捷键 作用
Tab 键 命令或文件补全
ctrl+A 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。
ctrl+E 把光标移动到命令行结尾。
ctrl+C 强制终止当前的命令。
ctrl+L 清屏,相当于 clear 命令。
ctrl+U 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便
ctrl+Y 粘贴 ctrl+U 剪切的内容。

八、压缩和解压缩命令

Linux 中可以识别的常见压缩格式有十几种,比如“.zip”“.gz”“.bz2”“.tar”“.tar.gz”“.tar.bz2”等。

1.“.zip”格式

“.zip”是 Windows 中最常用的压缩格式,Linux 也可以正确识别“.zip”格式,这可以方便地和Windows 系统通用压缩文件。

1.1.“.zip”格式的压缩命令

压缩命令就是 zip,其基本信息如下。

  • 命令名称:zip。
  • 英文原意:package and compress (archive) files。
  • 所在路径:/usr/bin/zip。
  • 执行权限:所有用户。
  • 功能描述:压缩文件或目录。

命令格式如下:

[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录

选项:
-r: 压缩目录
例如:
[root@localhost ~]# zip ana.zip anaconda-ks.cfg

1.2.“.zip”格式的解压缩命令

“.zip”格式的解压缩命令是 unzip,其基本信息如下。

  • 命令名称:unzip。
  • 英文原意:list, test and extract compressed files in a ZIP archive。
  • 所在路径:/usr/bin/unzip。
  • 执行权限:所有用户。
  • 功能描述:列表、测试和提取压缩文件中的文件。

命令格式如下:

[root@localhost ~]# unzip [选项] 压缩包名

选项:
-d: 指定解压缩位置
例如:
[root@localhost ~]# unzip -d /tmp/ ana.zip
#把压缩包解压到指定位置

2.“.gz”格式 (不会打包)

2.1.“.gz”格式的压缩命令

“.gz”格式是 Linux 中最常用的压缩格式,使用 gzip 命令进行压缩,其基本信息如下。

  • 命令名称:gzip。
  • 英文原意:compress or expand files。
  • 所在路径:/bin/gzip。
  • 执行权限:所有用户。
  • 功能描述:压缩文件或目录。

这个命令的格式如下:

[root@localhost ~]# gzip [选项] 源文件 选项:

  • -c: 将压缩数据输出到标准输出中,可以用于保留源文件
  • -d: 解压缩
  • -r: 压缩目录

[root@localhost ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz

#使用-c 选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中
#这样可以在压缩文件的同时不删除源文件

2.2“.gz”格式的解压缩命令

如果要解压缩“.gz”格式,那么使用“gzip -d 压缩包”和“gunzip 压缩包”命令都可以。我们先看看 gunzip 命令的基本信息。

  • 命令名称:gunzip。
  • 英文原意:compress or expand files。
  • 所在路径:/bin/gunzip。
  • 执行权限:所有用户。
  • 功能描述:解压缩文件或目录。

例如:

[root@localhost ~]# gunzip install.log.gz
[root@localhost ~]# gzip -d anaconda-ks.cfg.gz

两个命令都可以解压缩“.gz”格式

3.“.bz2”格式 (不能压缩目录)

3.1.“.bz2”格式的压缩命令

“.bz2”格式是 Linux 的另一种压缩格式,从理论上来讲,“.bz2”格式的算法更先进、压缩比更好;而“.gz”格式相对来讲压缩的时间更快。

“.bz2”格式的压缩命令是 bzip2,我们来看看这个命令的基本信息。

  • 命令名称:bzip2。
  • 英文原意:a block-sorting file compressor。
  • 所在路径:/usr/bin/bzip2。
  • 执行权限:所有用户。
  • 功能描述:.bz2 格式的压缩命令。

来看看 bzip2 命令的格式。

[root@localhost ~]# bzip2 [选项] 源文件 选项:

  • -d: 解压缩
  • -k: 压缩时,保留源文件
  • -v: 显示压缩的详细信息

例如: [root@localhost ~]# bzip2 anaconda-ks.cfg

#压缩成.bz2 格式 [root@localhost ~]# bzip2 -k install.log.syslog
#保留源文件压缩

3.2.“.bz2”格式的解压缩命令

“.bz2”格式可以使用“bzip2 -d 压缩包”命令来进行解压缩,也可以使用“bunzip2 压缩包”命令来进行解压缩。先看看 bunzip2 命令的基本信息。

  • 命令名称:bunzip2。
  • 英文原意:a block-sorting file compressor。
  • 所在路径:/usr/bin/bunzip2。
  • 执行权限:所有用户。
  • 功能描述:.bz2 格式的解压缩命令。

[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2

[root@localhost ~]# bzip2 -d install.log.syslog.bz2
#两个命令都可以解压缩

4.“.tar”格式 (打包不会压缩)

4.1.“.tar”格式的打包命令

“.tar”格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。

  • 命令名称:tar。
  • 英文原意:tar。
  • 所在路径:/bin/tar。
  • 执行权限:所有用户。
  • 功能描述:打包与解打包命令。

命令的基本格式如下:

[root@localhost ~]# tar [选项] [-f 压缩包名] 源文件或目录 选项:

  • -c: 打包
  • -f: 指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名
  • -v: 显示打包文件过程

[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg

#打包,不会压缩

4.2.“.tar”格式的解打包命令

“.tar”格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:

[root@localhost ~]# tar [选项] 压缩包 选项:

  • -x: 解打包
  • -f: 指定压缩包的文件名
  • -v: 显示解打包文件过程
  • -t: 测试,就是不解打包,只是查看包中有哪些文件
  • -C(大) 目录:指定解打包位置

例如:

[root@localhost ~]# tar -xvf anaconda-ks.cfg.tar

#解打包到当前目录下

5.“.tar.gz”和“.tar.bz2”格式

使用 tar 命令直接打包压缩。命令格式如下:

[root@localhost ~]# tar [选项] 压缩包 源文件或目录 选项:

  • -z: 压缩和解压缩“.tar.gz”格式
  • -j: 压缩和解压缩“.tar.bz2”格式

例如:.tar.gz 格式

[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/

#把/tmp/目录直接打包压缩为“.tar.gz”格式
[root@localhost ~]# tar -zxvf tmp.tar.gz
#解压缩与解打包“.tar.gz”格式

例如:.tar.bz2 格式

[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/

#打包压缩为“.tar.bz2”格式,注意压缩包文件名
[root@localhost ~]# tar -jxvf tmp.tar.bz2
#解压缩与解打包“.tar.bz2”格式

再举几个例子:

[root@localhost ~]# mkdir test

[root@localhost ~]# touch test/abc
[root@localhost ~]# touch test/bcd
[root@localhost ~]# touch test/cde
#建立测试目录和测试文件
[root@localhost ~]# tar -zcvf test.tar.gz test/
#压缩
[root@localhost ~]# tar -ztvf test.tar.gz
#只查看,不解压
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp
#解压缩到指定位置
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp test/cde
#只解压压缩包中的特定文件,到指定位置

转载地址:http://rvcsi.baihongyu.com/

你可能感兴趣的文章