Bash에 다음 명령을 입력하면:
echo "dog!!"
문자열을 이해하지 못합니다 dog!!
. 대신 다른 걸 얻었어요.
"dog!!"
문자열을 에코하려고 시도했지만 "dog\!\!
작동하지 않았습니다.
느낌표가 두 개 있을 때 명령 매개변수를 사용하는 방법은 무엇입니까?
이 느낌표를 특별한 기능 없이 느낌표로 처리하고 싶습니다.
느낌표 두 개가 "!!"
마지막 명령인 것 같습니다.
답변1
느낌표를 피하거나 다음을 사용해야 합니다.하나의인용 부호:
echo dog\!\!
echo 'dog!!'
(귀하의 것이 작동하지 않는 이유를 설명하지는 않지만 echo "dog\!\!"
작동해야 하며 왜 작동하지 않는지 모르겠습니다. 또는 적어도 기록에서 작동해서는 안 됩니다. Bash에서는 인쇄됩니다 dog\!\!
.)
답변2
Bash에서 느낌표를 항상 일반 문자로 처리하고 기록 확장이 필요하지 않게 하려면 현재 셸에서 이를 비활성화할 수 있습니다.
set +o histexpand
또는 다음 명령을 추가하십시오.일반적으로 사용되는 구성 파일, 즉 .bashrc
모든 쉘에 대해 비활성화할 가능성이 높습니다.
답변3
존재하다리눅스 민트 18.1Ubuntu 16.04 기반:
bash --version | head -1
GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)
동작은 다음과 같습니다.
echo dog\!\!
결과 :
dog!!
echo 'dog!!'
결과 :
dog!!
echo "dog!!"
갑자기 인쇄됨개다음은 최종 명령입니다. 예를 들어 ls
이전에 이 작업을 수행했다면 다음과 같이 인쇄됩니다.
echo "dogls" dogls
존재하다GNU/리눅스 데비안 9 확장약간 더 새로운 버전이 있습니다:
bash --version | head -1
GNU bash, version 4.4.11(1)-release (x86_64-pc-linux-gnu)
동작은 다음과 같습니다.
echo dog\!\!
결과 :
dog!!
echo 'dog!!'
결과 :
dog!!
echo "dog!!"
갑자기 인쇄됨개다음은 최종 명령입니다. 예를 들어 ls
이전에 이 작업을 수행했다면 다음과 같이 인쇄됩니다.
echo "dogls" dogls
이것은 나에게 일관된 것 같습니다.
이전 버전이 설치된 이전 시스템에서는 bash
약간 다르게 동작할 수 있습니다. 그러나 새로운 시스템에서는 이러한 동작을 예상할 수 있습니다.