SLURMクラスターを開発しており、ロードされたすべてのソフトウェアモジュールを一覧表示するコマンドがあります。特定の単語を見つけるために出力、つまりgrepを処理したいです。ただし、パイプを使用しようとすると、理解できない予期しない出力が発生します。
$ module list
Currently Loaded Modules:
1) miniconda3-4.8.2-gcc-8.3.1-altn3cq
$ which module
module ()
{
eval $($LMOD_CMD bash "$@") && eval $(${LMOD_SETTARG_CMD:-:} -s sh)
}
$ module list | wc -l
Currently Loaded Modules:
1) miniconda3-4.8.2-gcc-8.3.1-altn3cq
0
$ module list | grep conda
Currently Loaded Modules:
1) miniconda3-4.8.2-gcc-8.3.1-altn3cq
したがって、なぜ出力をパイプできないのか疑問に思います。module list
ベストアンサー1
このコマンドは、STDINの代わりにSTDERRに出力を送信するようです。端末には両方が表示されるため、このようにしてこの情報を取得できます。 STDERR を STDIN に送信してコマンド出力をフィルタリングするには、次のようにします。
module list 2>&1 | grep conda