Bash

什麼是 *.sorted 命令,為什麼它在我的 bash 中不起作用?

  • March 5, 2018

Bash Guide for Beginners (sec. 3.2.1.2. Local variables ) 中有一個範例命令應該列出所有不在環境變數中的局部變數,或者我認為:

diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'

我相信除了部分之外,我了解有關此命令的所有內容*.sorted。此外,這個命令在我的 Bash 上不起作用,特別是因為上述元素。這是響應(它是No such file or directory的波蘭語版本):

diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu

值得注意的是,我使用 Ubuntu 14.04 幾乎沒有更改其預設安裝。

因此,我無法在我的 Bash shell 中分析此命令,也無法在 Google 上找到有關此命令的任何內容,除了我從中獲取此命令的教程。

我將不勝感激,因為我以前從未遇到過這樣的表達。

它們不是表達式,它們是生成的文件的文件名,如下所示:

printenv | sort > printenv.sorted
set | sort > set.sorted

這在文件中並不清楚,所以你的困惑是可以理解的!

請注意,您可能需要幫助diffgrep強制他們將輸入視為文本(使用-a);環境變數可以包含使它們將輸入視為二進制的值,這不會產生任何有用的東西:

diff -a set.sorted printenv.sorted | grep -a "<" | awk '{ print $2 }'

更好comm的是,用於比較兩個文件:

comm -23 set.sorted printenv.sorted

您可以用程序替換替換文件:

comm -23 <(set|sort) <(printenv|sort)

以避免創建文件。

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