tar归档与压缩 重定向与管道操作 find精确查找 vim高级使用

  • 归档及压缩
  • 重定向与管道操作
  • find精确查找
  • vim高级使用

归档及压缩
作用 :
1. 减少占用的硬盘空间
2. 整合分散的文件

· 归档的含义

  • 将许多零散的文件整理为一个文件
  • 文件总的大小基本不变

· 压缩的含义

  • 按某种算法减小文件所占用空间的大小
  • 恢复时按对应的逆向算法解压

常见的压缩格式及命令工具(重点)

	.gz   --->  gzip  (最快的)
	.bz2  --->  bzip2
	.xz   --->  xz 	   (最慢的)

压缩解压tar
红色代表压缩包

tar工具的常用选项
-c : 创建归档
-x : 释放归档
-f : 指定归档文件名称(必须放在所有选项的最后)
-z , -j  , -J : 调用.gz , .bz2 , .xz格式的工具进行处理
-t : 显示归档中的文件清单
-C : 指定释放路径
-P : 允许使用绝对路径进行打包

tar命令制作压缩包(打包)

格式:tar 选项 /路径/压缩包的名字 /路径/源数据....(可以写多个)
-zcf    -jcf    -Jcf
tar -P -zcf abc.tar.gz /home/ /etc/passwd		创建.gz格式的压缩包
tar -P -jcf test.tar.bz2 /home /etc/passwd		创建.bz2格式的压缩包
tar -P -Jcf nsd.tar.xz /home/ /etc/passwd		创建xz格式的压缩包		

tar命令释放压缩包(解包)

格式:tar 选项 /路径/tar包 -C(大写) /路径/目标位置
-x:释放  -f:指定压缩包名称
mkdir  /nsd01  /nsd02  /nsd03 
tar -xf abc.tar.gz -C /nsd01  将压缩包abc.tar.gz释放到目录nsd01中
tar -xf test.tar.bz2 -C /nsd02	 将压缩包test.tar.gz释放到目录nsd02中
tar -xf nsd.tar.xz -C /nsd03  	将压缩包nsd.tar.xz释放到目录nsd03中

tar -tf abc.tar.gz		查看tar包中的内容
案例1:创建一个备份包
	使用tar工具完成以下备份任务:
	- 创建一个名为/root/backup.tar.bz2的归档文件
	- 其中包含/usr/local目录中的内容
	- tar归档必须使用bzip2进行压缩
	tar -P -jcf /root/backup.tar.bz2 /user/local/

重定向与管道操作

重定向 : 将前面命令的输出,写入到后面文本文件的内容

>    覆盖重定向
>>   追加重定向
重定向时,原文件一定要有输出内容才可以写入文本文件。如果写入的文本文件不存在,会自动创建文本文件。

cat /etc/redhat-release > /opt/nsd01.txt	
将redhat-release命令输出的内容写入到opt目录下nsd01.txt的文本文件中,写入模式为覆盖原文件的模式

cat /etc/redhat-release >> /opt/nsd01.txt
将redhat-release命令输出的内容以追加写的模式写入opt目录下nsd01.txt的文本文件中

hostname > /opt/nsd02.txt
hostname >> /opt/nsd02.txt

echo hello		屏幕会直接显示hello
echo 123 > /root/a.txt		将123以覆盖写的形式写入root目录下的a.txt文本文件中
echo 123 >> /root/a.txt		将123以追加写的形式写入root目录下的a.txt文本文件中

管道(|):将命令的输出,交给后面一条命令,作为后面命令作为后面命令的参数

  • 原文件一定要有输出内容交给后面一条命令作为参数
  • 至少两个参数以上的命令是不支持管道的
head -14 /etc/passwd | tail -1		取etc目录中passwd文件中第14行
cat -n /etc/passwd | head -14 | tail -1		有加上行号的形式取出etc目录中passwd文件中第14行
ifconfig | head -2		取出ifconfig命令中的前2行
ifconfig | less		以滚动的形式查看ifconfig文件
案例:
将文件/etc/default/useradd中的有效配置写入opt目录中的a.txt文件中
显示有效配置(去除空行与注释行)Linux默认的注释行符号为#
grep -v ^# /etc/default/useradd

grep -v ^# /etc/default/useradd | grep -v ^$ /etc/deault/useradd > /opt/a.txt
我们在将文件通过重定向写入文本文件中的时候,可以不用加管道,重定向会默认输出内容写入文本文件

find命令的使用

find与grep的差别在于

  • grep查找的是文本文件的内容
  • find查找的是文件的路径,属于递归式查找(所有的路径都会查找一遍)

根据预设的条件递归查找对应的文件

find [目录] [条件1] [条件2]
  • 常用条件表示:
  •   -type 类型 (f 文本文件,d 目录,l 快捷方式)
    
  •   -name  "文档名称"
    
  •   -iname  名称忽略大小写
    
  •   []  匹配中括号中的任意一个字符
    
  •   -size  +/-文件大小(k,M,G)
    
  •   -user 用户名
    
  •   -mtime:内容修改时间    -ctime:属性变更时间    -atime:访问时间
    

· 使用find查找打印结果包含当前目录本身和目录下的影藏文件,find查找是属于递归查找

-type 类型
find /root -type f		查找root目录下的所有文本文件
find /root -type d		查找root目录下的所有目录
find /etc -type l		查找etc目录下的所有快捷方式

-name "名称"
find /etc -name "*.conf"	查找etc目录下结尾为.conf结尾的所有目录和文本文件(linux系统中.conf结尾的大多数都是配置文件)
find /etc -name	"*tab*"		查找中间包含tab的所有目录和文本文件
find /etc -name "passwd"	查找passwd文件和目录(精确查找)

-iname "名称"
find /etc -iname "a*"       查找etc目录下以a或者A开头的所有目录和文件	
find /etc -iname "c*"       查找etc目录下以c或者C开头的所有目录和文件	
	
-type + -name 
mkdir /root/nsd01 /root/nsd02
touch /root/nsd03.txt /root/nsd04.conf
查找root目录下nsd开头的所有目录
find /root -type d -name "nsd*"
查找root目录下nsd开头的所有文件
find /root -type f -name "nsd*"

[] 匹配中括号中的任意一个字符
touch /root/abc{1,2,3,4,5,6}.txt  	 创建文件abc1.txt至abc6.txt	
find /root/ -name "abc[123].txt" 	 查找名字为abc1.txt,abc2.txt,abc3.txt的文件
# abc1.txt abc2.txt abc3.txt
find /root/ -name "abc[^123].txt" 	 查找名字除了abc1.txt,abc2.txt,abc3.txt以外,其他以abc开头的所有文件
# abc4.txt abc5.txt abc6.txt

-size +/-文件大小
find /boot/ -size +20M		查找boot目录下大于20M所有的文件和目录
find /boot/ -size -10M		查找boot目录下小于10M所有的文件和目录
find /boot/ -size -30k		查找boot目录下小于30k所有的文件和目录
# find /boot/ -size -1G/-1M/-1k	-和1是无法联用的,系统是不会识别的
find /boot/ -size -1024k	查找boot目录下小于1M的文件和目录

-user 用户名 # 按照数据的所有者(数据所有者即谁创建了该数据,谁就是该数据的数据所有者)
useradd nana
find /home/ -user nana		 	    查找home目录下用户nana相关的所有文件和目录
find /home/ -user nana type f		查找home目录下用户nana相关的所有文件
find /home/ -user nana type d		查找home目录下用户nana相关的所有目录
如果说以/为查找范围,那么会出现一些正确的报错"/prco/..."
find / -user nana
# find查找只会去硬盘里面查找,不会去内存里面找数据
# /proc : 占用内存空间,不占用磁盘空间,proc是专门反应内存中的数据的

-mtime 修改时间		# 都是过去的时间
-mtime +10 			 # 10天之前
-mtime -10			# 最近10天之内
-mtime 10   		# 第10天当天

 三个月之前修改过的数据
find /root -mtime +90
 查找最近一天内修改过的数据
find /root -mtime -1

-a(并且)/-o(或者)
find /var/log -size +2k -a -size -10k			查找/var/log目录下大于2k并且小于10k的文件或目录
find /var/log -size +2k -size -10k				-a可以忽略不写

find /var/log -size -2k -o -size +10k			查找/var/log目录下小于2k或者大于10k的文件或目录

find命令高级使用

  • find指令
常用的find指令	
find ./ -type f -print							(默认)打印当前目录下的文件
find ./ -type f -ls								(ls -lhi)打印当前目录下的结果详情
# 34292038    4 -rw-r--r--   1 root     root           18 Dec 29  2013 ./.bash_logout
# 34292039    4 -rw-r--r--   1 root     root          176 Dec 29  2013 ./.bash_profile
find ./ -name "adc*" -delete					删除结果集
  • find和xargs命令配合
find [路径] [选项] 参数 | xargs -I {} ...(其他命令做处理)
cd /root
mkdir test
echo 123 > ./test/a.txt

find ./test -name "a.txt" | xargs -I {} cat {}			将a.txt的内容通过通过管道转换成{}交给cat命令做进一步处理
# 123
  • -exec命令使用
find [范围] [条件] -exec 处理命令 {} \
根据查找条件查找并处理结果
-exec: 额外操作开始
{}:find查询的结果
\;:额外操作结束
每找到一个符合条件的数据,直接传输给-exec,每次只传输一个参数

find /boot/ -size +10M -exec cp {} /opt \;		# 将boot目录下大于10M的文件拷贝到opt目录下
find /root/ -name "a*" -exec cp -r {} /opt \;	# 将root目录下开头为a的目录和文件拷贝到opt目录下
当我们将find与cp联用时,必须要先确认cp到的目录是否存在,find是没有创建目录的功能的

把find找到的文件或者目录结果制作成tar包时,只能一次之传输一次参数,如图下所示:
在这里插入图片描述

案例:
利用find查找所有用户student拥有的必须是文件,把他们拷贝到/root/findfiles文件夹中
useradd student
mkdir findfiles
find / -user student -type f -exec cp {} /root/findfiles /;
ls -A /root/findfiles/
案例:
查找/root/中的所有子目录,复制到/opt目录下
方法一:
find /root -type d -exec cp -rfv {} /opt \;				选项 r:递归 f:免交互 v:打印复制过程

方法二:		
find /root -type d | xargs -I {} cp -rfv {} /opt		选项 r:递归 f:免交互 v:打印复制过程

vim的高级使用

三个模式:命令模式 插入模式 末行模式
插入模式i和o的差别
i : 跟在光标后面开始编辑
o : 另起一行开始编辑

命令模式操作

光标跳转
快速跳转至n行 : n+G
在这里插入图片描述
复制/粘贴/删除
在这里插入图片描述
查找/撤销/保存
在这里插入图片描述

末行模式操作

保存/退出/文件操作
在这里插入图片描述

echo 123 > /opt/a.txt
echo abc > /opt/b.txt
vim /opt/a.txt
末行模式:r /opt/b.txt # 会直接把b.txt的内容导入文件a.txt中		

字符串替换
在这里插入图片描述
开关参数控制
在这里插入图片描述

注释多行操作

Ctrl + v 进入列编辑模式,向上或者向下移动光标,选中需要一起操作的行
shift + i 进入编辑模式,插入#
按两次Esc进入一般模式(自动变)

批量去注释
Ctrl + v 进入列编辑模式,向上或者向下移动光标,选中需要一起操作的行
Ctrl + d 批量取消注释 

· 常见问题:缓存文件产生 名称为:*.swp

  • 如果我们在使用vim编辑器的时候,编辑到一半,进程突然挂了,再次打开文件的时候,就会出现下图这种情况
  • 也就是说,这时候产生了缓存文件.a.txt.swp,一般出现这种情况我们是无法再次编辑a.txt文件的
  • 我们需要删除缓存文件.a.txt.swp就可以再次编辑了(rm -rf /opt/.a.txt.swp)
  • 删除缓存文件后,我们在进程挂掉之前,新编辑的内容是直接丢失的。
    在这里插入图片描述

find补充时间查询

  • 按照不同的时间类型查询 ctime 、 mtime 、 atime
格式: find 文件路径 -mtime n
  • n : 代表天数(整数)
  • +n : 距离现在n天之前
  • -n : 具有现在n天之内
  • n : 距离现在第n天

ctime : 文件变更时间(变更属性时间 , 修改了位置(mv)、所属组、所有者)
atime : 文件访问时间(cat)
mtime : 文件修改时间(echo、vim)

查看文件以上三个时间的命令 : stat [文件的路径]

touch /root/a.txt

stat /root/a.txt
#   File: ‘/root/a.txt’
#   Size: 25        	Blocks: 8          IO Block: 4096   regular file
# Device: fd00h/64768d	Inode: 33575000    Links: 1
# Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
# Access: 2021-03-27 20:44:04.442578241 +0800			访问时间
# Modify: 2021-03-27 20:44:04.442578241 +0800			内容修改时间
# Change: 2021-03-27 20:44:04.442578241 +0800			属性变更修改时间
# Birth: -												文件的创建时间不显示

echo 123 > /root/a.txt				我们在文件里写入内容的时候,文件内容的修改时间和属性变更时间都会改变
stat /root/a.txt
# Modify: 2021-03-27 20:49:31.218585662 +0800
# Change: 2021-03-27 20:49:31.218585662 +0800
用法:
find /root -mtime 5				距离现在的第5天,root目录下修改过的文件和子目录
find /root -mtime -5			距离现在的第5天之内,root目录下修改过的文件和子目录
find /root -mtime +5			距离现在的第5天之前,root目录下修改过的文件子目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值