`
从此醉
  • 浏览: 1047063 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Linux Shell 脚本攻略 - 第三章 以文件之名

 
阅读更多


3.1 生成任意大小文件

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

2 stdin,设备文件,普通文件等都可以作为输入,stdout,设备文件,普通文件等也可以作为输出

3 例子: dd if=/dev/zero of=data bs=1M count=1

该命令会在当面目录创建一个1MB大小的文件data,来看一下参数,if代表输入文件,of代表输出文件,bs代表以字节为单位的块大小,count表示要被复制的块数

4 我们将bs指定为1MB,count为1,于是得到了一个大小为1MB的文件,如果把count指定为2则得到2MB的文件

5 /dev/zero是一个字符设备,他会不断返回0值字节(\0)

6 如果不指定输入参数,默认情况是从stdin中读取输入,与之类似,如果不指定输出参数则默认会将stdout作为输出

3.2 文本文件的交集和差集

1 comm命令可以用于两个文件之间的比较,它有很多不错的选项来调整输出

2 例子: comm fileA fileB

输出的第一列包含在fileA中出现行,第二列包含在fileB中出现的行,第三列包含在fileA和fileB中相同的行

有一些选项可以按照我们需求进行格式化输出

-1 从输出中删除第一列

-2 从输出中删除第二列

-3 从输出中删除第三列

3.3 查找并删除重复文件

1 重复文件指的是那些虽然名字不同但是内容却一模一样的文件

2 校验和是通过文件的内容来的,内容相同的文件校验和是一样的

3.4 创建长路径目录

1 mkdir命令用于创建目录,如果目录已经存在会返回错误信息

2 -e是条件判断[]中的参数,可以用来判断某个文件是否存在,在类UNIX中,目录同样是一个文件

3.5 文件权限和所有权

1 用户是文件所有者,用户组是多个用户的集合,系统允许这些用户对文件以某种形式进行访问

2 用命令ls -l可以列出文件的权限

比如: -rw-r--r-- 1 chenguolin chenguolin 2497 2014-01-19 21:02 hehe.txt

3 第一列总共有10个字符,第一个字符表示的是文件的类型,'-'是普通文件,'d'是目录文件,’c'字符设备等等

剩下的9个字符可以分成三组,每组三个字符。第一组的三个字符是用户权限,第二组的三个字符是用户组权限,第三组的三个字符是其他用户。

权限序列rwx,分别表示读写执行权限

4 目录同样也具有读写执行权限,不过目录相对于普通文件来说是不一样的

目录的读权限r 允许读取目录文件和子目录的列表

目录的写权限w 允许目录中创建或删除文件或目录

目录的执行权限 指明可以访问目录中的文件和子目录

5 为了设置文件权限,可以使用chmod命令

chmod u=rwx g=rw o=r filename

在这里: u指的是用户权限,g指的是用户组权限,o是指其它人实体权限

如果需要给文件添加权限,可以对用户,用户组和其他用户+进行添加,用-进行删除权限

我们也可以利用八进制来设置权限,权限由3位数来表示,每一位按顺序分别对应用户,用户组和其他用户

r对应的值为4,w对应的值为2,x对应的值为1

6 我们可以使用chown来更改文件的所有权

chown user.group filename // 这样是把文件filename的所有者改为user,用户组为group

7 有时候要以递归的方式修改当前目录下的所有文件和子目录的权限,可以使用下面的方法

chmod 777 path -R //这个例子就是递归把path目录下的所有文件的权限修改为777

8 同理我们也可以利用-R来递归修改文件的所有者

chown user.group path -R //这个命令就是递归把path目录下的所有文件的所有者和用户组修改掉

3.6 创建不可修改的文件

1 一旦文件被设置为不可修改,任何用户包括超级用户都不能删除该文件,除非其不可修改的属性被移除

2 可以用chattr将文件设置为不可修改

sudo chattr +i file //这样文件file就变为了不可修改

3 如果需要使得文件可以写,直接使用sudo chattr -i file来修改权限


3.7 批量生成空白文件

1 touch命令可以用来生成空白文件,如果文件存在,则可以用它来修改文件的时间撮

2 touch file // 如果文件不存在则创建一个文件否则直接修改该文件的时间戳

3 如果我们只是想修改某些时间戳,则可以使用下面的选项

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

touch -m 只更改文件内容修改时间

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

1 符号链接不过是指向其他文件的指针,它在功能上类似Mac OS中的别名或windows中的快捷方式

2 我们可以按照下面的方式创建链接

ln -s file link //该命令为文件file创建一个连接link

3.9 列举文件类型统计信息

1 我们可以使用file命令来打印文件类型

file filename //可以打印处filename的文件类型

3.10 环回文件及挂载

1 为了使用存储设备上面的文件系统,我们需要将其挂载到一些被称为挂载点的目录上

2 前面介绍了可以使用dd命令创建一个大的文件,那么我们可以使用mkfs这个命令来格式化设备

mkfs.ext4 /dev/sdb1 // 这个命令就是把/dev/sdb1格式化成ext4文件类型

3 我们可以使用mount来挂载

mount /dev/sdb1 /mnt/usb //这个命令就是把/dev/sdb1 挂载到/mnt/usb

4 如果要卸载使用下面的方法

umount /dev/sdb1 或 umount /mnt/usb

因为umount是一个特权命令,所以必须以超级用户的身份来执行

3.11 查找文件差异进行修补

1 我们可以使用patch(补丁文件)来更改文件信息

2 diff命令可以用来比较两个文件,最常用的用法是diff fileA fileB

我们还可以使用-u选项来进行一体化输出 diff -u fileA fileB

3 在一体化输出中,以+起始的是新加入的行,以-起始的是删除的行

diff -u fileA fileB > patch // 这个命令把两个文件的差异信息重定向到patch文件

4 用下面的命令来修补

patch -p1 file < patch // 这个命令可以把file进行差异更新

如果要撤销修改直接进行同样的命令即可


3.12 head和tail

1 head命令总是读取输入文件的头部 head file打印文件file的前10行

2 seq命令可以用来快速的生成一个序列 seq 11用来生成1~11的序列

3 tail命令打印文件的最后10行 tail file

3.13 只列出目录的方法

第一种:ls -d */ // 只有上面这种结合-d的用法才能够只打印出目录

第二种:ls -F | grep "/$" // 当使用-F时,所有输出项都会添加上一个代表文件类型的字符

第三种:ls -l | grep "^d" // ls -l输出的每一行,然后利用grep找到第一个字符是d的

第四种:find path -maxdepth 1 -type d -print // find命令指定最大的查找深度还有文件类型


3.14 统计文件的行数,单词数和字符数

1 wc是一个用于统计的工具,它是word count的缩写

2 统计行数: wc -l file

统计单词数: wc -w file

统计字符数: wc -c file

wc file默认打印出文件行数,单词数还有字符数

3 wc file -L可以用来打印出最长行的长度


3.15 打印目录树

1 tree命令是以图形化的树状结构打印文件和目录的主角,通常在Linux的发型版本中并没要该命令

2 tree path // 这个命令可以直接以树形来显示

3 以HTML形式输出目录树

tree path -H http://localhost -o out.html

将http://localhost替换为适合存放输出文件的URL,将path替换为真的路径,然后就可以生成web版的目录树


分享到:
评论

相关推荐

    Linux_Shell脚本攻略.第3版

    Linux_Shell脚本攻略.第3版,高清电子版,作者Clif Flynt,Sarath Lakshman,Shantanu Tushar. 这本书的电子版也可以到http://readfree.me这个网站上下载。

    Linux shell 脚本攻略

    Linux shell 脚本攻略,学习linux新手入门的较好教材,第二版,现已出版第三版

    linux shell脚本攻略 电子书

    Linux Shell脚本攻略(第2版) (图灵程序设计丛书) linux shell脚本攻略 电子书

    Linux Shell 脚本攻略 中文 第三版和源码

    Linux Shell 脚本攻略 中文高清第三版目录和源码,好好学习,天天向上

    Linux Shell脚本功略

    图灵程序设计丛书,细致剖析实际应用中的110多案例,让看似复杂的Linux Shell脚本任务迎刃而解。

    Linux Shell Scripting Cookbook Third Edition

    Linux Shell脚本手册 - 第三版,. This book will take you through useful real-world recipes designed to make your daily life easier when working with the shell.

    Linux Shell编程从初学到精通 第2版

    第3章 正则表达式 43 第4章 sed命令和awk编程 64 第5章 文件的排序、合并和分割 105 第6章 变量和引用 133 第7章 退出、测试、判断及操作符 157 第8章 循环与结构化命令 187 第9章 变量的高级用法 217 第10章...

    shell编程指南,shell脚本,本书共分五部分全。grep家族,sed,AWK,正则表达式,tr用法

    第16章 shell脚本介绍 151 第17章 条件测试 154 第18章 控制流结构 160 第19章 shell函数 202 第20章 向脚本传递参数 224 第21章 创建屏幕输出 236 第22章 创建屏幕输入 252 第23章 调试脚本 274 第24章 shell嵌入...

    LINUX与UNIX SHELL编程指南

    第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一章 合并与分割 第十二章 ...

    Shell脚本专家指南

    《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一章 合并与分割 ...

    开发Linux系统 Shell脚本程序视频教程详细完整版

    内容包括: 第一章:开始shell程序 第二章:命令的输出和输入 第三章:分支和循环语句 第四章:参数解析和扩充 第五章:参数、变量和函数 第六章:字符串、文件和命令 第七章:正则式、sed和awk 第八章:调试和debug...

    Linux系统命令及Shell脚本实践指南[王军完整]

    《linux系统命令及shell脚本实践指南》由浅入深、全面、系统地介绍了Linux系统的基础命令和Shell脚本的开发。...第三部分为第11~18章,主要是Shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。

    Linux与UNIX Shell编程指南.rar

    第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试脚本 第二四章 SHELL嵌入命令 第五部分 ...

    Linux Shell编程教程

    第3章后台执行命令 第4章文件名置换 第5章shell输入与输出 第6章命令执行顺序 第7章正则表达式介绍 第8章grep 家族 第9章AWK 介绍 第10章sed 用法介绍 第11章合并与分割 第12章tr 用法 第13章登录环境 第14章环境和...

    Linux Shell 编程 入门、提高、精通

    第16章shell脚本介绍 第17章条件测试 第18章控制流结构 第19章shell 函数 第20章向脚本传递参数 第21章创建屏幕输出 第22章创建屏幕输入 第23章调试脚本 第24章shell嵌入命令 第五部分高级shell编程技巧 第25章深入...

Global site tag (gtag.js) - Google Analytics