echo 명령과 리디렉션 연산자를 사용하여 파일을 만들려면 파일을 몇 줄로 만들어야합니다.
문자열 안에 "\ n"으로 줄 바꿈을 포함하려고했습니다.
echo "first line\nsecond line\nthirdline\n" > foo
그러나이 방법으로 세 줄의 파일은 만들지 않지만 한 줄과 문자열의 내용 만있는 파일이 만들어집니다.
이 명령 만 사용하여 여러 줄의 파일을 어떻게 만들 수 있습니까?
echo 명령과 리디렉션 연산자를 사용하여 파일을 만들려면 파일을 몇 줄로 만들어야합니다.
문자열 안에 "\ n"으로 줄 바꿈을 포함하려고했습니다.
echo "first line\nsecond line\nthirdline\n" > foo
그러나이 방법으로 세 줄의 파일은 만들지 않지만 한 줄과 문자열의 내용 만있는 파일이 만들어집니다.
이 명령 만 사용하여 여러 줄의 파일을 어떻게 만들 수 있습니까?
답변:
다음 echo
명령으로 몇 가지 구문을 사용하도록 요청했습니다 .
echo $'first line\nsecond line\nthirdline' > foo
(그러나 당신이 얻은 다른 대답도 고려하십시오.)
이 $'...'
구문은 임베디드 ANSI 이스케이프 시퀀스를 확장합니다.
echo가 문자 이스케이프와 관련이있는 것은 구현 정의입니다. 대부분의 현대 에코를 포함하여 많은 에코 구현에서 전달 된 문자열은 기본적으로 이스케이프를 검사하지 않습니다.
GNU bash에서 제공하는 에코 (내장) 및 다른 에코 변형을 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
echo -en 'first line\nsecond line\nthird line\n' > file
그러나 실제로 printf
는 원하는 것처럼 들리므로 내 눈에 더 잘 보이고 휴대하기도 쉽습니다 (POSIX에서 정의한이 기능이 있음).
printf '%s\n' 'first line' 'second line' 'third line' > file
here 문서 사용을 고려할 수도 있습니다 .
cat > file << 'EOF'
first line
second line
third line
EOF
echo -en 'text..'
허용 대답은 내 개행 문자 (인식하지 않은 반면, \n
)의는 echo -en
않았다.
echo
명령을 사용하여 여러 줄 파일을 만드는 다른 방법은 다음과 같습니다 .
echo "first line" > foo
echo "second line" >> foo
echo "third line" >> foo
여기서 두 번째 및 세 번째 명령은 경로 >>
재 지정 연산자를 사용하여 명령 의 출력이 파일에 추가 (추가)됩니다 (이 시점까지 이미 존재해야 함).
또는
(echo "first line"; echo "second line"; echo "third line") > foo
여기서 괄호는 echo
명령을 하나의 하위 프로세스로 그룹화합니다. 이 프로세스는 여러 줄을 출력하는 단일 프로그램처럼 보입니다 ( ls
예 : 등).
위의 미묘한 변형은
{ echo "first line"; echo "second line"; echo "third line";} > foo
이것은 하위 프로세스를 만들지 않는다는 점에서 두 번째 답변보다 약간 더 효율적입니다. 그러나 구문이 약간 까다로워집니다. {
및 뒤에 세미콜론 뒤에 공백이 있어야 합니다 }
.
셸의 제어 및 리디렉션 연산자 란 무엇입니까?를 참조하십시오 . 자세한 내용은.
POSIX 7은 할 수 없다고 말합니다
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
정의되지 않고 백 슬래시는 구현 정의입니다.
첫 번째 피연산자가 -n이거나 피연산자 중 하나에 <backslash> 문자가 포함 된 경우 결과는 구현 정의됩니다.
선택적 XSI 확장이없는 한.
따라서 printf
대신 사용하십시오.
형식 피연산자는 XBD 파일 형식 표기법 [...]에 설명 된 형식 문자열로 사용됩니다.
파일 형식 표기 :
\ n <newline> 인쇄 위치를 다음 줄의 시작 부분으로 이동하십시오.
또한 Ubuntu 15.10과 대부분의 배포판 echo
은 다음과 같이 구현 됩니다.
help echo
which echo
혼동을 일으킬 수 있습니다.
echo
시스템에서 사용할 수있는 모든 쉘에 내장. 우분투에서 / bin / sh는 일반적으로 대시이며 bash는 기본적으로 제공됩니다. zsh, rc, mksh, yash, csh, tcsh, ksh93 ...은 모두 서로 다른 동작을 가진 자체 반향을 갖습니다. 주 which echo
당신에게 시스템의 경로를 제공하지 않습니다 모든 쉘에 에코.
which
원래 (80 년대) csh 사용자를위한 csh 스크립트 (~ / .cshrc에서 별명을로드 함) 였지만 여전히 일부 시스템에 있습니다. which
zsh 및 tcsh에 내장되어 있습니다.