命令格式:
cat [-AbeEnstTuv] [--help] [--version] fileName
常用参数:
-n 或 --number:由 1 开始对所有输出的行数编号
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行
// 日常工作中我们可以用来读取文件
cat log.txt
// 读取 log.txt 的数据进行编号并写入到 log1.txt
cat -n log.txt > log1.txt
// 清空 log.txt 文件 注:这个只是为了炫技没有任何用处,劝大家少用
// 在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。
cat /dev/null > log.txt
命令格式:
tail [参数] [文件]
tail log.txt
常用参数:
-f:循环打印正在发生改变的文件,如我们在工作中常用于读取正在程序正在打印的日志文件
tail -f log.txt
-n:命令默认打印文件末尾 10 行数据,可以使用 -n 指定行数
tail -n 20 log.txt // 读取文件末尾 20 行数据
tail -n +20 log.txt // 读取从 20 行开始到末尾的数据
// 这里推荐一个缩写的写法:读取末尾 200 行同时循环打印正在改变的文件
tail -200f log.txt
命令格式:
head [参数] [文件]
// 默认读取文件前 10 行数据
head log.txt
常用参数:
-c<数目> 显示的字节数
-n<行数> 显示的行数
// 显示文件前 20 行
head -n 20 log.txt
// 显示文件前 20 个字节
head -c 20 log.txt
命令格式:
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
more log.txt
常用参数:
-num 一次显示的行数
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
// 比如我们读取文件 log.txt 从第 5 行开始显示 一次显示 10 行 且匹配文件前匹配 nginx 字符串后开始显示
more -10 +3 +/nginx log.txt
命令格式:
less [参数] 文件
命令格式:
grep [参数] pattern [文件]
grep -c 2 'test' log.txt
grep -c 2 'test' log.txt
常用参数:
-i:忽略大小写进行匹配
-v:反向查找,只打印不匹配的行
-r:递归查找子目录中的文件
-l:只打印匹配的文件名
-c:只打印匹配的行数
// 日常我们使用经常的参数有 -i 和 -c , 如实现匹配 log.txt 中 包含 test 字符串(忽略大小写)的行,并展示匹配行的上下两行
grep -i -c 2 'test' log.txt
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用,看着有点绕,我们来看看具体的案例,你会发现也可以使用直接使用正则表达式实现这个功能
// 当我们需要匹配多个关键字时是一个很有用的功能,比如我们可以这样使用:
// 匹配包含 test 或 hello 关键字的行
grep -c 2 -e 'test|hello' log.txt
// 匹配同时包含 test 和 hello 关键字
grep -c 2 -e 'test&hello' log.txt
tail -f log.txt | grep -i 'test'
注:此处 grep 不支持 -c 仅使用 grep 匹配功能
// 或者我们只想匹配前 20 行
head -n 20 log.txt | grep -C 2 -i 'bash'
命令格式:
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
// 用法简单示例
log.txt文本内容如下:
2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
用户刚刚启动 vi/vim,便进入了命令模式。
在命令模式下按下i就进入了输入模式,使用Esc键可以返回到普通模式。
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
命令格式:
find [path] [expression]
expression:是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等,可以使用的选项非常多,这里我举一些常见的示例:
-name pattern:按文件名查找,支持使用通配符 * 和 ?
-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等
-user username:按文件所有者查找
-group groupname:按文件所属组查找
-amin n:查找在 n 分钟内被访问过的文件
-atime n:查找在 n*24 小时内被访问过的文件
-mmin n:查找在 n 分钟内被修改过的文件
-mtime n:查找在 n*24 小时内被修改过的文件
// 查询当前目前及其子目录中下名为 log.txt 的文件
find . -name log.txt
// 将当前目录及其子目录中的所有文件列出
# find . -type f
// 查找 /home 目录下大于 1MB 的文件
find /home -size +1M
你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
保持关注我的博客,让我们共同追求技术卓越。