Pipe

無法管道 SLURM 模組列表命令

  • August 6, 2021

我正在研究 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

似乎該命令將輸出發送到 STDERR 而不是 STDIN。而且因為終端顯示了它們,所以你可以通過這種方式得到東西。要將 STDERR 發送到 STDIN 並能夠過濾命令輸出,您可以使用以下方式:

module list 2>&1 | grep conda

引用自:https://unix.stackexchange.com/questions/663550