cat、tail、head、tee。这些命令的语法基本上相同的:命令名 [选项] [文件],而且您可以在管道中使用这些命令。这些命令的功能都是根据特定的条件选择文件内容进行打印。

cat 工具会将文件的全部内容打印到标准输出。这是最常用的命令之一。例如,您可以使用:

# cat /var/log/mail/info    将邮件程序守护程序日志的内容打印到标准输出。cat 命令有一个非常有用的选项(-n),该选项将允许您打印行号。某些文件,如守护程序日志文件(如果相应的守护程序运行了的话)可能非常大,在屏幕上打印全部内容可能没什么必要。您经常只是需要看看一个文件的某几行。您可以使用 tail 命令完成这一功能。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的最后十行:

# tail /var/log/mail/info    您可以使用 -n 选项显示文件的最后 N 行。例如,要显示最后两行,您应该执行:

# tail -n2 /var/log/mail/info

而 head 命令与 tail 十分相似,只是打印文件的头几行。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的头十行:

# head /var/log/mail/info

和 tail 一样,您也可以使用 -n 选项指定要打印的行数。例如,要打印前两行,您应该执行:

# head -n2 /var/log/mail/info

您还可以组合使用这几条命令。例如,如果您想要只显示第九行和第十行,您可以先使用 head 命令选择文件的前十行,然后再将结果通过管道送到 tail 命令。

# head /var/log/mail/info | tail -n2

竖线后面的部分将选择最后两行,然后将其打印到屏幕。同样地,您也可以选择只打印文件的倒数第 20 行:

# tail -n20 /var/log/mail/info |head -n1

在本例中,我们让 tail 选择了文件的最后 20 行,然后将结果通过管道传送给 head。然后 head 命令将会从得到的数据中取出第一行打印到屏幕上。

现在我们假定您想要将上例中的结果在屏幕上显示的同时还保存到文件 results.txt。tee 工具可以帮到我们。其语法是:

tee [选项] [文件]

现在,我们可以将上一命令做如下更改:

# tail -n20 /var/log/mail/info |head -n1|tee results.txt    再来举一个例子。我们想要选择最后 20 行,将其保存到 results.txt,但是只在屏幕上显示这 20 行中的第一行。那么,我们应该输入:

# tail -n20 /var/log/mail/info |tee results.txt |head -n1    tee 命令有一个非常有用的选项(-a),它允许您将数据追加到已有文件。

让我们再回过头来看看 tail 命令。像日志这样的文件应该是在不断变化的,因为与其相关的守护程序每时每刻都在记录着它所执行的动作和发生的事件。所以,如果您想要交互地观看日志文件,您可以使用 -f 选项:

# tail -f /var/log/mail/info    在本例中,/var/log/mail/info 文件的所有更改都会立即打印到屏幕上。当您想要知道您系统的工作原理时,使用带 -f 选项的 tail 命令将非常有用。例如,通过查看 /var/log/messages 日志文件,您可以时刻跟踪系统信息和各种守护程序。

在下一节中,我们将会看到如何将 grep 用作过滤器,以便从来自其它服务的信息中拆出 Postfix 信息。

grep: 定位文件中的字符串

不管是命令的名字还是缩写(“General Regular Expression Parser”)都显得非常古怪,但该命令的作用和用法却很简单:grep 将在一个或多个文件中查找给定的模式。其语法为:

grep [选项] [一个或多个文件]

如果列出了多个文件,将会在每一行结果的开头附加相应的文件名。使用 -h 选项可以不显示这些文件名;使用 -l 选项可以只列出文件名。模式是一个正则表达式,尽管在大多数情况下只是一个简单的单词。下面列出了最常用的几个选项:

-i:进行不区分大小写的搜索;

-v:反转搜索。显示不与模式匹配的行;

-n:显示找到行的行号;

-w:让 grep 在进行模式匹配时匹配整个单词。

让我们回到对邮件守护程序日志文件的分析中。我们想要在 /var/log/mail/info 中找到包含“postfix”模式的所有行。我们就需要输出这个命令:

# grep postfix /var/log/mail/info

grep 命令可用于管道。这样,下面的命令与上面的例子所得到的结果相同:

# cat /var/log/mail/info | grep postfix    如果我们想要找到不与“postfix”模式匹配的所有行,我们就应该使用 -v 选项:

# grep -v postfix /var/log/mail/info

现在,我们假定想要查找关于成功发出的邮件的全部信息。这样,我们需要找到邮件守护程序(包含“postfix”模式)在日志文件中添加的行,而且这些行还必须包含成功发送的信息(“status=sent”):

# grep postfix /var/log/mail/info |grep status=sent

我们在本例中使用了两次 grep。这种方法虽然可以达到我们的目的,但显得有点麻烦。我们可以使用 fgrep 工具达到相同的效果。首先,我们需要创建一个包含需要匹配的模式的文件。这样的文件可以用这种方式来创建(我们使用 patterns.txt 来作为文件名):

# echo -e 'status=sent\npostfix' >./patterns.txt    然后,我们将会用 patterns.txt 文件中的模式列表作为参数调用 fgrep 工具,而不是“两次调用”grep:

# fgrep -f ./patterns.txt /var/log/mail/info    文件 ./patterns.txt 可以包含您喜欢的任意多个模式。每个模式都必须独占一行。例如,要选择已经成功发送给 peter@mandrakesoft.com 的邮件的有关信息,只需将此电子邮件地址添加到 ./patterns.txt 文件,试试这条命令:

# echo'peter@mandrakesoft.com'>>./patterns.txt

显然,您可以将 grep 与 tail 或者 head 组合起来使用。如果我们想要查找上上次发送给 peter@mandrakesoft.com 的邮件,只需输入:

# fgrep -f ./patterns.txt /var/log/mail/info | tail -n2 | head -n1

在 Linux 中,管道连接着一个命令的标准输出和另一个命令的标准输入。我们应该知道我们有的时候会用到类似于“>”,“而管道是进程中类似于重定位用法的一种进程之间的通信过程.让我们考虑一下非常常见的 ls 命令。 ls 有许多可用的选项,但是如果目录的内容卷动速度快得你无法查看时该怎么办呢? 比如/etc目录的文件就不是一屏可以显示完的

当然ls可能有适当的参数来完成我们需要的功能-------分屏显示.但是,如果我们使用管道命令的话更方便也更直观。使用以下命令来查看 /etc 目录的内容:

ls -al /etc    怎样才能在输出卷过屏幕之前仔细查看它们呢?

把输出用管道导入到一个叫做 less 的程序工具。 less 是一个分页显示文件的工具工具,它允许你一页一页(或一个屏幕一个屏幕)地查看信息。使用竖线( | )来把输出用管道导入到命令中。

ls -al /var/html/  | less    现在,你就可以一个屏幕一个屏幕地查看 /etc 目录的内容了。要向前移动一个屏幕,按 [Space] 键;要向后移动一个屏幕,按 键;要退出,按 [q] 键。使用 less 命令时,你还可以使用箭头键来前后移动。要使用 less 来搜索文本文件的输出,按 [/] ,然后键入你想在文件内搜索的内容。

譬如:/grep

管道还可以用来只打印一个文件中的某些行。

键入:grep php test.php | lpr

这将会打印 test.php 文件中提到“php”这个词的每一行.

不仅要查看/lib目录下面有哪些文件,还希望用一个文件来纪录刚才ls的命令显示的所有结果,用两个管道符号:“>” 和“>>”,也就是大于符号啦。

ls /var/html/ >list.txt  还有一个管道符号是由两个大于号组成的“>>”,它和刚才“>”的区别在于一个大于符号的管道是用来创建一个新的文件 list.txt,如果已经有了同名的文件就复盖掉以前的内容;而两个大于符号的管道是用来在已经存在的文件后面追加新的内容,如果没有这个文件就创建它。

现在我们vi list.txt看看一共有多少行,是不是1000多行啊?我们运行

ls /var/html/  >> list.txt  其实这两个管道符号很容易记忆,向左边的箭头意思就是把前面命令的内容输入到后面的文件中去,刚才那个“|”管道符号是用来把前面命令的输出结果当作后面一个命令的输入数据。下面我们看一个和刚才“>>”刚刚相反的管道符号“> test.php << "EOF"  > a

> b

> c

> EOF

运行第一行以后,意思就是把我们接下来的输入内容保存到test.php文件里面,当我们输入“EOF”的时候结束。“

linux 查看 管道文件,linux 查看文件和管道命令相关推荐

  1. linux 筛选文件,「Linux基础知识」grep文件内容筛选命令的使用

    原标题:「Linux基础知识」grep文件内容筛选命令的使用 grep命令用于从文档中抓取显示包含指定字符的行,grep命令的使用格式如下: grep [选项] 匹配模式 文件1 文件2 ...... ...

  2. Linux之复制、移动文件及目录命令

    Linux之复制.移动文件及目录命令 1. 复制.移动文件及目录命令的使用 命令 说明 cp 拷贝文件.拷贝目录 mv 移动文件.移动目录.重命名 cp命令效果图: 说明: 拷贝目录需要加上-r选项, ...

  3. linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...

    文件操作相关命令 文件操作相关命令 1.创建文件夹mkdir 2.创建文件touch 3.移动文件夹mv(类似于剪切) 4.删除rm 5.重命名mv 6.复制cp 7.查看文件(cat.head.ta ...

  4. Linux入门时必学文件处理个命令

    Linux系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小等.文件可以是一封信.一个通讯录,或者是程序的源语句.程序的 ...

  5. linux的垃圾箱是哪个文件夹,Ubuntu命令行的垃圾箱Trash CLI,远离 rm 命令误删除重要文件的阴影...

    原标题:Ubuntu命令行的垃圾箱Trash CLI,远离 rm 命令误删除重要文件的阴影 作为Linux用户,您可能需要不时从系统中删除文件.我们在删除文件时往往会保持谨慎,特别是在永久删除文件时, ...

  6. Linux下利用ssh远程文件传输 传输命令 scp

    在linux下一般用scp这个命令来通过ssh传输文件. 一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进 ...

  7. Linux之创建、删除文件及目录命令touch、echo、mkdir、rm、rmdir

    1. 创建.删除文件及目录命令的使用 命令 说明 touch 文件名    [可以没有后缀,默认为文本文件(没有后缀)] 创建指定文件 mkdir 目录名 创建目录(文件夹) rm 文件名或者目录名 ...

  8. linux 控制台模拟双击打开文件之xgd-open 命令----创建快捷方式

    参考原文链接:https://www.cnblogs.com/zqb-all/p/10666474.html xdg-open用法非常简单,就直接参数传入要打开的文件,等效于鼠标双击打开,系统会根据文 ...

  9. 在Win10下解压linux压缩包,Win10如何解压缩文件?win10使用命令行来解压缩文件的方法...

    电脑的硬盘空间是有限的,如果你的硬盘空间比较紧张,解压缩文件不失为一个好方法.,Win10如何解压缩文件呢?其实和ZIP文件压缩或者RAR文件压缩相比,使用命令行来解压缩文件会方便的多,因为你不需要创 ...

最新文章

  1. ❤️Spark的关键技术回顾,持续更新!【推荐收藏加关注】❤️
  2. python泰坦尼克号数据预测_使用python预测泰坦尼克号生还
  3. matlab 变调器,关于变声变调的matlab设计 比较详细
  4. python函数降低编程复杂度_Python重构此函数,将其认知复杂度从19降低到允许的15...
  5. 轻量化网络:MobileNets
  6. 如何减少返工工作量?
  7. 万兆网文件服务器,万兆以太网网卡网吧服务器中的应用
  8. 3D Touch大法
  9. mac解决mysql忘记密码的问题(亲测有效)
  10. int和字符串的类型转换
  11. hash,hashcode,hashmap以及bucket怎么理解
  12. 游戏编程入门(10):播放数字声音效果
  13. 达梦数据库使用心得达梦数据同步软件DMHS
  14. 《让时间陪你慢慢变富》读书笔记
  15. EIGamal 密码体制描述
  16. 每一个程序员需要了解的10个Linux命令
  17. 离线数据分析平台实战驴妈妈项目实战(完整)
  18. 银行智能案防:以“AI技防”堵住违规漏洞
  19. 删除stale状态远端分支
  20. jfreechart柱状图+折线图

热门文章

  1. 白手起家需具备的条件
  2. Bloch定理 and Wannier Function
  3. 原创作品-Remix一键刷机工具
  4. 计算机组成原理微代码的修改,计算机组成原理实验七脱机方式下微代码装入与执行实验.doc...
  5. oracle日期格式化mm和mi
  6. 京东健康持续加码“宠物”赛道的背后
  7. element el-table 展开行隐藏小箭头
  8. java tlv生成,TLV格式数据JAVA编解码
  9. chatgpt赋能python:Python实现微信聊天记录的方法
  10. 计算机本省 9588错误代码,win10系统共享打印机报错提示错误代码0x0000052e的解决步骤...