![쉘 스크립트를 사용하여 특정 내용이 포함된 파일을 만드는 방법은 무엇입니까? [복사]](https://linux55.com/image/130218/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8A%B9%EC%A0%95%20%EB%82%B4%EC%9A%A9%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
쉘 스크립트에서 특정 내용이 포함된 파일을 생성해야 합니다. 어떻게 해야 합니까? 을 사용하여 수행할 수 있습니까 cat
?
답변1
이 작업은 cat
다음 문서를 통해 수행할 수 있습니다.
cat >outfilename <<END_FILE
this is the contents of the file
la-di-da!
END_FILE
여기의 문서는 <<END_FILE
과 끝의 해당 문서 사이의 내용입니다. END_FILE
끝은 END_FILE
줄의 유일한 단어여야 하며 줄의 시작 부분에 위치해야 합니다. 단어는 END_FILE
임의의 단어(예: END_CONFIG_FILE
또는 WHEN_WILL_SUMMER_COME
또는 의미 있는 단어)일 수 있습니다.
변수가 문서에서 확장됩니다. 필요하지 않은 경우 여기에서 첫 번째 문서 구분 기호를 인용하세요.
cat >outputfilename <<'MY_DOC'
another here document thingy
The $PATH variable will not be expanded here
MY_DOC
기술적으로 여기에 있는 문서는 다음과 같습니다.리디렉션위의 예에서는 이를 cat
명령으로 리디렉션합니다. 이 cat
명령은 표준 출력 리디렉션을 사용하여 지정된 파일로 전달합니다.
태그된 질문도 참조하세요.여기 문서이 웹사이트에서.
댓글 중에서: “알겠습니다.허가가 거부되었습니다그리고 sudo
도움이 안 돼”
예, 디렉터리에 대한 쓰기 권한이 없으면 출력 파일로 리디렉션할 수 없습니다. 또한 sudo
호출 전에도 출력 파일 생성이 발생하므로 이를 사용하는 것은 sudo
도움이 되지 않습니다.
넌 할 수있어
sudo tee outputfilename >/dev/null <<MY_DOC
contents of file
goes here
MY_DOC
이는 루트로 실행되며 tee
현재 디렉터리에 tee
루트로 생성됩니다 . outputfilename
리디렉션은 문서를 터미널로 출력하는 것을 /dev/null
중지하는 것입니다 .tee
이 tee
명령은 명령줄에 명명된 모든 파일과 표준 출력(또는 다른 명령으로 파이프되지 않은 경우 터미널)에 입력을 복사합니다.
답변2
임의의(반드시 텍스트일 필요는 없음) 콘텐츠의 경우 다음을 사용할 수 있습니다 uudecode
.
uudecode << "EOF" | gunzip > some-file
begin 644 -
M'XL(``S*N%H``ZMW]7%C8F1D@`%F!CL&$.]"&(3O`!7W8&>"JW%@L&#@!)*R
M##(,;$`^*Y(Z=/H'(RK-`;>'@8$%B"V@QJ+3,@RH-",2S<J`&[QXPHA",S`H
MP/6!W#KA,T1\PF=%%+I""**Z0)4!11\35-^-OQ!]-_XJHM`?H-9\0/,?"Q2'
M0/V#3KLPH-(L4#K@:4D*B+U@/<1`=+H%:@&,AND+!.ICPP@-W$``2@=\
M[=_WM][)]>H;RT_=,CYV2[F?)CE^9;*KC]Z\Z+M0?=:LTM[C#Q(T97MD&/``
C?Z"GA;"('V?"+OX1A[@'(W;Q<&;LXINAY@``J665NN@#````
`
end
EOF
출력(위의 예에서 내 시스템의 처음 1000바이트 /bin/ls
)은 gzip < file | uuencode -
.