用 cat、head 和 tail 显示文件内容,然后把输出捕获到一个文件里。
在 Kodokon 中打开本课你并不总是需要打开一个编辑器,才能瞄一眼某个文件。cat 命令会把它的内容直接打印到终端里。它的名字来自 concatenate,意思是“首尾相接”,因为它也能把好几个文件一个接一个地显示出来。它是小文件的理想工具:最多几十行的那种。
yoann@laptop:~/my-project$ cat shopping.txt
Bread
Cheese
Tomatoes
yoann@laptop:~/my-project$ cat shopping.txt notes.txt
Bread
Cheese
Tomatoes
Do not forget the Saturday market面对一个一万行的文件,cat 会让屏幕滚动十秒钟,而你只来得及看见结尾。还有两条更精细的命令:head 显示文件的开头,tail 显示文件的结尾。两者默认都显示 10 行,而 -n 选项让你自己决定行数。tail 配上 -f 选项(follow,跟随)就有了超能力:它会一直开着,并在新行到达的同时把它们打印出来。人们正是这样实时盯着服务器日志的。
head server.log
head -n 5 server.log
tail -n 20 server.log
tail -f server.log默认情况下,命令把结果写到屏幕上。但你可以把这个结果引流到一个文件里,就像把水管里的水引进水桶一样。这就是重定向,它用一个尖括号来书写。单个尖括号 > 把输出送进文件,并覆盖掉它原有的内容。双尖括号 >> 则追加到末尾,什么都不擦掉。这一个字符的差别,改变的是全部。要在不整个打印出来的前提下检查你刚生成的东西,wc 命令(word count,字数统计)配上 -l 选项(lines,行)能数出一个文件有多少行。
yoann@laptop:~/my-project$ echo "My first line" > notes.txt
yoann@laptop:~/my-project$ echo "My second line" >> notes.txt
yoann@laptop:~/my-project$ cat notes.txt
My first line
My second line
yoann@laptop:~/my-project$ ls -l > inventory.txt
yoann@laptop:~/my-project$ wc -l inventory.txt
7 inventory.txtcat 命令是用来做什么的?> 和 >> 有什么区别?> 追加到末尾,>> 覆盖文件> 覆盖文件,>> 追加到末尾server.log 的最后 20 行?