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