명령 뒤에 입력하는 모든 내용을 원시 문자열로 처리할 수 있나요?

명령 뒤에 입력하는 모든 내용을 원시 문자열로 처리할 수 있나요?

나는 tree_hole 파일에 몇 가지 단어를 넣을 수 있도록 bash 함수를 만들었습니다. bashrc에서는 다음과 같습니다.

function th { echo -e "\n$@" >> /Users/zen1/zen/pythonstudy/tree_hole; }
export -f th

따라서 th Tom, I like your new laptop전체 "Tom..." 문장을 tree_hole 파일 끝까지 표시할 수 있습니다.

하지만 문제가 있습니다. 이 함수는 변수의 모든 부분을 원래 문자열로 변환하지 않는 것 같습니다. 따라서 예상 되는 대신 누락이 th "hi, Tom"발생합니다 . 또한 bash에서 잘못 해석되어 더 많은 입력이 필요한 단일 또는 `를 입력할 수 없습니다 .hi Tom"hi, Tom""'"

그렇다면 명령 다음에 나오는 내용을 원시 문자열로 입력할 수 있는 방법이 있습니까? 아니면 특별한 "` 문제를 해결하려면 어떻게 기능을 개선해야 할까요?'

답변1

당신이 원하는 것은 불가능합니다. 쉘 동작이 마음에 들지 않지만 쉘 동작의 이 부분은 변경할 수 없습니다.

나는 이것이 당신에게 더 잘 작동할 것이라고 생각합니다:

function th { { echo; cat; } >> /Users/zen1/zen/pythonstudy/tree_hole; }

함수는 인수 없이 호출됩니다. cat표준 입력에서 읽고 파일에 추가합니다. 터미널에서 입력할 수 있는 모든 항목을 입력할 수 있습니다(예: ", ', , 개행 문자 등 문제 없음). Ctrl- 로 입력을 끝낼 수 있습니다 D.

관련 정보