cat是linux命令中最为基础的命令之一,它是“concatenate”(链接)的简写,做用概述是concatenate and print files,即:链接和查看文件内容。linux
常见用法有:post
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
,虽然当时没有直接向他们请教原委,但这个命令给我留下了深入的印象:code
/dev/null
是linux的位桶文件,写入它的内容会永远丢失,从它那里什么也读取不到。通常用法是想丢弃命令产生的标准输出和标准错误时,一般使用command > /dev/null 2>&1
,所以,cat some_data.txt > /dev/null
彷佛没有任何效果。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.字符串
咱们有已知的已知,已知的未知,以及未知的未知。get
https://fulmicoton.com/posts/pagecache/
https://hoytech.com/vmtouch/
https://www.zhihu.com/question/28511196/answer/45604224