Linux有哪些常用的高级扩展命令?

哈喽,大家好呀!这里是码农后端。这次来介绍一些常用的Linux高级扩展命令。

77297fd67ca5b9ec8c5b405cacb87688.png

一、find命令

在Linux操作系统中,find命令主要用于文件的搜索。

1、语法

find 搜索路径 [选项 选项的值] ...

# 选项说明:
-name :根据文件的名称搜索文件,支持*通配符
-type :f代表普通文件、d代表文件夹

eg:搜索etc目录下的httpd.conf文件

find /etc -name "httpd.conf" -type f

2、*通配符

在Linux操作系统中,当想要查找的文件名称不是特别清晰(只记住了前面或后面的字符),此时就可以使用*通配符

eg1:获取/etc目录下,所有后缀名为.conf的文件信息

find /etc -name "*.conf" -type f

eg2:在/etc目录下,搜索所有以httpd开头的文件

find /etc -name "httpd*" -type f

3、根据文件修改时间搜索文件

3.1 Windows中的文件时间

右键Windows下的一个txt文件,点击属性查看,有创建时间、修改时间和访问时间。

88106cbf0fea65705530bce7c67d8b52.png

3.2 stat命令

在Linux中,可以使用stat命令获取文件的最后修改时间。

stat 文件名称

eg:获取readme.txt文件的最后修改时间

stat readme.txt

Modify: 2024-03-31 10:25:20.609010605 +0800

3.3 设置文件的修改时间

包括创建文件时设置修改时间修改文件的修改时间

1)语法:

touch -m -d "日期时间格式" 文件名称

2)作用:

1.若文件不存在,则自动创建该文件,并设置其最后的修改时间

2.若文件存在,则只修改文件的最后修改时间

eg1:创建一个a.txt文件,并设置最后修改时间为2024-06-14 00:00

# 文件不存在,则自动创建该文件,并设置其最后的修改时间
touch -m -d "2024-06-14 00:00" a.txt

eg2:创建一个b.txt文件,并设置最后修改时间为2024-06-13 00:00

# 先创建文件
touch b.txt 
# 文件存在,则只修改文件的最后修改时间
touch -m -d "2024-06-13 00:00" b.txt
3.4 根据文件的最后修改时间搜索文件

1)语法

find 搜索路径 -mtime +days/-days

说明

-mtime :根据文件的最后修改时间搜索文件
+ :加号,代表搜索几天之前的文件信息
- :减号,代表搜索几天以内的文件信息

2)案例

eg1:搜索3天以前的文件信息(不包含第3天的,且只搜索.txt格式)

find ./ -name "*.txt" -mtime +3

如今天是14号,那么3天以前的就是从13号开始往前推3天之前的,也就是10号及之前的。如下坐标轴所示:

393ba7d11b4511f5f7bc0d3971ab4df9.png

eg2:搜索3天以内的文件信息(只搜索.txt格式)

find ./ -name "*.txt" -mtime -3

如下坐标轴所示:

b4082141ac986fc714ce9df9b802d2c0.png

4、扩展:-exec选项

情景:删除Linux系统中/var/log目录下10天以前的日志信息(日志文件格式*.log结尾)

# 先查找该目录下10天以前的日志信息
find /var/log -name "*.log" -mtime +10

de7e56cb31617a4e6cb0622f07187f7f.png

方法1:使用管道命令|

find /var/log -name "*.log" -mtime +10 |rm -rf

由于rm命令和ls命令一样,都不支持管道,所以上述命令执行不成功。

解决办法:使用xargs命令,在不支持管道的情况下,使用xargs 可以将一个命令的输出作为参数发送给另一个命令。

find /var/log -name "*.log" -mtime +10 |xargs rm -rf

方法2:使用find命令 + -exec选项

1)语法:

find 搜索路径 -name "文件名称" -mtime +10 -exec rm -rf {} \;

注:最后的 {} \;是固定写法,记住即可。

2)命令:

find /var/log -name "*.log" -mtime +10 -exec rm -rf {} \;

5、dd扩展命令

主要功能:在Linux操作系统中,生成某个大小的测试文件

1)语法

dd if=/dev/zero of=文件名称 bs=1M count=1

# 选项说明:
if:代表输入文件(input file)
of:代表输出文件(output file)
bs:代表字节为单位的块大小。
count:代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。

2)案例

eg1:使用dd命令创建一个1M大小的a.txt文件

dd if=/dev/zero of=a.txt bs=1M count=1

826bc1610a02f4e9bd0d42b760e506ab.png

eg2:使用dd命令创建两个5M大小的b.txt文件

dd if=/dev/zero of=b.txt bs=5M count=2

6、根据文件大小搜索文件

1)语法

find 搜索路径 -size [文件大小,常用单位:k,M,G]

# 说明
-size 值  : 搜索等于size值大小的文件
-size -值 : [0, size值)
-size +值 : (size值,正无穷大)

2)案例

eg1:搜索/root目录下大小为5M的文件信息

find ./ -type f -size 5M

注:./表示当前目录,在root用户下,~等同于 /root;而在普通用户下,~等同于 /home/当前的普通用户名

eg2:搜索/root目录下大小为5M以内的所有txt文件信息(0<=size<5M)

find ./ -name "*.txt" -type f -size -5M

be8dd0b2d5c8c55670e3e1b0ec5bb466.png

eg3:搜索/目录中,文件大小大于100M的文件信息(size>100M)

find / -type f -size +100M

二、tree命令

1、tree命令的主要作用

Windows和Linux都有tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来,使文件结构更具层次感。

2、使用yum命令安装tree

yum install tree -y

3、以树状结构显示路径下的文件信息

eg1:以树状结构显示当前目录下的文件信息

tree

eg2:以树状结构显示/var/log目录下的文件信息

tree /var/log

fe162aa9c380905ab20fa164d777b3ee.png

三、scp命令

1、主要作用

实现Linux与Linux系统之间的文件传输。

既然是Linux与Linux系统之间的文件传输,那么就至少需要两个Linux系统,可以使用克隆操作(先关机后克隆)快速生成一个Linux系统。

简单回顾一下克隆操作,如下:

第一步:使用关机按钮或相关的关机命令对 Linux进行关机操作。

7b45ac9f6288b8a08234e86ad295028e.png

第二步:右键需要克隆的虚拟机 –> 管理 –> 克隆。

ee7ef5a543acfb1c1c7f4e29864e500d.png

根据向导进行克隆备份。下一步、下一步,选择克隆类型,一定要选择完整克隆

19f6c90a6fdce305038f34da9268045f.png

2、scp原理

scp传输要求:两台计算机所使用的操作系统都必须是Linux操作系统

7fd9af333ff813072ed0e5b7e829369f.png

若出现问题:ssh: connect to host 10.1.1.17 port 22: Connection refused,lost connection

主要原因:由于SCP命令底层基于SSH协议,所以两台服务器的sshd服务必须处于开启状态,否则无法完成上传与下载操作。

3、下载文件或目录

1)语法

scp [选项] 用户名@linux主机地址:资源路径  linux本地文件路径

# 选项说明:
-r :代表递归操作,主要针对文件夹

2)案例

前期准备:开启两台虚拟机,包括我们之前备份好的那一台,在root用户下使用 ifconfig命令查看各自的IP地址。如我的是 CentOS7.6:192.168.91.128;CentOS7.6_bak:192.168.91.129

先在192.168.91.129服务器上创建一个大小为10M的测试文件video.mp4

b944194335860d9a0511fb82df979c85.png

eg1:从192.168.91.129服务器下载/root路径下的video.mp4文件到本地(192.168.91.128)的/root目录下

scp root@192.168.91.129:/root/video.mp4 ./

af79675fa9ee7ceabd0720c3d47e8198.png

eg2:从192.168.91.129服务器下载/root路径下的shop文件夹到本地(192.168.91.128)的/root目录下

scp -r root@192.168.91.129:/root/shop ./

注:文件夹要加 -r,实现递归操作

4、上传文件或目录

1)语法

scp [选项] linux本地文件路径 用户名@linux主机地址:远程路径

# 选项说明:
-r :递归操作

2)案例

eg1:把192.168.91.128服务器上的/root/video.mp4上传到192.168.91.129服务器的/root目录下

在192.168.91.128服务器上执行以下命令:

scp /root/video.mp4 root@192.168.91.129:/root/

eg2:把192.168.91.128服务器上的/root/shop文件夹上传到192.168.91.129服务器的/root目录下

在192.168.91.128服务器上执行以下命令:

scp -r /root/shop root@192.168.91.129:/root/

注:文件夹要加 -r,实现递归操作

四、计划任务+tar命令

使用计划任务+tar命令实现文件备份。

1、计划任务

语法:

crontab [选项]

# 说明
-l : list缩写,查询当前用户的计划任务信息
-e : edit缩写,编辑计划任务

2、计划任务格式

计划任务的规则语法格式,以行为单位,一行则为一个计划

分 时 日 月 周 执行的命令(要求使用完整路径,which命令)

79f2e192fc52ea0571d6ee49d67671e7.png

注:周的范围比较特殊,正常情况下,是周一 ~ 周日(1-7),但是计划任务范围0-7,因为0和7都代表周日

3、扩展:date命令

1)语法

date +"时间格式"

# 时间格式说明
%F : 年-月-日
%T : 小时:分钟:秒
%Y : Year(年)
%m : month(月)
%d : day(日)
%H : Hour(小时)
%M : Minute(分钟)
%S : Second(秒)

2)案例

eg1:获取计算机的系统时间

date

eg2:获取年月日信息(要求格式如"20240614")

date +"%Y%m%d"

67a11729fe685f8afd4ba846ff4d7f56.png

4、案例

1)eg1:每天的凌晨2点0分把/etc目录备份一次到/tmp目录下,要求把/etc打包成etc.tar.gz格式

crontab -e

# 编辑命令如下
0 2 * * * /usr/bin/tar -zcf /tmp/etc.tar.gz /etc

以上写法虽然可以实现对/etc目录的备份,但是有一个缺点:每次备份时,生成的文件名称是一致的,导致后面备份的文件会把前面备份的文件覆盖掉!

2)eg2:备份文件时,要求按时间作为备份文件的名称,如下:

/tmp/etc-20200331.tar.gz

/tmp/etc-20200401.tar.gz

...

# 编辑计划任务
crontab -e

# 编辑命令如下
0 2 * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d").tar.gz /etc

时间作为备份文件的名称的重点:

/tmp/etc-$(date +"\%Y\%m\%d").tar.gz

a、编辑计划任务

d8e85e2fe5fe19d582e3d1b5a01854ae.png

按i进入插入模式,编辑完成后,按esc回到命令模式,最后按:wq保存并退出。

b、等待并查看效果

b44344ffab5464e823b14cf26efda46c.png

注:在编写计划任务时,出现了%,则前面必须添加一个反斜杠\进行转义,否则计划任务会失效!

好了,以上就是今天这篇文章的全部内容了。如果你想及时看到我的文章,只需做这几个动作:点星标、点在看(包括赞)、评论、分享,我就会经常出现在您的常读列表,后面更新都会提醒。感谢大家的关注和支持,祝大家生活美满,学业有成,事业蒸蒸日上!

往期精彩文章推荐(点击下方蓝字即可阅读!)

往期推荐

腾讯元宝,它来了!!

2分钟带你快速了解与网络相关的硬件有哪些?

如何为个人网站部署SSL安全证书,以实现网站的 HTTPS 加密协议访问?

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值