Shell 不了解(管道)在unix中的用法
我正在我的大学学习“操作系统”考试,我很难理解管道的用法(|)。 以下是我在互联网上找到的一个例子: ps-ax | grep FinderShell 不了解(管道)在unix中的用法,shell,unix,pipe,Shell,Unix,Pipe,我正在我的大学学习“操作系统”考试,我很难理解管道的用法(|)。 以下是我在互联网上找到的一个例子: ps-ax | grep Finder 使用ps命令获取系统上运行的进程列表,并将该列表传递给grep以搜索包含“Finder”的行。(通常,它会找到两个:Finder和执行grepfinder的进程。) 如果我先写ps-ax,然后在下一行grep finder,会怎么样?它不会有同样的结果吗?为什么我要把它们连在一起 ps:unix shell命令的BigEnginer及其工作原理。unix是
使用ps命令获取系统上运行的进程列表,并将该列表传递给grep以搜索包含“Finder”的行。(通常,它会找到两个:Finder和执行grepfinder的进程。) 如果我先写
ps-ax
,然后在下一行grep finder
,会怎么样?它不会有同样的结果吗?为什么我要把它们连在一起
ps:unix shell命令的BigEnginer及其工作原理。unix是一个基于文件的系统。除非您指定要重定向输出的位置,否则它将显示在屏幕上 因此,如果您键入
ps ax
,它将在屏幕上列出所有正在运行的进程。
因此,如果您先键入ps ax
,然后键入grep
,那么您将得到所有过程,然后您将得到错误,因为grep
至少需要两个参数,关键字
和文件名
所以你必须做两个步骤
ps ax > filename
grep finder filename
这会给你结果
Pipe|
将输出作为文件从左侧重定向到右侧命令。因此,您可以合并这两个步骤
因此,您可以说,ps ax | grep finder
,而不是上述所有内容,它将把ps ax
的输出作为文件传递给grep
命令
注意,通过这种方式,您没有直接为
grep
指定文件名。相反,您告诉它使用ps ax的输出作为文件Unix是一个基于文件的系统。除非您指定要重定向输出的位置,否则它将显示在屏幕上
因此,如果您键入ps ax
,它将在屏幕上列出所有正在运行的进程。
因此,如果您先键入ps ax
,然后键入grep
,那么您将得到所有过程,然后您将得到错误,因为grep
至少需要两个参数,关键字
和文件名
所以你必须做两个步骤
ps ax > filename
grep finder filename
这会给你结果
Pipe|
将输出作为文件从左侧重定向到右侧命令。因此,您可以合并这两个步骤
因此,您可以说,ps ax | grep finder
,而不是上述所有内容,它将把ps ax
的输出作为文件传递给grep
命令
注意,通过这种方式,您没有直接为grep
指定文件名。相反,您告诉它使用ps ax的输出作为文件否,在您上面提到的两种情况下,结果将不一样。试试看
ps-ax本身会将其结果发送到标准输出。
grep Finder本身根本不起作用
创建可用于进程间通信的单向数据通道。因此,ps-ax | grep finder
,本质上是将ps-ax
的输出作为输入流重定向到grep finder
命令,该命令反过来搜索该流中的字符串“finder”。不,在上述两种情况下,结果不相同。试试看
ps-ax本身会将其结果发送到标准输出。
grep Finder本身根本不起作用
创建可用于进程间通信的单向数据通道。因此,ps-ax | grep finder
,本质上是将ps-ax
的输出作为输入流重定向到grep finder
命令中,该命令反过来在该流中搜索字符串“finder”。这一切都是关于重定向输入和输出的
如果要键入ps-ax>进程
,您将创建包含所有进程列表的文件进程
。这是重定向输出。所有显示在屏幕上的数据都被写入一个文件
如果要键入grepfinder
,您将在文件processes
中搜索单词Finder。这是重定向输入
管道两者兼而有之。它在左侧重定向命令的输出,在右侧重定向命令的输入
$ ps -ax | grep Finder
就像
$ ps -ax > temp
$ grep Finder < temp
$ps-ax>temp
$grep Finder
除了在一行中没有要删除的临时文件之外,其他都是关于重定向输入和输出的
如果要键入ps-ax>进程
,您将创建包含所有进程列表的文件进程
。这是重定向输出。所有显示在屏幕上的数据都被写入一个文件
如果要键入grepfinder
,您将在文件processes
中搜索单词Finder。这是重定向输入
管道两者兼而有之。它在左侧重定向命令的输出,在右侧重定向命令的输入
$ ps -ax | grep Finder
就像
$ ps -ax > temp
$ grep Finder < temp
$ps-ax>temp
$grep Finder
除了一行中没有要删除的临时文件之外。“如果我先写ps-ax,然后在下一行写grep finder,会不会有相同的结果?”你为什么不试试呢?我在电脑上运行putty是为了有一个类似unix的环境,目前我无法连接到它,有时会连接到它。当我可以的时候,我会尝试它。你也可以在像VirtualBox这样的虚拟机上运行Linux——如果你被迫使用Windows,这非常方便。“如果我先编写ps-ax,然后在下一行grep finder,会不会有相同的结果?”你为什么不试试呢?我在我的pc上运行putty,以获得一个类似unix的环境,目前我无法连接到它,有时会连接到它。当我可以的时候,我会尝试它。你也可以在VirtualBox这样的虚拟机上运行Linux——如果你被迫使用Windows,它会非常方便。