无法通过管道传输 SLURM `模块列表`命令

无法通过管道传输 SLURM `模块列表`命令

我正在开发 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

该命令似乎将输出发送到 STDERR 而不是 STDIN。因为终端显示这两者,所以你可以通过这种方式得到这些东西。要将 STDERR 发送到 STDIN 并能够过滤命令输出,可以使用以下方式:

module list 2>&1 | grep conda

相关内容