어떤 종류의 해석 없이 제공한 내용만 인쇄하는 Linux 애플리케이션이 있습니까? 그럼 내가 무엇을 보내든 항상 내가 보낸 내용이 정확히 출력된다는 건가요?
echo
나는 기능을 갖고 있지만 printf
설명하지 않는 것과 \
그 밖의 모든 것을 원합니다.
내가 원하는 애플리케이션 유형은 다음과 같습니다.
newcommand "sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" ' > testfile1
cat testfile1
"sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" '
이 기능이 포함된 프로그램을 찾을 수 없습니다. 기본적으로 "
및 를 포함한 모든 위치 인수는 있는 그대로 출력됩니다 '
. 있는 그대로 출력되지 않는 유일한 것은 |<>
명백한 이유 때문입니다.
좋습니다. 제가 원하는 것의 더 나은 예는 다음과 같습니다.
나는 명령줄에서 한 줄로 수행할 수 있는 작업을 원합니다. nano
또는 vi
전체 텍스트 줄을 작성하여 수행할 수 있습니다.
답변1
이는 쉘 구문의 일부 "
이며 \
명령에 전달되는 항목이 아니며 명령은 이를 사용하여 아무 작업도 수행할 수 없습니다.
이것
printf %s 'foo " bar' "bar ' baz" > file
명령줄은 sh
언어의 코드(공백,,, '
문자가 특정 의미를 "
가짐 )이며 유틸리티에 전달되는 줄이 >
아닙니다 .printf
쉘은 이를 인수로 printf
와 함께 실행되는 것으로 해석 하고 표준 출력은 로 리디렉션됩니다 .%s
foo " bar
bar ' baz
file
보이는 것은 인수 목록뿐이며 해당 인수 목록을 사용하여 호출하는 데 사용된 셸 코드(또는 셸이 아닌 Python에서 호출된 경우 Python 코드)는 printf
표시되지 않습니다 . 이들 각각은 설명 없이 인쇄되므로 가 포함 됩니다 .printf
printf %s
file
foo " barbar ' baz
여기서는 또 다른 쉘 구문 구조인 here-document를 사용할 수 있습니다. 여기서 문서 구분 기호가 인용되어 있으며 이 경우 해석이 수행되지 않습니다.
cat << 'EOF' > testfile
"sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" '
EOF
텍스트에 대한 유일한 제한 사항은 다음과 같습니다.
- 다음을 제외하고
zsh
NUL 바이트를 포함할 수 없습니다. EOF
자체 줄에 포함될 수 없습니다 (필요한 경우 다른 구분 기호를 사용할 수 있음).- 텍스트가 비어 있지 않으면 후행 줄 바꿈이 항상 추가됩니다.
또는 다음을 실행할 수 있습니다.
cat > file
그 후에는 cat
더 이상 사용자 입력을 받아들이는 쉘이 아니며 원하는 것을 입력하고 끝낼 수 있습니다 Ctrl+D.
해커로서 여러분은 쉘이 주석의 텍스트를 해석하지 않고 저장된 기록에서 명령줄을 검색하여 출력한다는 사실에 의존할 수 있습니다 #
. 예를 들어, bash
쉘 상호 작용을 사용합니다.
fc -l -0 | cut -d '#' -f3- > testfile #the text here with \ ' "
답변2
Linux 전용 응용프로그램은 아니지만cat
인수 없이 실행하면 다음과 같은 작업이 수행됩니다. 표준 입력을 변경하지 않고 표준 출력에 복사합니다.