2014-02-21 105 views
0

我對使用python中的管道|感到有點困惑。我需要深入解釋它的意義。用戶請賜教我這一點。在Linux中使用管道(|)

假設我發出了一個命令ps aux | grep python,那麼它顯示了在機器上運行的python進程。我理解它,但我需要一個分析和詳細的知識。請幫助我。

+0

也許會做一點[搜索](http://en.wikipedia.org/wiki/Pipeline_%28Unix%29)? – vanza

回答

1

你列出的這個命令是一個shell命令,而不是任何與Python有關的東西。您在說:

「運行命令ps aux,而不是向我顯示結果,將結果作爲輸入提供給grep python」。換句話說,「將第一個命令的輸出傳送到第二個命令的輸入」。

grep接受輸入並顯示輸入中包含參數grep後面的所有行。因此grep python顯示ps aux中包含單詞python的所有行。

這裏的Python沒有以任何方式被調用 - 你只是在對ps aux中的字符串python進行過濾。

+0

是的,我也想象你解釋的一樣。現在,我被證實非常感謝:) – Anand

2

首先,當您運行ps aux | grep python時,它不是Python,而是通常位於bash shell中的unix。其次,管道操作員意味着您正在獲取第一個函數的輸出並將其輸入到第二個函數中。

在這種情況下,您將從ps aux中獲取流程列表的結果,並使用grep python找到與Python相關的任何內容。 grep命令意味着您要在ps輸出的進程列表中搜索字符串「python」。

+0

可以閱讀這個描述來暗示操作順序,其中第一個進程的所有輸出在第二個進程接收到任何輸入之前被讀取(「取得」)。可能值得澄清的是,情況並非如此 - 這兩個過程都是在同一時間開始的,並且在第一個過程中寫入的過程直接發生在後一個過程中。 –

+0

誠然,謝謝澄清。 – panoptical

0

|作品兩個聲明ps auxandgrep python

所以,當你鍵入ps aux | grep python它將返回兩個聲明共同作用的結果。