Linux文件内容查看和编辑指南:cat、less、grep等常用命令详解

文章目录

Linux文件内容查看和编辑

1. 查看文件内容

cat用法

cat 命令用于显示整个文件的内容。它将文件的内容一次性输出到终端窗口。

例如,要显示名为 file.txt 的文件内容,可以运行以下命令:

cat file.txt

小提示:如果文件内容太长无法一次性在终端显示完整,可以使用 less 或者 more 命令进行分页显示。

cat详解

连接多个文件并打印到标准输出。

概要

cat [OPTION]... [FILE]...

主要用途
  • 显示文件内容,如果没有文件或文件为-则读取标准输入。
  • 将多个文件的内容进行连接并打印到标准输出。
  • 显示文件内容中的不可见字符(控制字符、换行符、制表符等)。
参数

FILE(可选):要处理的文件,可以为一或多个。

选项

长选项与短选项等价

  • -A, --show-all 等价于"-vET"组合选项。
  • -b, --number-nonblank 只对非空行编号,从1开始编号,覆盖"-n"选项。
  • -e 等价于"-vE"组合选项。
  • -E, --show-ends 在每行的结尾显示'$'字符。
  • -n, --number 对所有行编号,从1开始编号。
  • -s, --squeeze-blank 压缩连续的空行到一行。
  • -t 等价于"-vT"组合选项。
  • -T, --show-tabs 使用"^I"表示TAB(制表符)。
  • -u POSIX兼容性选项,无意义。
  • -v, --show-nonprinting 使用"^"和"M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。
  • --help 显示帮助信息并退出。
  • --version 显示版本信息并退出。
返回值

返回状态为成功除非给出了非法选项或非法参数。

例子
# 合并显示多个文件
cat ./1.log ./2.log ./3.log
# 显示文件中的非打印字符、tab、换行符
cat -A test.log
# 压缩文件的空行
cat -s test.log
# 显示文件并在所有行开头附加行号
cat -n test.log
# 显示文件并在所有非空行开头附加行号
cat -b test.log
# 将标准输入的内容和文件内容一并显示
echo '######' |cat - test.log
注意
  • 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 catinfo coreutils 'cat invocation'
  • 当使用cat命令查看体积较大的文件时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容,为了控制滚屏,可以按Ctrl+s键停止滚屏;按Ctrl+q键恢复滚屏;按Ctrl+c(中断)键可以终止该命令的执行,返回Shell提示符状态。
  • 建议您查看体积较大的文件时使用less、more命令或emacs、vi等文本编辑器。

less

less 命令可以按页查看文件内容,并且提供了一些方便的浏览操作。

若要使用 less 查看文件内容,只需输入以下命令:

less file.txt

此时会显示文件内容的第一页。您可以使用箭头键向上/向下滚动,或者按空格键向下翻页。

小提示:要退出 less 命令,可以按下 q 键。

less详解

分屏上下翻页浏览文件内容

补充说明

less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。

语法
less [选项] [参数]
选项
  • -e:文件内容显示完毕后,自动退出;
  • -f:强制显示文件;
  • -g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
  • -l:搜索时忽略大小写的差异;
  • -N:每一行行首显示行号;
  • -s:将连续多个空行压缩成一行显示;
  • -S:在单行显示较长的内容,而不换行显示;
  • -x<数字>:将TAB字符显示为指定个数的空格字符。
参数
  • 文件:指定要分屏显示内容的文件。
实例
sudo less /var/log/shadowsocks.log

more

less 类似,more 命令也可用于按页查看文件内容。

要使用 more 查看文件内容,只需输入以下命令:

more file.txt

less 不同的是,more 只允许您向前滚动一页,无法像 less 那样向后滚动。

小提示:要退出 more 命令,可以按下 q 键。

more详解

more 命令用于分页显示文件内容。

补充说明

more 命令是一个基于 vi 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,并且支持 vi 中的关键字定位操作。more 内置了许多快捷键,如:

  • H:获得帮助信息。
  • Enter:向下翻滚一行。
  • 空格:向下滚动一屏。
  • Q:退出命令。

该命令一次显示一屏文本,满屏后停下来,并且在屏幕底部出现一个提示信息,给出已经显示的文件百分比:"--More--(XX%)"。您可以按以下方法对提示进行回答:

  • Space 键:显示文本的下一屏内容。
  • Enter 键:只显示文本的下一行内容。
  • 按斜线符 |:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
  • H 键:显示帮助屏,该屏上有相关的帮助信息。
  • B 键:显示上一屏内容。
  • Q 键:退出 more 命令。
语法
more [选项] [文件]
选项
  • -<数字>:指定每屏显示的行数。
  • -d:显示提示信息。
  • -c:不进行滚屏操作,每次刷新屏幕。
  • -s:将多个空行压缩成一行显示。
  • -u:禁止下划线。
  • +<数字>:从指定数字的行开始显示。
参数
  • 文件:要分页显示内容的文件。
实例

显示 file 文件的内容,但在显示之前先清屏,并且在屏幕最下方显示完成的百分比。

more -dc file

显示 file 文件的内容,每10行显示一次,而且在显示之前先清屏。

more -c -10 file

2. 文件搜索和过滤

grep

grep 命令用于在文件中搜索指定的模式。它可以根据您提供的模式进行匹配,并输出匹配到的行。

以下是使用 grep 的基本语法:

grep pattern file.txt

其中,pattern 是您要搜索的模式,file.txt 是您要搜索的文件名。

例如,要在名为 file.txt 的文件中搜索包含单词 "hello" 的行,可以运行以下命令:

grep hello file.txt

grep 命令还提供了许多选项,以便更灵活地进行搜索。您可以通过 man grep 命令查看完整的帮助文档。

grep详解

grep 命令用于在文件中搜索指定的模式并输出匹配的行。

语法
grep [选项] 模式 [文件]
选项
  • -i:忽略大小写。
  • -v:反向匹配,只输出不匹配的行。
  • -r:递归搜索目录下的所有文件。
  • -l:只输出包含匹配模式的文件名。
  • -c:只输出匹配的行数。
  • -n:同时输出匹配的行和行号。
  • -H:当搜索多个文件时,显示匹配的行及文件名。
参数
  • 模式:要搜索的模式,可以是普通字符串或正则表达式。
  • 文件:指定要进行搜索的文件。
实例
  1. 在文件 example.txt 中搜索包含字符串 "hello" 的行,并输出匹配的行:

    grep "hello" example.txt
    
  2. 在多个文件中搜索匹配模式 "pattern" 的行,并显示匹配的行及文件名:

    grep -H "pattern" file1.txt file2.txt
    
  3. 在目录 directory 及其子目录中递归搜索匹配模式 "keyword" 的行,并输出匹配的行和行号:

    grep -r -n "keyword" directory
    
  4. 搜索文件中不包含模式 "exclude" 的行,并输出不匹配的行:

    grep -v "exclude" example.txt
    

find

find 命令可用于在指定路径下查找符合条件的文件。

以下是使用 find 的基本语法:

find path -name filename

其中,path 是要搜索的路径,filename 是要搜索的文件名。

例如,要在当前目录及其子目录下查找名为 file.txt 的文件,可以运行以下命令:

find . -name file.txt

find 命令还支持其他条件,如按照文件类型、大小等进行搜索。您可以通过 man find 命令查看完整的帮助文档。

find详解

find 命令用于在指定目录下查找符合条件的文件或目录。

语法
find [路径] [表达式]
选项
  • -name:按照文件名匹配。
  • -type:按照文件类型匹配。
  • -size:按照文件大小匹配。
  • -mtime:按照文件修改时间匹配。
  • -exec:对搜索结果执行某个命令。
参数
  • 路径:需要查找的目录路径。
  • 表达式:用于指定搜索条件的表达式。
实例
  1. 在当前目录及其子目录中查找文件名为 "example.txt" 的文件:

    find . -name "example.txt"
    
  2. /var/log 目录中查找文件名以 ".log" 结尾的文件:

    find /var/log -name "*.log"
    
  3. 在当前目录及其子目录中查找文件类型为普通文件并且大小大于 1MB 的文件:

    find . -type f -size +1M
    
  4. /tmp 目录中查找最近 7 天内被修改过的文件,并将结果输出到 result.txt 文件:

    find /tmp -mtime -7 > result.txt
    
  5. 查找文件名以 ".txt" 结尾的文件,并将搜索结果传递给 -exec 后面的命令进行处理(如删除):

    find . -name "*.txt" -exec rm {} \;
    

awk

awk 是一种强大的文本处理工具,它可以根据指定的规则对文件进行处理和分析。

以下是使用 awk 的基本语法:

awk 'pattern { action }' file.txt

其中,pattern 是要匹配的模式,action 是要执行的操作,file.txt 是要处理的文件名。

例如,要提取名为 file.txt 的文件中的第一列数据,可以运行以下命令:

awk '{ print $1 }' file.txt

awk 还支持更复杂的操作,如条件判断、循环等。如果您想深入了解 awk 的用法,请参阅相关文档或教程。

awk详解

awk 是一种处理文本文件的命令行工具,用于分析和操作文本数据,支持各种数学和字符串函数以及条件语句和循环语句等。

语法
awk [选项] '表达式' [文件]
选项
  • -F:指定输入文件的字段分隔符。
  • -v:定义一个变量并赋值。
  • -f:使用脚本文件来执行命令。
参数
  • 表达式:包含 awk 命令的脚本,用于对输入文件进行处理。
  • 文件:需要处理的输入文件。
实例
  1. 输出文件 /etc/passwd 中的第一列和第三列:

    awk -F ":" '{print $1, $3}' /etc/passwd
    
  2. 统计文件 /var/log/messages 中包含关键字 "error" 的行数:

    awk '/error/ {count++} END {print count}' /var/log/messages
    
  3. 使用变量和算术运算对文件 /proc/meminfo 中的数据进行处理:

    awk -v total=0 '/MemTotal/ {total+=$2} /SwapTotal/ {total+=$2} END {print total / 1024 " MB"}' /proc/meminfo
    
  4. 使用脚本文件 script.awk 对文件 /var/log/auth.log 进行处理:

    awk -f script.awk /var/log/auth.log
    

3. 文件编辑

nano

nano 是一个简单易用的文本编辑器,适合新手用户使用。

要使用 nano 编辑文件,只需输入以下命令:

nano file.txt

此时会在终端窗口中打开 file.txt,您可以对文件进行编辑和保存。

小提示:在 nano 中,底部会显示一些常用的操作快捷键,如保存文件、退出编辑等。

nano详解

nano 是一个简单易用的文本编辑器,在终端中使用,支持基本的文本编辑操作和快捷键。

语法
nano [选项] [文件]
选项
  • -B:启用备份功能,在保存文件时会创建备份文件。
  • -C:启用自动换行功能。
  • -E:禁用可视化滚动条。
  • -G:禁用鼠标支持。
  • -i:自动缩进新行。
  • -m:启用鼠标支持。
  • -O:禁用文件写入时的自动换行功能。
  • -R:只读模式打开文件。
  • -S:禁用滚动同步功能。
  • -T:指定语法高亮模式(如 -T python)。
参数
  • 文件:需要编辑的文件路径。
实例
  1. 使用 nano 编辑文件 example.txt

    nano example.txt
    
  2. 启用备份功能,并编辑文件 example.txt

    nano -B example.txt
    
  3. 使用鼠标支持,并编辑文件 example.txt

    nano -m example.txt
    
  4. 在只读模式下打开文件 example.txt

    nano -R example.txt
    

以上是对 nano 命令的简要介绍,您可以根据需要使用不同的选项和参数来进行文本编辑操作。在 nano 编辑器中,您可以使用快捷键进行剪切、复制、粘贴、搜索替换等常见操作,具体快捷键信息可以通过 Ctrl+G 或者 F1 键查看。

vi/vim

vivim 是一个功能强大的文本编辑器,广泛用于 Linux 系统。

要使用 vi 打开文件,只需输入以下命令:

vi file.txt

此时会进入 vi 的编辑模式,您可以进行插入、删除、替换等操作。

小提示:要保存更改并退出 vi,可以按下 Esc 键,然后输入 :wq 并按回车键。

vi/vim详解

vivim 是一个强大的文本编辑器,广泛用于终端环境下进行文本编辑。vimvi 的增强版本,提供了更多功能和改进。

语法
vi [选项] [文件]
vim [选项] [文件]
选项
  • -b:以二进制模式打开文件。
  • -c <命令>:执行指定的 Ex 命令。
  • -C:启用兼容模式。
  • -E:启动 Ex 模式(不显示界面)。
  • -g:启用图形界面模式。
  • -i <配置文件>:使用指定的配置文件。
  • -m:启用修改模式。
  • -n:禁用自动换行。
  • -R:只读模式打开文件。
  • -s:安静模式,抑制警告信息。
  • -u <vimrc>:使用指定的 vimrc 配置文件。
  • -w <脚本文件>:将录制的宏保存到指定的脚本文件中。
参数
  • 文件:需要编辑的文件路径。
实例
  1. 使用 vi 编辑文件 example.txt

    vi example.txt
    
  2. 使用 vim 编辑文件 example.txt

    vim example.txt
    
  3. 在只读模式下打开文件 example.txt

    vim -R example.txt
    
  4. 执行 vim 命令后执行指定的 Ex 命令,例如删除所有行:

    vim -c ":%d" example.txt
    

vivim 编辑器有很多强大的编辑和操作功能,包括插入、删除、复制、粘贴、搜索替换、分割窗口等。您可以使用快捷键和命令来完成各种编辑任务。详细的操作和命令信息可以通过 vim 的帮助文档(:help)来获取。

总结

在 Linux 中,我们经常需要查看和编辑文件的内容。下面我们总结了一些常用的命令。

  1. 查看文件内容:

    • catcat 命令是一个简单而常用的文件查看工具。它可以显示整个文件的内容,也可以将多个文件连接在一起显示。
    • lessless 命令是一个更加强大和灵活的文件查看工具。它可以按页浏览文件,支持前后搜索、向上向下滚动等功能。
    • moremore 命令和 less 类似,也是用来分页显示文件内容的工具。
  2. 文件搜索和过滤:

    • grepgrep 命令是用于在文件中搜索指定模式的工具。它可以根据正则表达式来匹配和筛选内容,并将匹配到的行输出。
    • findfind 命令用于在指定目录下搜索文件和目录。可以根据不同的条件来搜索文件,如按名称、大小、时间等进行过滤。
    • awkawk 是一种强大的文本处理工具,在文件中逐行扫描并进行各种操作。它可以根据自定义的规则提取、转换和处理文本数据。
  3. 文件编辑:

    • nanonano 是一个简单易用的文本编辑器,在终端中使用。它支持基本的文本编辑操作和快捷键,适合初学者使用。
    • vi/vimvivim 是强大的文本编辑器,广泛用于终端环境下进行编辑。它们提供了丰富的编辑和操作功能,适合有经验的用户使用。

以上是对 Linux 文件内容查看和编辑的一些常用命令的总结。根据不同的需求和使用场景,我们可以灵活选择合适的命令来处理文件。记住,熟练掌握这些命令将使你在 Linux 系统上更加得心应手!

相关推荐
CircleMouse几秒前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux1 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8241 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维1 小时前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
watermelonoops1 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
滴水之功2 小时前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
ldinvicible2 小时前
How to run Flutter on an Embedded Device
linux
YRr YRr3 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.3 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥3 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器