《Linux Shell脚本攻略》学习笔记-第三章

news2024/11/28 16:32:08

3.1 简介

Unix为所有的设备和系统功能提供了文件形式的借口。可以通过这些特殊文件直接访问设备以及系统功能。

3.2 生成任意大小的文件

创建特定大小的文件最简单的方法就是利用dd命令。dd命令会克隆给定的输出内容,然后将一模一样的一份副本写入输出。

if表示输入文件,of表示输出文件,bs指定了以字节为单位的块大小,count表示需要被复制的次数。

单元大小

代码

字节

C

w

B

千字节

K

兆字节

M

吉字节

G

/dev/zero是一个特殊的字符设备,它会返回0值字节。如果不指定输入参数,dd会从stdin中读取输入。如果不指定输出参数,则dd会使用stdout作为输出。

使用dd命令也可以用来测量内存操作的速度。

3.3 文本文件的交集与差集

comm命令可以用于比较两个已经排序的文件。它可以显示第一个文件和第二个文件所独有的行以及这两个文件所共有的行。

1)执行不带任何选项的comm

输出的第一列包含只在A.txt中出现的行,第二列包含只在B.txt中出现的行,第三列包含A.txtB.txt中共有的行。

2)打印两个文件的交集(两个文件共有的行)

-1选项可以删除第一行,-2选项可以删除第二行。

3)打印两个文件中互不相同的那些行(求差)

使用tr删除制表符来合并两列

4)通过删除不需要的列,我们可以分别得到A.txt和B.txt的差集(包含在某一文件,但是不包含在另一个文件中的那些行)

5)比较多个文件的方法

3.4 查找并删除重复文件

内容相同的文件自然会生成相同的校验和。

3.5 文件权限、所有权和粘滞位

每一个文件都拥有多种类型的权限。在这些权限中,我们通常要和三组权限打交道(用户、用户组、其他用户)。

用户是文件的所有者,通常拥有所有的访问权。

用户组是多个用户的稽核,可能拥有文件的部分访问权。

其他用户是除文件所有者或用户组成员外的任何人。

1)

第一列表示文件类型。其中-表示普通文件,d表示目录,l表示符号链接

第一组的三个字符对应用户权限,第二组对应用户组权限,第三组对应其他用户权限。

有三种常见的字符:

r:如果设置,表明该文件、设备或者目录可读。

w:如果设置,表明该文件、设备或者目录可以被修改。

x:如果设置,表明该文件可执行。

2)粘滞位

目录中有一个叫做粘滞位的特殊权限。如果目录设置了粘滞位,只有创建该目录的用户才能删除目录中的文件,就算用户组合其他用户也有写权限,仍无能为力。粘滞位出现在其他用户权限组中的执行权限位置。

3)设置文件权限

a表示给所有权限类别添加可执行权限。

读、写、执行权限都有与之对应的唯一的八进制数。

r=4,w=2,x=1

4)更改所有权

5)设置粘滞位

6)以递归方式设置文件权限和文件所有权

3.6 将文件设置为不可修改

设置不可修改的文件,一旦设置,包括root在内的任何用户都无法删除文件,除非撤销其不可修改属性。

chatter命令可以用于更改扩展属性。它能够将文件设置为不可修改,也可以修改其他属性来调节文件系统同步或压缩率。

3.7 批量生成空白文件

touch命令可以用来生成空白文件或是修改已有文件的时间戳。

1)调用touch命令并使用一个不存在的文件名作为参数,创建空白文件。

2)批量生成不同名字的空白文件

3)如果文件已经存在,那么touch命令会将与该文件相关的所有时间戳都更改为当前时间。

stat filename:查看文件的修改时间、访问时间、状态改变时间。

touch -a:只更改文件访问时间

touch -m:只更改文件修改时间

touch -d:指定特定的时间和日期

3.8 查找符号链接及其指向目标

符号链接是指向其他文件或目录的指针。它在功能上类似于MacOS中的

或Windows中的快捷方式。删除符号链接不会影响原始文件。

1)创建符号链接

2)打印符号链接

^表示字符串的起始位置,其后的l指定了字符串必须以l开头,这标识了一个符号链接,每个符号链接的权限标记快均以字母l起始。

3)打印符号链接指向的目标路径

3.9 枚举文件类型统计信息

Linxu系统中使用file命令,通过检查文件内容来确定其类型。

1)打印文件类型

file打印文件类型信息,file -b打印不包括文件名在内的文件类型信息

2)

第一个<用于输入重定向,第二个<用于将子进程的输出转换成相应的文件名。这两个<之间有一个空格。

3.10 使用环回文件

执行过程:

挂载后:

卸载后:

注意:umount和mount都是特权命令,所以必须以root用户的身份来执行。

3.11 生成ISO及混合型ISO文件

ISO文件通常用于存储待刻录的数据。

1)创建ISO镜像:

2)用命令行刻录ISO

cdrecord命令可以将ISO文件刻录CD-ROM或DVD-ROM。

3)eject:弹出光驱托盘

     eject -t:合上光驱托盘

3.12 查找并修补文件差异

diff命令可以生成两个文件之间的差异比较。

1)

-u用于生成一体化输出。在一体化输出中,+起始的是新加入的行,-开始的是被删除的行。

2)生成修补文件

3)文件修补

这样version1的内容就和version2的内容一模一样了。

4)撤销修补

5)diff命令也能够以递归的形式处理目录,它会对目录中的所有内容生成差异对比。

3.13 使用head和tail打印文件的前10行和后10行

1)head命令

2)tail命令

3)使用tail查看日志

-f:允许tail关注文件内容的更新并将其显示出来

-s:睡眠间隔

3.14 只列出当前目录的各种方法

3.15 在命令行中使用pushd和popd实现快速定位

pushd和popd命令可以用于在多个目录之间切换而无需重新输入目录路径。

3.16 统计文件的行数、单词数和字符数

wc是一个用于统计行、单词和字符数量的工具。

3.17 打印目录树

tree命令能够以图形化的树状结构打印文件和目录。

1)

2)-P选项可以只显示出匹配指定模式的文件,-I选项可以只显示出不匹配指定模式的文件

3)-h选项可以同时打印出文件和目录大小

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

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

相关文章

个人总结:Mysql知识图谱

使用思维导图工具对mysql使用&#xff0c;进行知识总结。着重说下explanid SELECT识别符。这是SELECT查询序列号。这个不重要,查询序号即为sql语句执行的顺序select_type select类型table 输出的行所用的表&#xff0c;这个参数显而易见&#xff0c;容易理解partitions type 连…

Android系统启动(四) — Launcher 启动过程

1 Launcher 概述 系统启动的最后一步是启动一个应用程序来显示系统中已经安装的应用程序&#xff0c;这个应用程序就叫做 Launcher。Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序信息&#xff0c;并将这些信息封装成一个快捷图标列表显示…

阿里系-淘宝接口抓取及相关问题

阿里系-淘宝接口抓取 一、安装charlse抓包工具 官方下载地址 安装证书 二、安装xposed hook框架 Xponsed简介 具体安装步骤 三、安装模块 关闭阿里系ssl验证 开启http模式 支持支付宝、淘宝、淘宝直播各个接口抓取 四、效果如下 接下去一段时间更新阿里系相关接口 文章目录 一、…

搞技术的要不要学习财务知识

越是大型的集团或者企业&#xff0c;公司里面设立的部门就越多&#xff0c;也越细化&#xff0c;各部门之间既相互独立管理&#xff0c;又是相互的辅助支持&#xff0c;所以在工作中经常遇到这样的一个问题&#xff0c;就是做技术的要不要学习财务知识。这个问题其实就是把技术…

折半查找算法[二分查找法]算法的实现和解决整数溢出问题~

算法实现的要求&#xff1a; 折半查找法又称为二分查找法&#xff0c;这种方法对待查找的列表有两个要求&#xff1a; 1&#xff1a;必须采用顺序存储结构 2&#xff1a;必须按关键字大小有序排列算法思想&#xff1a; 将表中间位置记录的关键字与查找关键字进行比较&#x…

synchronized实现原理

0. 前言 造成线程安全问题的主要诱因有两点&#xff0c;一是存在共享数据(也称临界资源)&#xff0c;二是存在多个线程共同操作共享数据。因此为了解决线程安全问题&#xff0c;我们可能需要这样一个方案&#xff0c;当存在多个线程操作共享数据时&#xff0c;需要保证同一时刻…

ICV:2022年稀释制冷机全球市场规模达2.11亿美元,2028年有望出现突破点

全球前沿科技咨询机构ICV于2023年初发布了稀释制冷机&#xff08;DR&#xff09;的市场分析报告&#xff0c;ICV在报告中表示&#xff0c;2019-2015稀释制冷机的年均增长率达到8.59%以上&#xff0c;且增长率逐年上升。2022年全球稀释制冷机市场规模将达到2.11亿美元&#xff0…

从Deepmind最新成果DreamerV3启发的通用AI技术分析

一、背景 本文系个人观点&#xff1a;错漏在所难免&#xff0c;仅供参考 北京时间 1 月 12 日&#xff0c;DeepMind 官方推特发文&#xff0c;正式官宣 DreamerV3&#xff0c;这是首个能在游戏「我的世界」(Minecraft) 中不参考人类数据&#xff0c;就能从头开始收集钻石的通…

1.16中断实验

一.异常处理流程 1.异常处理流程 &#xff08;1&#xff09;保存现场&#xff08;CPU自动完成&#xff09; 将CPSR中状态保存到SPSR_<MODE>中 将CPSR寄存器的状态位T&#xff0c;改为ARM状态 根据需要&#xff0c;进制IRQ,FIQ中断&#xff0c;修改C…

java springboot 项目构建报错解决办法

这里总结了一些常见的springboot 项目构建报错及解决办法 错误: 无效的源发行版:17 错误原因 build.gradle 文件中可以通过下面两项来指定项目运行所需的jdk版本 sourceCompatibility:指定编译编译.java文件的jdk版本 targetCompatibility&#xff1a;确保class文件与target…

ARM 看门狗定时器

一、什么是看门狗、有什么用 (1) 看门狗定时器和普通的定时器并无本质区别。定时器可以设定一个时间&#xff0c;在这个时间完成之前定时器不断计时&#xff0c;时间到的时候&#xff0c;定时器会复位 CPU&#xff08;重启系统&#xff09;。 (2 )系统正常工作的时候当然不希望…

feign漫谈

feign的简单使用。 文章目录什么是feign准备工作三.如何使用3.1 定义pom文件3.2 定义配置文件及启动类注解3.3 定义feign接口什么是feign 远程调用框架 准备工作 需要nacos环境&#xff1a; 涉及到feign调用&#xff0c;就没法抛开注册中心&#xff0c;接下来我们使用主流的…

使用Python创建websocket服务端并给出不同客户端的请求

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 使用Python创建websocket服务端&#xff0c;并给出不同客户端的请求 一、 WebSocket是啥 WebSocket 和HTTP一样&#xff0c;也是一种通…

java中的位运算符

在Java语言中&#xff0c;提供了7种位运算符&#xff0c;分别是按位与&#xff08;&&#xff09;、按位或&#xff08;|&#xff09;、按位异或&#xff08;^&#xff09;、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。位运算符是对long、i…

怎么把两个PDF合并成一个?这几种操作轻松合并

我们在工作中处理过的文件有很多&#xff0c;有时候为了工作更方便&#xff0c;我们通常需要把两个或是多个文件合并成为一个PDF文件&#xff0c;这样只需要打开这一个文件就可以查看全部内容&#xff0c;那么怎么把两个PDF合并成一个呢&#xff1f;这几种操作都可以轻松合并&a…

Dopamine-PEG-NH2氨基聚乙二醇多巴胺,材料改性用科研试剂

英 文 &#xff1a;NH2-PEG-Dopamine/Dopamine-PEG-NH2 中文&#xff1a;氨基聚乙二醇多巴胺 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 用 途&#xff1a;仅供科研实验使用&#xff0c;不用于诊治 外观: 固体或粘性液体&#xff0c;取决于分子量 注意事项…

javaEE 初阶 — 文件内容的读写

文章目录数据流1. 字节流1.1 InputStream 概述1.1.1 无参数 read 的使用1.1.2 一个参数 read 的使用1.2 使用 OutputStream 写文件1.2.1 对于关闭文件的解释2. 字符流2.1 Reader 概述2.1.1 read 方法的使用2.2 Writer 概述2.2.1 write 的使用2.3 Scanner 补充数据流 针对文件内…

Cookie和Session以及相关的方法

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 Cookie 什么是Cookie? 为什么要用Cookie? Cookie的原理 Session 什么是Session? 为什么要用Session? Session原理 核心方法 实现用户登…

【Linux编译器】

前言 打怪升级第&#xff1a;22天 一、gcc、g 背景知识&#xff1a; gcc和g都是Linux中的编译器&#xff0c;其中gcc只可以编译C语言文件&#xff0c;g可以编译c文件&#xff0c;当然也可以编译C语言文件&#xff08;c兼容C语言嘛&#xff09;。 由于两者的操作选项基本一样&a…

转换函数和运算符类

我们以下是采用内联函数来进行的#ifndef ___Class_Counter #if 1 #endif ___Class_counter #include <climits> class Counter{unsigned cnt; // unsigned mmm; public:Counter() : cnt(0) {}//构造函数初始化器//Counter(double mmm):mmm(2){}/*void increment() {i…