Environment-Variables

解密 unix 語句

  • November 17, 2018

我要破譯這裡所說的內容:

export IP=`/sbin/ifconfig | grep 'inet addr:'|grep -v '127.0.0.1'|
   cut -d: -f2 | awk '{print $1}'`

我知道是將IP設置為環境變數,但除此之外,其他一切是什麼意思?

它將列出系統上的所有非環回 IP 地址。假設您在此框上只有一個非環回 IP 地址,它會將系統的 IP 地址導出到環境變數“IP”。

首先一次執行管道一個“部分”。意思是,第一次執行

/sbin/ifconfig

看看它做了什麼。然後執行…

/sbin/ifconfig | grep 'inet addr:'

並從那裡繼續前進。

有很多事情發生。第一的:

export IP=`...`

表示在反引號之間執行命令(不是單引號,要小心)並將其輸出用作名為“IP”的變數的值。“導出”意味著任何子程序都將繼承名為“IP”的變數及其值。

該命令是一個管道,每個標準輸出輸入下一個標準輸入。/sbin/ifconfig生成有關網路介面的資訊列表。ifconfig 的所有輸出行都輸入到grep 'inet addr:'. Grep 只是通過至少部分匹配第一個參數的文本行,一種稱為正則表達式的模式。

該命令grep -v '127.0.0.1'僅傳遞不匹配的文本行。127.0.0.1 是“環回”IP 地址。眾所周知,我們不希望它進入名為“IP”的變數的值。

該命令cut -d: -f2在其輸入中列印每行的第二個欄位。欄位由“:”(分號)分隔。該awk '{print $1}'命令只列印第一個空格分隔的列。

正如 TheDude 所寫,它將所有非環回 IP 地址作為字元串放入 shell 環境變數 IP 的值中。

引用自:https://unix.stackexchange.com/questions/20290