Linux文件与目录管理:文本内容显示与处理
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 | #cat d1 |
3、查找sshd进程信息
#ps –ef |grep sshd
4、显示d开头的文件中包含“aa”行数据内容
1 | #cat file1 |
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 | #cat file1 |
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 | #cat file1 |
5. echo
功能:在显示器上显示一段文字,一般起到提示的作用
语法:echo [选项] [字符串或环境变量]
选项含义:
选项 | 含义 |
---|---|
-n | 表示输出文字后不换行,字符串可以加引号,表示将字符串 原样输出,也可以不加引号,表示将字符串中的各个单词作 为字符串输出,各字符串之间用一个空格分开 |
-e | 出现特殊字符时,特殊处理 |
案例
file1文件内存放ab abab,file2文件内存放ab aaab
1、使用echo命令追加内容
1 | #echo e1234 >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 | #cat 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”
注意:
在定义别名时,等号两边不能有空格,等号右边的命令一般都会包含空格或 特殊字符,此时需要用引号
仅对本次登录系统有效,如果希望每次登录系统都能够使用该命令别名,可以编辑~/.bashrc文件(root用户是/root/.bashrc,普通用户是/home/*/.bashrc)