Shell脚本攻略(3)-以文件之名

3.1简介
UNIX将操作系统中的一切都视为文件。文件与每一个操作息息相关,而我们可以利用它们进行各种与系统或进程相关的处理工作。接下来的内容将介绍一些文件的操及文件属性。
3.2生成任意大小的文件

$ dd if=/dev/zero of=junk.data bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00421643 s, 249 MB/s
#if代表输入文件,of代表输出文件,bs代表以字节为单位的块大小,count代表需要被复制的块数。

字节(1B):c
字(2B):w
块(512B):b
千字节(1024B):k
兆字节(1024KB):M
吉字节(1024KB):G

3.3文本文件的交集与差集
交集:打印出两个文件所共有的行。
求差:打印出指定文件所包含的且不相同的那些行
差集:打印出包含在文件A中,但不包含在其他指定文件中的那些行

注意:comm必须使用排过序的文件作为输入。

一些选项
-1:从输出中删除第一列
-2:从输出中删除第二列
-3:从输出中删除第三列

我们可以通过sed命令删除掉行首的’\t’

$ comm A.txt B.txt -3|sed ‘s/^\t//’
apple
carrot
cookies
iron
silver
steel

差集:
当A.txt和B.txt作为comm命令的参数时,输出中的第一列是A.txt相对于B.txt的差集,第二列是B.txt相对于A.txt的差集。

3.4查找并删除重复文件

3.5创建长路径目录

如果目录已经存在,返回”File exists”错误信息

下面的代码可以找出路径中的每个目录是否存在:

使用如下命令可以直接完成创建长路经目录的任务

3.6文件权限、所有权和粘滞位(略)
3.7创建不可修改的文件
通过查看/etc/mtab文件,很容易找出所有挂载分区的文件系统类型。这个文件的第一列指定了分区设备路径(如/dev/sda5).第三列指定了文件系统类型。

3.8批量生成空白文件
使用touch命令。

如果文件已存在,touch命令会将该文件的相关时间戳改为当前时间。如果只想该某些时间戳,使用下面的命令

使用-d可以为时间戳指定特定的时间和日期

3.9查找符号链接及其指向目标
创建符号链接

0 条评论
发表一条评论

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。