中Bash初心者ガイド(第二。3.2.1.2.ローカル変数)環境変数にないすべてのローカル変数をリストする必要があるコマンド例があります。
diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'
私はこの部分を除いて、このコマンドに関するすべてを理解したと思います*.sorted
。また、このコマンドは特に上記の要因のため、私のBashでは機能しません。答えは次のとおりです(ポーランド語版です)。そのファイルやディレクトリはありません。):
diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu
基本インストールがほとんど変更されていないUbuntu 14.04を使用していることは注目に値します。
したがって、Bash シェルではこのコマンドを解析できず、このコマンドを提供したチュートリアル以外に、Google でこのコマンドに関する情報を見つけることもできません。
以前はこの表現に触れたことがなかったので、包括的な説明に感謝します。
答え1
これは式ではなく、次のように生成されたファイルのファイル名です。
printenv | sort > printenv.sorted
set | sort > set.sorted
これは文書に明確に記載されていないので、混乱を理解することができます!
diff
入力をテキストとして扱うのに役立ちますgrep
(-a
)。環境変数には、入力をバイナリとして扱わせる値を含めることができますが、これは有用なものを生成しません。
diff -a set.sorted printenv.sorted | grep -a "<" | awk '{ print $2 }'
より良い方法は、次のようにcomm
2つのファイルを比較することです。
comm -23 set.sorted printenv.sorted
プロセス置換を使用してファイルを置き換えることができます。
comm -23 <(set|sort) <(printenv|sort)
ファイルの生成を防ぐには