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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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=4w=2x=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。

3eject弹出光驱托盘

     eject -t合上光驱托盘

3.12 查找并修补文件差异

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

1

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

2生成修补文件

3文件修补

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

4撤销修补

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

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

1head命令

2tail命令

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选项可以同时打印出文件和目录大小

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux

“《Linux Shell脚本攻略》学习笔记-第三章” 的相关文章