本文共 9731 字,大约阅读时间需要 32 分钟。
whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令。whereis 命令的基本信息如下。
which 也是搜索系统命令的命令。和 whereis 命令的区别在于:
which 命令的基本信息如下。
3.1 基本用法
locate 命令才是可以按照文件名搜索普通文件的命令。locate 命令的基本信息如下。
3.2 配置文件
[root@localhost ~]# vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = “yes” #开启搜索限制,也就是让这个配置文件生效 PRUNEFS = “……” #在 locate 执行搜索时,禁止搜索这些文件系统类型 PRUNENAMES = “……” #在 locate 执行搜索时,禁止搜索带有这些扩展名的文件 PRUNEPATHS = “……” #在 locate 执行搜索时,禁止搜索这些系统目录
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 数据修改时间来举例,重点说说“[±]”时间的含义。
我们画一个时间轴,来解释一下:
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 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。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]代表匹配一个不是数字的字符 |
^ | 匹配行首 |
$ | 匹配行尾 |
命令格式: 命令 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 命令统计行数
统计正在连接的网络连接数量
命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的。
命令格式:
[root@localhost ~]# alias #查询命令别名 [root@localhost ~]# alias 别名=‘原命令’ #设定命令别名 例如: [root@localhost ~]# alias ser=‘service network restart’ #用 ser 别名,替代 service network restart 命令
用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc
快捷键 | 作用 |
---|---|
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”等。
“.zip”是 Windows 中最常用的压缩格式,Linux 也可以正确识别“.zip”格式,这可以方便地和Windows 系统通用压缩文件。
1.1.“.zip”格式的压缩命令压缩命令就是 zip,其基本信息如下。
命令格式如下:
[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录
选项: -r: 压缩目录 例如: [root@localhost ~]# zip ana.zip anaconda-ks.cfg
1.2.“.zip”格式的解压缩命令
“.zip”格式的解压缩命令是 unzip,其基本信息如下。
命令格式如下:
[root@localhost ~]# unzip [选项] 压缩包名
选项: -d: 指定解压缩位置 例如: [root@localhost ~]# unzip -d /tmp/ ana.zip #把压缩包解压到指定位置
2.1.“.gz”格式的压缩命令
“.gz”格式是 Linux 中最常用的压缩格式,使用 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 命令的基本信息。
例如:
[root@localhost ~]# gunzip install.log.gz [root@localhost ~]# gzip -d anaconda-ks.cfg.gz
两个命令都可以解压缩“.gz”格式
3.1.“.bz2”格式的压缩命令
“.bz2”格式是 Linux 的另一种压缩格式,从理论上来讲,“.bz2”格式的算法更先进、压缩比更好;而“.gz”格式相对来讲压缩的时间更快。
“.bz2”格式的压缩命令是 bzip2,我们来看看这个命令的基本信息。
来看看 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 命令的基本信息。
[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2
[root@localhost ~]# bzip2 -d install.log.syslog.bz2 #两个命令都可以解压缩
4.1.“.tar”格式的打包命令
“.tar”格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 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
#解打包到当前目录下
使用 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/