在Bash初学者指南(第3.2.1.2节。局部变量)中,有一个示例命令应该列出所有不在环境变量中的局部变量,或者我认为:
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
从文档中尚不清楚,因此您的困惑是可以理解的!
请注意,您可能需要帮助,diff
并grep
迫使他们将其输入视为文本(带有-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)
避免创建文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句