Linux shell编程学习笔记79:cpio命令——文件和目录归档工具(下)

news2024/11/15 16:20:06

Linux shell编程学习笔记78:cpio命令——文件和目录归档工具(上)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Purpleendurer/article/details/142095476?spm=1001.2014.3001.5501中,我们研究了 cpio命令 的功能、格式、选项说明 以及 cpio命令的三种模式,现在我们来通过一些实例来实践一下。

1 应用实例

1.1 创建演示文件和目录


我们使用 echo 命令和输出重定向创建文件f1 和 f2,使用mkdir命令创建目录d1

[purpleendurer @ bash ~] echo "f1" > f1
[purpleendurer @ bash ~] echo "f2" > f2
[purpleendurer @ bash ~] mkdir d1
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~]

1.2 创建归档文件

1.2.1 将当前目录的内容归档

使用命令

ls | cpio -o > p.cpio

来将当前目录的内容归档到文件p.cpio。

 命令选项说明

  • -o或--create  创建包 (运行 copy-out 模式)
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls | cpio -o > p.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  p.cpio
[purpleendurer @ bash ~] 

 如果我们想在归档时看到已归档的文件名称,可以使用-v 或 --verbose 选项,即:

ls | cpio -ov > p.cpio

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls | cpio -ov > p.cpio
Code
d1
f1
f2
p.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  p.cpio
[purpleendurer @ bash ~] 

1.2.2 将以字母f开头的文件归档

我们可以使用命令

ls f* | cpio -ov > f.cpio

find f* | cpio -ov > f.cpio

将以字母f开头的文件归档。

[purpleendurer @ bash ~] find f*
f1
f2
[purpleendurer @ bash ~] find f* | cpio -ov > f.cpio
f1
f2
f.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio  p.cpio
[purpleendurer @ bash ~] 

1.2.3 将标准输入指定的文件归档

 命令格式:

cpio -o > 归档文件

注意:输入所有要归档文件名后,要按Ctrl+D结束。

例如,从标准输入指定将文件f1和目录d1归档到文件k.cpio:

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] cpio -o > k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] 

1.2.4 使用tar格式归档

cpio命令支持tar格式的归档文件,我们可以使用 -H选项来生成tar格式的归档文件。

例如,将当前目录下 f开头的文件和目录以tar格式归档到d.tar 的命令是

ls f* | cpio -ov -H tar > f.tar

选项说明:

  • -o或--create:创建包 (运行 copy-out 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -t, --list:将输入内容以列表形式打印
[purpleendurer @ bash ~] ls f*
f1  f2
[purpleendurer @ bash ~] ls f* | cpio -ov -H tar > f.tar
f1
f2
6 blocks
[purpleendurer @ bash ~] cpio -t < f.tar
f1
f2
5 blocks
[purpleendurer @ bash ~] 

1.2 查看归档文件的内容

我们可以使用命令

cpio -t < 归档文件

 cpio --list < 归档文件

来查看归档文件的内容。

选项说明:

  • -t, --list:将输入内容以列表形式打印

例如,查看归档文件 f.cpio 和 p.cpio 的内容。

[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio  p.cpio
[purpleendurer @ bash ~] cpio -t < f.cpio
f1
f2
f.cpio
1 block
[purpleendurer @ bash ~] cpio -t < p.cpio
Code
d1
f1
f2
p.cpio
1 block
[purpleendurer @ bash ~] 

 1.3  向归档文件追加文件

例如,将文件f2追加到归档文件k.cpio文件的命令是

 ls f2 | cpio -ovA -O k.cpio

命令选项说明

  • -o 或  --create:创建包 (运行 copy-out 模式)
  • -v 或  --verbose:详细列出已处理的文件
  • -O:使用包文件名而不是标准输出
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] ls f2 | cpio -ovA -O k.cpio
f2
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
f2
1 block
[purpleendurer @ bash ~] 

注意:向归档文件追加文件不能使用输出定向追加  >> 来实现

例如,我们想用输出重定向追加 来将目录d1追加到归档文件k.cpio:

[purpleendurer @ bash ~] rm k.cpio
[purpleendurer @ bash ~] ls f1 | cpio -o > k.cpio
1 block
[purpleendurer @ bash ~] ls d1 | cpio -o >> k.cpio
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
1 block
[purpleendurer @ bash ~] 

命令执行的结果是d1未能追加到归档文件k.cpio。

1.4 从归档文件进行还原

1.4.1 从归档文件进行还原,并列出详细信息

例如,我先使用命令 ls f? | cpio -ov  > f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。

接着我便使用命令

cpio -iv < f.cpio

来还原。

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov  > f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] cpio -t < f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] rm f?
[purpleendurer @ bash ~] ls
Code  d1  f.cpio
[purpleendurer @ bash ~] cpio -iv < f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio
[purpleendurer @ bash ~] 

如果我们不想使用输入重定向来指定所用的归档文件f.cpio,还可以使用-I 选项来指定归档文件f.cpio。

命令:

cpio -iv -I f.cpio

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入

 

[purpleendurer @ bash ~] cpio -iv -I f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] 

1.4.2 强制从归档文件中还原

所谓强制,就是还原时直接覆盖原有的文件。

例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后强制从归档文件f.cpio还原文件,命令是:

cpio -ivu -I f.cpio

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -u, --unconditional:无条件覆盖所有文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入

 

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] cpio -ivu -I f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] 

1.4.3 从归档文件进行还原时进行反向匹配,指定不解压的文件

例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。

接着我们使用命令

cpio -iv -I f.cpio -f f1

从归档文件f.cpio还原文件名不是f1的文件。

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入
  • -f, --nonmatching:仅拷贝不匹配任意给定的模式的文件

 

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] rm f?
[purpleendurer @ bash ~] ls
Code  d1  f.cpio
[purpleendurer @ bash ~] cpio -iv -I f.cpio -f f1
f2
1 block
[purpleendurer @ bash ~] ls
Code  d1  f2  f.cpio
[purpleendurer @ bash ~] 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven下载安装

下载 下载地址&#xff1a;Maven – Download Apache Maven 选择合适的版本进行下载 windows&Linux安装 1, 解压apache-maven-3.6.1.rar即安装完成 2&#xff0c; 配置环境变量MAVEN_HOME为安装路径&#xff0c;并将MAVEN_HOME的bin目录配置到PATH下 3&#xff0c;…

黑马点评21——最佳实践-键值设计

文章目录 如何优雅的设计keyBigKey问题选择合适的数据结构 如何优雅的设计key BigKey问题 redis-rdb-tools 选择合适的数据结构 动态修改的&#xff0c;重启后就又失效了&#xff0c;而且最好上线不要超过1000 这样解决也不存在bigkey的问题了。

leetcode 1811 寻找面试候选人(postgresql)

需求 表: Contests ------------------ | Column Name | Type | ------------------ | contest_id | int | | gold_medal | int | | silver_medal | int | | bronze_medal | int | ------------------ contest_id 是该表的主键. 该表包含LeetCode竞赛的ID和该场比赛中金牌、银…

maya的重命名物体和材质工具(带ai过程)

对材质同样也有效 被AI干失业的卖衣服的小姐姐&#xff0c;开的士的小哥哥都可以再就业的易上手教程&#xff0c; 先看效果&#xff01; 对物体命名也是&#xff0c;相当的美观 先提出需求我想在maya中批量重命名物体怎么办&#xff1f;AI给你弄个短代码 &#xff0c;放进AI进…

Trying to install openai in chaquopy in android studio but getting build failed

题意&#xff1a;“尝试在 Android Studio 的 Chaquopy 中安装 OpenAI&#xff0c;但构建失败。” 问题背景&#xff1a; Pretty much title, tried to import openai in android studio to use their api for my android app but everytime I run the app I get the same bui…

SQL注入+CTF实例

SQL注入的做题步骤 1.判断数字型还是字符型 数字型&#xff1a; select * from table where id$id; 字符型&#xff1a; select * from table where id$id; # 一般是单引号闭合&#xff0c;也有可能是双引号&#xff0c;又或者是)、")、))等等都有可能 可以用and 11和an…

康谋分享 | 汽车仿真与AI的结合应用

在自动驾驶领域&#xff0c;实现高质量的虚拟传感器输出是一项关键的挑战。所有的架构和实现都会涉及来自质量、性能和功能集成等方面的需求。aiSim也不例外&#xff0c;因此我们会更加关注于多个因素的协调&#xff0c;其中&#xff0c;aiSim传感器实现的神经网络渲染仿真方案…

[001-03-007].第07节:Redis中的管道

我的后端学习大纲 我的Redis学习大纲 1、Redis管道的由来&#xff1a; 1.Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket…

C++类和对象 第二级初阶

目录 面向过程和面向对象 类 类是什么&#xff1f; 类的定义 1.声明和定义都放在类中 2.声明和定义分离 类的访问限定符 类的封装 类的作用域 类的实例化 类对象存储 结构体内存对齐规则 面向过程和面向对象 c语言是面向过程的 c是面向对象的 怎么理解&#xff1f…

外包干了三年,快要废了。。。

先说一下自己的情况&#xff0c;普通本科&#xff0c;在外包干了3年多的功能测试&#xff0c;这几年因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不能够在这样蹉跎下去了&#xff0c;长时间呆在一个舒适的环境真的会让一…

【智能终端】HBuilder X 与微信开发者工具集成与调试实战

目录 1. 需求和理解库、框架、平台 1.1 需求 1.2 理解 2.3 库、框架、平台 2.3.1 库&#xff08;Library&#xff09; 2.3.2 框架&#xff08;Framework&#xff09; 2.3.3 平台&#xff08;Platform&#xff09; 2.3.4 总结 2. 使用 HBuilder X 创建第一个 uni-app 应…

MATLAB绘图基础7:单变量图形绘制

参考书&#xff1a;《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 7.单变量图形绘制 7.1 直方图 直方图 ( H i s t o g r a m ) ({\rm Histogram}) (Histogram)&#xff1a;一种常用于可视化数据分布的图形类型&#xff0c;用于显示数据集中各数值范围的频率…

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置&#xff0c;以及报警配置&#xff0c;支持双路报警。 1、STM32G474RE的RTC晶振引脚&#xff1a; OSC32_IN为PC14&#xff0c;OSC32_OUT为PC15&#xff1b; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

Redis——通用命令

目录 Redis通用命令Redis中最核心的两个命令getset Redis全局命令keys语法注意事项 existsdel(delete)expirettlredis的key的过期策略是怎么实现的&#xff1f;**了解拓展** type总结 Redis通用命令 Redis的命令非常非常多&#xff0c;所以 1. 掌握常用命令&#xff08;多操作…

ardunio超声波测距实验

工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波&#xff0c;另一个接收物体反射回来的声波&#xff0c;这中间所经过的时间即声波传播的时间&#xff0c;再结合声速就能计算出&#xff1a; 距离 声速 * 时间 2 如何使用HC-SR04模块…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

unity3d入门教程一

unity3d入门教程一 2.1-开发环境2.2 新建项目3.1编辑器页面3.2场景3.3添加资源4.1场景视图4.2游戏对象4.3坐标系4.4游戏对象的操作4.5摄像机 2.1-开发环境 https://unity.com/ https://unity.cn/ 安装时若卡住&#xff0c;打开路径自动安装 C:\Users\zhaocai\AppData\Local\T…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

北斗盒子:海上安全的智能守护者——落水报警应用案例

海上环境多变&#xff0c;无论是航行还是作业活动&#xff0c;安全始终是最重要的考量。近年来&#xff0c;我国大力发展海上经济&#xff0c;海上作业的增加也带来了溺水事故的频发&#xff0c;给家庭和社会带来沉重的伤痛。据世界卫生组织统计&#xff0c;溺水是世界各地非故…