当前位置: 首页 > news >正文

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

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 ~] 

相关文章:

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

在 Linux shell编程学习笔记78&#xff1a;cpio命令——文件和目录归档工具&#xff08;上&#xff09;-CSDN博客https://blog.csdn.net/Purpleendurer/article/details/142095476?spm1001.2014.3001.5501中&#xff0c;我们研究了 cpio命令 的功能、格式、选项说明 以及 cpi…...

《 C++ 修炼全景指南:七 》优先级队列在行动:解密 C++ priority_queue 的实现与应用

1、引言 在现代编程中&#xff0c;处理动态优先级队列的需求随处可见&#xff0c;例如任务调度、路径规划、数据压缩等应用场景都依赖于高效的优先级管理。C 标准库提供了 priority_queue 这一强大的工具&#xff0c;它的独特之处在于它的排序特性&#xff0c;priority_queue …...

通信工程学习:什么是HSS归属用户服务器

HSS&#xff1a;归属用户服务器 HSS&#xff08;归属用户服务器&#xff0c;Home Subscriber Server&#xff09;是IP多媒体子系统&#xff08;IMS&#xff09;中控制层的一个重要组成部分&#xff0c;它扮演着存储和管理用户相关信息的核心角色。以下是关于HSS归属用户服务器的…...

mysql workbench 如何访问远程数据库

要使用 MySQL Workbench 访问远程数据库&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1&#xff1a;获取远程数据库的连接信息 首先&#xff0c;确保你有远程数据库的以下信息&#xff1a; 主机名&#xff08;Host&#xff09;&#xff1a;通常是服务器的 IP 地址或域…...

ICMAN触摸感应芯片方案

ICMAN触摸感应芯片 ICMAN触摸感应芯片采用先进的电容感应技术&#xff0c;能够精确检测和识别触摸动作。这一技术通过感应人体与传感器之间的微小电容变化来实现触控功能。相比传统的电阻式触控技术&#xff0c;电容感应技术具有更高的灵敏度和响应速度&#xff0c;能够提供更…...

面向个小微型企业的开源大模型(Qwen2等)商业化, AI部署成本分析与优化策略(费用分析、资源消耗分析)

小微企业AI大模型部署服务器解决方案:资源及成本分析 1.GPU-LLM技术依赖评估依据 在当前全球化的背景下,本地化需求日益凸显,无论是企业拓展国际市场还是个人用户追求更加贴近本土化的服务体验,都对技术的本地化部署提出了更高要求。随着人工智能(AI)技术的飞速发展,尤…...

pandas判断一列中存在nan值

pandas判断一列中存在nan值 在使用 pandas 时,判断一列是否存在 NaN 值可以通过多种方法完成。以下是几种常用的方法: 使用 isna() 和 any() 方法 import pandas as pd import numpy as np# 创建示例数据 df = pd.DataFrame({A: [...

如何将 Electron 项目上架 Apple Store

前言 Electron 是一个开源框架,它允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)来构建跨平台的桌面应用程序。 Electron 应用程序可以运行在 Windows、macOS 和 Linux 上,为用户提供了一种统一的方式来开发和维护软件。 本文将探讨如何将 Electron 构建的桌面应用程…...

R语言统计分析——功效分析2(t检验,ANOVA)

参考资料&#xff1a;R语言实战【第2版】 1、t检验 对于t检验&#xff0c;pwr.t.test()函数提供了许多有用的功效分析选项&#xff0c;如下&#xff1a; pwr.t.test(n,d,sig.level,power,type,alternative) 其中&#xff0c;n为样本大小&#xff1b; d为效应值&#xff0c;即…...

android 侧滑返回上一界面备忘

ParfoisMeng/SlideBack: 无需继承的Activity侧滑返回库 类全面屏返回手势效果 仿“即刻”侧滑返回 (github.com)...

golang学习笔记18——golang 访问 mysql 数据库全解析

推荐学习文档 golang应用级os框架&#xff0c;欢迎star基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学…...

苹果账号登录后端验证两种方式 python2

import time import jwt import requests import json import base64def decode_jwt(jwt_token):try:h,p,s jwt_token.split(.)except:return {},{},{},"","",""header json.loads(base64.urlsafe_b64decode(h )) # 可能需要调整填充pa…...

FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules

新增优点&#xff1a;Pattern Replacement in routing rules flinkcdc 3.2.0版本相较于3.1.0版本&#xff0c;避免了多表多sink多次写 route 路由的麻烦&#xff0c;类似于统一前后缀的形式多表多sink&#xff0c;通过<>正则&#xff0c;大大减少了书写 官网&#xff1…...

《 C++ 修炼全景指南:六 》深入探索 C++ 标准库中的 stack 与 queue 容器适配器

1、引言 1.1、容器适配器的概念与应用 容器适配器&#xff08;Container Adapters&#xff09;是 C 标准库提供的一种特殊容器&#xff0c;它不是一种独立的容器&#xff0c;而是对其他标准容器的封装&#xff0c;用来实现特定的数据结构如栈&#xff08;stack&#xff09;和…...

高级java每日一道面试题-2024年9月07日-JVM篇-说一下类加载的执行过程?

如果有遗漏,评论区告诉我进行补充 面试官: 说一下类加载的执行过程? 我回答: 在Java中&#xff0c;类的加载是一个重要的过程&#xff0c;它是由Java虚拟机&#xff08;JVM&#xff09;的类加载器系统负责的。类加载的过程不仅仅包括加载类的字节码到内存中&#xff0c;还包…...

笔试强训day09

添加逗号 import sysa list(input())[::-1] s "" cnt 0 for v in a:cnt 1s vif cnt%30:s , print(s.rstrip(,)[::-1])跳台阶 import sys import functools functools.cache def dfs(u):if u1 or u2:# print(f"u {u}")return ureturn dfs(u-1)dfs(…...

软件测试中的黑盒测试方法,包括其定义、目的及主要步骤。

黑盒测试&#xff08;Black Box Testing&#xff09;是一种软件测试方法&#xff0c;它侧重于软件的功能性需求验证&#xff0c;而不考虑程序内部结构或代码实现细节。这种方法是从最终用户的角度出发&#xff0c;检查系统是否按照规格说明书的要求工作。黑盒测试的主要目的是验…...

Shell脚本计算π的近似值

计算π的公式很多,本文使用“π的莱布尼茨公式”来计算π的近似值,对应的公式如下: http://upload.wikimedia.org/math/9/e/8/9e804b8a1a11e442be93fed1d52205a9.png 由此我们可以得到求解π的公式为:π=4*(1-(1/3)+(1/5)-(1/7)+(1/9)...) 下面是在linux下使用shell脚本命令…...

进程间通信之消息队列

作用 进程间通信 特点 1 、消息队列中的消息是有类型的。 类型 : 自定义的结构体 , 第一个成员必须是 long 型的 . 表示为该消息的类型 如 : typedef struct 结构体名称 { long type; // 消息的正文 char name[50]; char sex[10]; int age; ... } 别名 ; 2 、消息队…...

人生苦短我用Python 5-xlwings自动调整表格

人生苦短我用Python 5-xlwings自动调整表格 前言依赖主要类App类Books类Sheet 类 示例代码 前言 使用pandas库openpyxl库实现了csv与excel文件的互相转换&#xff0c;csv转excel后若数据超出了单元格的宽度&#xff0c;部分数据无法完整显示。需要手动打开Excel文件&#xff0…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...