이를 파일에 에코해야 한다고 가정해 보겠습니다.
RZW"a4k6[)b!^"%*X6Evf
어떻게 하나요?
내가 에코하려는 실제 "라인"은 2048개의 문자 라인입니다.
답변1
작은따옴표로 묶어서 입력하세요.
echo 'RZW"a4k6[)b!^"%*X6Evf' > file
그러나 문자열에 작은따옴표가 있는 경우 "'"
다음과 같이 큰따옴표( ) 내의 각 작은따옴표를 이스케이프하고 결과를 함께 "접착"해야 합니다.
echo 'text without single quotes'"'"'and other text without single quote'
답변2
임의 콘텐츠의 경우 다음을 사용할 수도 있습니다.
cat << 'EOF' > file
RZW"a`4$k6[)b!^"'%*X6Evf
RZW"a`4$k6[)b!^"'%*X6Evf
EOF
(콘텐츠에 로만 구성된 행이 포함되어 있지 않은 한 EOF
, 이 경우 다른 구분 기호를 사용할 수 있습니다).
^@
NUL 문자( 일반적으로 사용되거나 Ctrl+VCtrl+Space입력 ) 를 포함하려면 Ctrl+VCtrl+@위의 내용만 적용됩니다 zsh
. 다른 쉘(및 zsh
)을 사용하면 다음을 수행할 수 있습니다.
cat > file
텍스트를 입력하고 완료되면 빈 줄을 클릭합니다 Ctrl+D( Ctrl-D종료되지 않는 줄을 포함하려면 두 번 클릭합니다).
임의적이고 잠재적으로 이진 데이터를 처리하는 또 다른 방법은 다음 uuencode
과 같은 것을 사용하는 것입니다 base64
.
예를 들어:
printf '\0\1\2\3' > file
다음과 같이 쓸 수 있습니다:
uudecode << 'EOF'
begin 644 file
$``$"`P``
`
end
EOF
uuencode file < some-file
some-file
( 특정 콘텐츠가 포함된 곳을 실행하여 얻는 출력 )
답변3
나는 "여기에 문서"를 사용하겠습니다.
cat >my_file <<__EOF__
RZW"a4k6[)b!^"%*X6EvF
__EOF__
쉘이 <<foo
구문을 볼 때 그것이 무엇인지 기억 하고 자체 라인을 볼 foo
때까지 계속 읽습니다 . foo
그런 다음 읽은 모든 내용( . 제외 foo
)을 프로그램의 표준 입력에 전달합니다.
답변4
명령줄 인수로 사용할 항목을 생성하려면 변수(또는 변수에 들어가도록 보장하는 다른 항목)에 넣으세요.단어- 그리고 나서토론) 로 전달되고 printf
bash/ksh93이 나머지 작업을 수행하도록 합니다.
# Reading from stdin
# pbpaste | bash -c '
printf echo\ %q\\n "$(cat)"
# ' | pbcopy
# Then paste it into your script and echo happily.
# Maybe I should use the `read' builtin instead..