
bash 별칭에 이상한 문제가 있습니다. 내 .bashrc에 다음 별칭이 정의되어 있습니다.
alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`'
그러나 rec
쉘에서 별칭을 확장하면 CTRL
ALT
E
다음을 얻습니다.
nano Remember that all constraints must be readded!
별칭을 실행하면 같은 결과가 나타납니다.
nano Remember that all constraints must be readded!
사용하면 which rec
올바른 확장을 얻습니다.
alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`'
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/nano-2.6.3-k2cwz7lwjd4zutb7r7cfo63apevyztuw/bin/nano
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/sort
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/tail
이것은 Remember that all constraints must be readded!
내가 작성한 (아마도) 전혀 관련이 없는 스크립트의 출력입니다. 여기서 무슨 일이 일어나고 있는지 아시나요?
답변1
당신은 구문 분석 중입니다 ls
.너 이러면 안 돼. 나는 그것을 생각한다5월문제의 원인이 되십시오.
예를 들어 slurm-*
파일 이름 중 하나 이상이 다음과 같은 경우:
*\nRemember that all constraints must be readded!
또는
*\nRemember that all constraints must be readded!\n*
\n
개행 문자는 어디에 있고 sort
예상보다 더 많은 줄을 받습니다. 이 파일 이름만:
slurm-0.1.-5\nRemember that all constraints must be readded!
두 개의 라인을 수신 하게 sort
하고 출력에서 Remember …
라인은 라인 뒤에 있게 됩니다 slurm-…
. slurm-*
파일 이름이 정확히 어떻게 생겼는지 모르겠습니다 . 나는 이것이 실제로 일어나는 일인지조차 확신하지 못합니다. 내 요점은 ls
.
또 다른 약한 부분은 에 대한 인수를 인용하지 않는 부분입니다 nano
. 이것은 아마도 현재 문제와 관련이 없지만 nano a b
nano edit a
, then b
, not 을 만든다는 점을 명심하십시오 "a b"
.