情景linux—不曾了解的cat用法

作者: 软件测试技能栈 | 来源:发表于2018-03-04 15:52 被阅读20次

情景

cat是linux命令中最为基础的命令之一,它是“concatenate”(连接)的简写,作用概述是concatenate and print files,即:连接和查看文件内容。

常见用法有:

  • 查看单个文件:cat file1
  • 顺序查看多个文件:cat file1 file2 ...

一般cat会结合重定向符号(重写>、追加>>)使用,如常见的用法有:

  • 将一个文件的内容追加到另一个文件中:cat file1 >> file2
  • 合并多个文件产生新文件:cat file1 file2 > newfile
  • 用键盘输入创建一个新文件:cat << EOF > file3
$ cat << EOF > file3
> a
> b
> c
> EOF

>是命令行的提示符,不是你需要输入的内容。当输入“EOF”按回车后命令自动结束。

$ cat file3
a
b
c

cat命令本身也支持参数,但用法简单,功能单一,感兴趣的话可以自行man cat
cat还可以通过管道符“|”连接其它命令,但许多时候cat并不是必需的:
想知道文件的行数,可以使用cat file1 | wc -l,但wc -l file1一样可以做到。
想过滤文件中特定的字符串,可以使用cat file2 | grep "some string",但grep "some string" file2一样可以做到。

突破

在搜索引擎项目工作时,看到过研发工程师在调试问题时这样使用了cat——他们启动服务后,使用了命令cat some_data.txt > /dev/null,虽然当时没有直接向他们请教原委,但这个命令给我留下了深刻的印象:

  1. /dev/null是linux的位桶文件,写入它的内容会永远丢失,从它那里什么也读取不到。一般用法是想丢弃命令产生的标准输出和标准错误时,通常使用command > /dev/null 2>&1,因此,cat some_data.txt > /dev/null似乎没有任何效果。
  2. 当时观察到cat some_data.txt > /dev/null这个命令的执行时间非常长,这说明了some_data.txt这个文件也足够大。但第二次执行这个命令时,执行时间则大大缩减了。

由以上大致可以判断出,该用法是为了将文件内容导入到内存中,以便需要使用文件内容时能够快速获取。一般来说,从硬盘中读取数据需要5ms到10ms的时间,而从内存中读取数据时通常只需要50ns到100ns的时间,这就是page cache(页高速缓冲存储器)的作用。

总结

这个经历给我的体会是,许多时候,我们认为自己掌握了全部或绝大部分,而实际上,只是因为自己知道的太少,并且不认为自己知道的太少——我们压根不觉得是因为自己不知道。就像美国前国防部长拉姆斯菲尔德说过的那样:

because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns - the ones we don't know we don't know.

我们有已知的已知,已知的未知,以及未知的未知。

相关链接

https://fulmicoton.com/posts/pagecache/
https://hoytech.com/vmtouch/
https://www.zhihu.com/question/28511196/answer/45604224

相关文章

  • 情景linux—不曾了解的cat用法

    情景 cat是linux命令中最为基础的命令之一,它是“concatenate”(连接)的简写,作用概述是conc...

  • 如何将多个小分子文件合并为单个

    开年第一篇: (1)linux系统下直接输入使用cat命令 具体用法: cat 小分子文件名 > 单个小分子的文件...

  • 打印文件中指定的内容

    如题所示,常常用于筛选出nginx日志中指定的内容需要结合cat,sort,awk,uniq关于linux用法,大...

  • cat

    [翻译] cat command in Unix/Linux Cat(concatenate) 在linux中经常...

  • Linux 命令20200415

    LINUX 命令 linux - cat 和 tail 区别 cat 命令 和tail命令都是显示数据的命令cat...

  • Linux下cat命令的基本用法

    cat是一个Linux命令,用于把文件的内容显示在终端。它可以同时显示多个文件的内容,并且可以与其他命令结合使用来...

  • 文件管理命令-cat

    命令:cat(concatenate) 用途:连接打印文件 常用用法: cat file : 打印文件内容cat ...

  • 介绍一些命令的用法

    介绍常用命令ls、cat、mv、touch的用法 本文章会通过在Linux上的tldr来对上述命令进行解释 1.l...

  • 2019.08.29 360搜索golang一面凉

    1.linux下使用cat /b/a.txt,linux如何知道cat的是文件而不是目录linux下普通文件和目录...

  • linux,vim和bash命令小册

    linux命令 linux的文本查看命令共有cat,more,less,head,tail这5个命令。cat是输出...

网友评论

    本文标题:情景linux—不曾了解的cat用法

    本文链接:https://www.haomeiwen.com/subject/rtxqfftx.html