当前位置: 首页 > 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…...

移动跨平台框架Flutter详细介绍和学习线路分享

Flutter是一款移动应用程序SDK&#xff0c;一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。 Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。 在全世界&#xff0c;Flutter正在被越…...

线性代数基础:向量、矩阵、张量及其在机器学习中的应用详解

线性代数基础&#xff1a;向量、矩阵、张量及其在机器学习中的应用详解 线性代数基础&#xff1a;向量、矩阵、张量及其在机器学习中的应用详解一、向量 (Vectors)1. 向量的定义2. 向量在机器学习中的应用3. 向量空间 二、矩阵 (Matrices)1. 矩阵的定义2. 矩阵在机器学习中的应…...

Dockerfile中的RUN、CMD、ENTRYPOINT指令区别

RUN在构建过程中在镜像中执行命令。CMD容器创建时的默认命令。&#xff08;可以被覆盖&#xff09;ENTRYPOINT容器创建时的主要命令。&#xff08;不可被覆盖&#xff09; 指令介绍 1.RUN 在构建过程中在镜像中执行命令&#xff0c;是在 docker build中执行 2.CMD 作用&am…...

css grid布局属性详解

Grid布局 前言一、认识Grid1.1容器和项目1.2行和列1.3单元格和网格线 二、容器属性2.1.grid-template-columns与grid-template-rows属性2.1.1 直接使用长度单位比如px2.1.2 使用百分比 %2.1.3 使用repeat函数2.1.4 按比例划分 fr 关键字2.1.5 自动填充 auto 关键字2.1.6 最大值…...

Tranformer分布式特辑

随着大模型的发展&#xff0c;如何进行分布式训练也成了每位开发者必备的技能。 1. 单机训练 CPU OffloadingGradient Checkpointing 正向传播时&#xff0c;不存储当前节点的中间结果&#xff0c;在反向传播时重新计算&#xff0c;从而起到降低显存占用的作用 Low Precision…...

【Moveit2官方教程】使用 MoveIt Task Constructor (MTC) 框架来定义和执行一个机器人任务

#include <rclcpp/rclcpp.hpp> // ROS 2 的核心库 #include <moveit/planning_scene/planning_scene.h> // MoveIt 规划场景相关的头文件 #include <moveit/planning_scene_interface/planning_scene_interface.h> // MoveIt 规划场景接口 #include <m…...

使用docker配置wordpress

docker的安装 配置docker yum源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo下载最新版本docker sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-…...

JVM字节码

JVM字节码详解 引言 JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;字节码是一种中间代码&#xff0c;主要用于Java平台上的程序在不同硬件平台上的移植。Java程序通过编译器将源代码编译成字节码&#xff0c;然后通过JVM解释或即时编译&#xff08…...

python访问mysql

要在 Python 中访问 MySQL 数据库&#xff0c;通常会使用 mysql-connector-python 或 pymysql 这两个库之一。以下是使用这两个库的基本示例&#xff1a; 使用 mysql-connector-python 安装库: pip install mysql-connector-python示例代码: import mysql.connector# 连接到 M…...

Java工具插件

一、springboot集成mqtt订阅 阿里云MQTT使用教程_复杂的世界311的博客-CSDN博客_阿里云mqtt 阿里云创建MQTT服务 先找到产品与服务,然后选择物联网平台,找到公共实例,创建一个产品。 创建产品 然后在左侧下拉栏找到设备管理,在设备管理下拉栏找到设备,然后添加设备。添加…...