*.sortedコマンドとは何ですか?私のbashではなぜ動作しませんか?

*.sortedコマンドとは何ですか?私のbashではなぜ動作しませんか?

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 }'

より良い方法は、次のようにcomm2つのファイルを比較することです。

comm -23 set.sorted printenv.sorted

プロセス置換を使用してファイルを置き換えることができます。

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

ファイルの生成を防ぐには

関連情報