Linux中常用文件处理命令
显示文件全部内容
cat
- 命令名称: cat
- 命令所在路径: /bin/cat
- 语法: cat [选项] [文件名]
- 功能描述: 连接文件并打印到标准输出设备上(正向显示文件内容)
- 常用选项
-n 由 1 开始对所有输出的行数编号
-b 非空输出行编号,使 -n 失效
-s 所有的连续的多个空行替换为一个空行
-v 除了 LFD 和 TAB 之外的不可打印字符,用 ^ 和 M- 标记方式显示
-E 在每行结束处显示 $
-T 将 TAB 字符显示为 ^I
-A 等价于 -vET
-e 等价于"-vE"选项
-t 等价于"-vT"选项
tac
- 命令名称: tac
- 命令所在路径: /usr/bin/tac
- 语法: tac [选项] [文件列表]
- 功能描述: 连接文件并逆序输出
- 常用选项
-b 将分隔符附加在行首而不是行尾
-r 将分隔符视为正则表达式
-s 以指定字符串作为分隔符而不是换行符
分页显示文件内容
more
- 命令名称: more
- 命令所在路径: /usr/bin/more
- 语法: more [选项] [文件名]
- 功能描述: 用于屏幕阅读的文件阅览过滤器, more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
- 常用选项
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
less
- 命令名称: less
- 命令所在路径: /usr/bin/less
- 语法: less [选项] [文件名]
- 功能描述: less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
- 常用选项
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串 向下搜索"字符串"的功能
?字符串 向上搜索"字符串"的功能
n 重复前一个搜索(与 / 或 ? 有关)
N 反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
以行数为单位显示文件内容
head
- 命令名称: head
- 命令所在路径: /usr/bin/head
- 语法: head [选项] [文件名]
- 功能描述: 输出文件的起始部分(标准输出上显示每个FILE的前10行.)
- 常用选项
-c 显示每个文件的前 NUM 个字节;以 '-' 起始,则显示每个文件中不包含最后 NUM 个字节的全部内容
-n 显示前 NUM 行而不是前10行;以 '-' 起始,则显示每个文件中不包含最后 NUM 行的全部内容
-q 不显示给出文件名的首部
-v 显示给出文件名的首部
-z 以 NUL 作为行的分隔符,而非换行符
tail
- 命令名称: tail
- 命令所在路径: /usr/bin/tail
- 语法: tail [选项] [文件名]
- 功能描述: 输出文件的末尾部分(标准输出上显示每个FILE的最后10行.)
- 详细描述:
- tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
- tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
- 常用选项
-f 循环读取, 文件增长时,输出后续添加的数据
-n <行数> 显示文件的尾部 n 行内容
-c<数目> 输出最后N个字节
-q 从不输出给出文件名的首部
-v 总是输出给出文件名的首部
-q 从不输出给出文件名的首部
-s 与-f合用,表示在每次反复的间隔休眠S秒
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
特殊的文件处理命令
ln
- 命令名称: ln
- 命令英文原意: link
- 命令所在路径: /bin/ln
- 语法: ln [选项] [原文件] [目标文件]
- 功能描述: 为某一个文件在另外一个位置建立一个同步的链接
- 详细描述
-
在Unix世界里有两个’link’(连接)概念,一般称之为硬连接和软连接。一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。文件名的个数是由ls(1)来确定的。所有的文件名都处于同一个状态,也就没有什么“源名字” 之说。通常文件系统里的一个文件的所有名字包含着一样的数据信息,不过这样也不是必需的。)一个软连接(或符号连接)是完全不同的:它是一个包含了路径信息的小小的指定文件。因此,软连接可以指向不同文件系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以指向一个不一定确实存在的文件。在软连接文件被访问(系统调用 open(2) 或stat(2))的时候,操作系统用该文件所包含的路径替换该文件的访问介入点,从而实现对所指文件的访问。(用命令rm(1)和unlink(2)可以删除连接,但不是删除该文件所指向的文件。系统指定调用lstat(2)和readlink(2) 来读取连接文件与其所指文件的状态。到底是对软连接文件操作,还是对被指向文件操作,由于不同操作系统件存在不同的系统调用,而存在着差异。)
-
ln 在文件间产生连接。缺省时,产生硬连接,有-s选项,则产生符号(软)连接。
-
如果仅仅只给出一个文件名,那么ln将在当前目录里产生这个文件的连接, 也就是说,以该文件(的最后一个)名称等同的名字在当前目录里产生一个连接; 如果最后一个参数是一个已存在的目录名, ln 将在那个目录里给每一个源文件用以与源文件相同的文件名产生连接;如果只给出两个文件名,ln将产生源文件的连接; 如果最后一个参数不是一个目录名或多于两个文件名,则报错。
-
缺省时,ln不删除已存在的文件或符号连接。 (因此,它可以被用来锁定目标文件,即当dest已经不存在时) 但选项-f可以强制执行。
-
在已存在的实现中,只有超级用户才能建立目录的硬连接。 POSIX 禁止系统调用link(2)和ln建立目录的硬连接 (但是允许在不同的文件系统间建立硬连接)。
- 常用选项
-b 备份文件
-d 允许超级用户建立目录硬连接。
-f 删除已存在的目的文件(强制执行)
-i 提示是否删除已存在的目的文件。
-n 当所给出的目的文件名是一个目录的符号连接时,将其视为一般文件处理。
-s 建立符号连接以替代硬连接。 在不支持符号连接的系统上,这个选项仅仅会产生一个错误提示而已。
-v 建立连接前显示所操作的文件名
touch
- 这个在上一篇文章Java程序员必知必会的Linux命令(一) Linux 命令行初探中已经详细介绍过.