Linux文件与目录管理:文本内容显示与处理

内容显示

1. cat

功能:使用cat命令可以显示文本文件的内容,也可以把几个文件内容附加到另一个 文件中。如果没有指定文件,或者文件为“.”,那么就从标准输入读取。

语法:cat [选项] [文件]

选项含义:

选项 含义
-n 对输出的所有行编号
-b 对非空输出行编号
-s 当遇到有连续两行以上的空白行时,就将其替换为一 行的空白行
-E 在每行结束处显示$

2. head

功能:使用head命令显示指定文件的前若干行

语法:head [选项] [文件]

选项含义:

选项 含义
-n 输出文件前n行,默认10行
-c 指定输出文件的大小

3. tail

功能:使用tail命令显示指定文件的末尾若干行

语法:tail [选项] [文件]

选项含义:

选项 含义
-n 输出文件后n行,默认10行
-f filename 把filename最后内容显示在屏幕上 ,并不断刷新, 常用语日志文件的实时监控,ctrl+c结束命令

4. cut

功能:使用cut从每行中显示出选定的字节、字符或字段(域)

语法:cut [选项] [文件]

选项含义:

选项 含义
-b 只选中指定的这些字节
-c 只选中指定的这些字符
-d 使用指定分界符代替制表符作为区域分解
-f 指定文件中设想被定界符(缺省情况下为制表符)隔开的字 段的列表
-n 取消分割多字节字符。
-s 不打印没有包含分界符的行

案例

1、 显示/etc/passwd文件中用户登录名和用户名全称字段,即第一个和第五个字段,由:隔开

#cut -f 1,5 –d : /etc/passwd

#cat /etc/passwd |cut -d : -f 1,5

5. less

功能:使用less从可以回卷显示文本文件的内容,允许往回卷动

语法:less [选项] [文件]

选项含义:

选项 含义
v 用文本编辑器打开该文件
n/N 跳转到next/previous匹配的地方
/test 搜索text
-S 行过长时间将超出部分舍弃
-e 当文件显示结束后,自动离开
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比

6. more

功能:使用more分页显示文本文件

语法:more [选项] [文件]

选项含义:

选项 含义
-f 计算行数时,使用实际的行数,而不是自动换行过后的行数
-p 不以卷动的方式显示每一页,而是先清除屏幕后在显示内容
-c 跟-p选项类似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行时,就将其替换为一行的空 白行
-u 不显示下行号
+n 从第n行开始显示文件内容,n代表数字
-n 一次显示的行数,n代表数字

Less和more区别

less:一次查看一个页面的输入 该命名的用法和more相似,可以查看超过一屏的文件内容,不同的是,less 命令除了可以按空格键向下显示文件外,还可以利用方向键来滚动显示文件, 要结束浏览时只要在less的提示符”:”下按Q键即可。

$ls –l /etc | less

more:该命令一般用于显示内容超过一屏的文件,为了避免文件内容显示瞬 间就消失,可以使用more命令让文件显示满一屏时就暂停,在按下任意键的 时候继续显示下一屏内容,例如,当ls命令查看文件列表时,若文件太多, 则可配合more命令来使用。如下所示

$ls - al /etc | more

7. grep

功能:使用grep分页显示文本文件

语法:grep [选项] [查找模式] [文件]

选项含义:

选项 含义
-E 模式是一个可亏站的正则表达式
-i 比较时不区分大小写
-c 只显示匹配行的数量
-h 抑制输出的文件名前缀
-r 递归读取每个目录下的所有文件
-q 禁止一切正常输出
-s 取消错误信息

案例

1、在文件/etc/passwd中搜索匹配字符“zhangsan”

#grep ‘zhangsan’ /etc/passwd

2、显示所有以d开头的文件中包含test 的行数据内容

1
2
3
4
5
6
7
#cat d1 
1
test
#cat d2
2
test
#grep ‘test’ d*

3、查找sshd进程信息

#ps –ef |grep sshd

4、显示d开头的文件中包含“aa”行数据内容

1
2
3
4
5
#cat file1 
abababababababaa
#cat file2
#aaaaaaaaa
#grep‘aa’d*

5、在/root/aa文件中输出不是以b开头的行内容

#grep -v ^b /root/aa

内容处理

1. sort

功能:使用sort命令可以对文件中的数据进行排序,并将结果显示在标准输出上。

语法:sort [选项] [文件]

选项含义:

选项 含义
-m 如果给定文件已排好序,那么合并文件
-u 对排序后认为相同的行只留其中一行
-d 按字典顺序排序,比较时仅字母、数字、空格和制表 符有意义
-f 将小写字母与大写字母同等对待
-r 按逆序输出排列结果
-c 检查给定文件是否已排好序,如果没有,则打印一个 出错信息,并以状态值1退出

3. uniq

功能:使用uniq命令可以将文件内的重复行数据从输出文件中删除,只留下每条记 录的唯一样本。

语法:uniq [选项] [文件]

选项含义:

选项 含义
-i 在比较的时候不区分大小写
-u 只显示文件中不重复的行
-s K 比较时跳过前K个字符,K是数字
-D 显示所有输出的行
-d 只输出重复的行
-c 显示输出中在每行行首加上本行在文件中出现的 次数

4. comm

功能:使用comm逐行比较已排序过的文件,并将结果显示出来

语法:comm [选项] [文件1] [文件2]

选项含义:

选项 含义
-1 不输出文件1特有的行
-2 不输出文件2特有的行
-3 不输出文件3特有的行

案例

file1文件内存放ab abab,file2文件内存放ab aaab

1、比较文件file1和file2的文件内容

1
2
3
#cat file1 
#cat file2
#comm file1 file2

2、比较文件file1和file2,只显示文件file1和file2中相同行的数据内容

#comm -12 file1 file2

4. diff

功能:使用diff逐行比较两个文本文件,列出不同之处

语法:diff [选项] [文件1] [文件2]

选项含义:

选项 含义
-b 忽略行尾的空格,而字符串中的一个或多个空格符都 视为相等
-c 使用上下文输出格式
-r 当比较目录时,递归比较任何找到的子目录
-y 以两列并排格式输出
-w 忽略所有的空白
-a 所有的文件都视为文本文件来逐行比较
-q 只比较简短的输出文件是否不同
-s 当两个文件相同时报告

案例

file1文件内存放abab aaaa,file2文件内存放aaaa

1、比较文件file1和file2的文件内容,列出其不同之处

1
2
3
#cat file1 
#cat file2
#diff file1 file2

5. echo

功能:在显示器上显示一段文字,一般起到提示的作用

语法:echo [选项] [字符串或环境变量]

选项含义:

选项 含义
-n 表示输出文字后不换行,字符串可以加引号,表示将字符串 原样输出,也可以不加引号,表示将字符串中的各个单词作 为字符串输出,各字符串之间用一个空格分开
-e 出现特殊字符时,特殊处理

案例

file1文件内存放ab abab,file2文件内存放ab aaab

1、使用echo命令追加内容

1
2
3
4
5
#echo e1234 >file1 
#echo e4321 >>file1
#cat file1
#echo e1234 >file1
#cat file1

2、echo hello

3、echo $HOME

6. join

功能:将两个文件中指定栏位相同的行并加以合并,再输出

语法:join [-i] [-a1或2] [-e字符串] [-o格式] [-t字符]

选项含义:

选项 含义
-a 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-e 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
-i 比较栏位内容时,忽略大小写的差异。
-o 按照指定的格式来显示结果。
-t 使用栏位的分隔字符。
-v 跟-a相同,但是只显示文件中没有相同栏位的行。
-1 连接[文件1]指定的栏位。
-2 连接[文件2]指定的栏位。

案例 显示file1和file2文件内容,并合并

1
2
3
4
#cat file1 
#cat file2
#join file1 file2
#join file2 file1

Vim文本编辑器

命令模式

控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

输入模式

正常的文本录入。

末行模式

保存或退出文档,以及设置编辑环境。

命令 作用
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

三种切换

命令模式 [a\i\o 等键] 输入模式 [Esc] 命令模式

命令模式 [:键] 末行模式 [Esc] 命令模式

命令相关

命令行自动补全

在Linux系统中,有太多的命令和文件名称需要记忆,使用命令行补全功能可以 快速地写出文件名和命令名。

按Tab键可以自动补全

案例 #ifco 按下Tab键可补全ifconfig命令

历史命令

功能:在Linux系统中,每一个人操作的命令都会记录到命令历史中,在以后可以通过命令历史查看和使用以前操作的命令。

语法1: history history n 当history命令没有参数,将显示整个历史命令列表的内容,如果使 用n参数,将显示最后n个历史命令。

语法2:

#history -a|n|r|w filename

把当前的历史命令记录追加到历史命令文件中。

选项 含义
-a 把当前的历史命令记录追加到历史命令文件中
-c 清空历史命令列表
-n 将历史文件中的内容加入到当前历史命令列表中
-r 将历史命令文件中的内容更新(替换)当前历史命令列表
-w 把当前历史命令列表的内容写入历史命令文件,并且覆盖 历史命令文件的原来内容

命令别名

功能:命令别名是Bash Shell的强特性,在执行非常长的命令时,可以定制命令

格式:#alias 别名=“命令”

案例 1. 用户可以把常用的ps –uax|more定制为psa。

例: #alias psa=”ps -aux|more”

注意:

  1. 在定义别名时,等号两边不能有空格,等号右边的命令一般都会包含空格或 特殊字符,此时需要用引号

  2. 仅对本次登录系统有效,如果希望每次登录系统都能够使用该命令别名,可以编辑~/.bashrc文件(root用户是/root/.bashrc,普通用户是/home/*/.bashrc)