![파일의 마지막 줄 앞에 EOF 문을 삽입하세요.](https://linux55.com/image/149184/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%A4%84%20%EC%95%9E%EC%97%90%20EOF%20%EB%AC%B8%EC%9D%84%20%EC%82%BD%EC%9E%85%ED%95%98%EC%84%B8%EC%9A%94..png)
이거 넣고싶다
cat <<EOF >> /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF
# End of file
이 줄 앞의 파일에서 두 번째 줄로 이동합니다 .
이 문장을 삽입하지 않고도 다른 방법으로 삽입할 수 있다는 것을 알고 있지만 EOF
시각적 효과를 위해 가독성을 위해 이 형식을 유지하고 싶습니다.
답변1
여기 문서 형식을 동일하게 유지하고 파일의 마지막 줄 앞에 주어진 텍스트를 삽입하려면 ed!
ed -s /etc/security/limits.conf << EOF
$ i
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
.
wq
EOF
그러면 일련의 명령이 ed로 전송되며 여기에 모두 문서화되어 있습니다. 이를 사용하여 파일의 마지막 줄을 지정 $
하고 일부 텍스트를 삽입하려고 함을 나타냅니다 i
. 텍스트는 다음과 같습니다. 삽입된 텍스트가 끝나면 마침표( .
)를 완료했음을 ed에게 알립니다. W
파일을 다시 디스크에 쓴 다음 q
uit.
축소하려면 달러 기호를 이스케이프 처리하거나 여기에 인용된 문서( )를 사용하여 변수의 현재 값 또는 null(해당 변수가 설정되지 않은 경우) 로의 확장을 방지해야 합니다 $ i
.$i
ed -s input << 'EOF' ...
$i
i
답변2
당신은 사용할 수 있습니다 ex
(이것은모델)를 편집하여 vi
이 작업을 수행합니다.
당신은 그것을 사용할 수 있습니다:read
명령은 콘텐츠를 파일에 삽입합니다. 명령은 파일 이름을 사용하지만 /dev/stdin
의사 장치를 사용하여 표준 입력에서 읽을 수 있으므로 토큰을 사용할 수 있습니다 <<EOF
.
이 :read
명령은 또한 표기법을 사용할 수 있는 범위를 사용합니다. 이 범위 는 파일의 마지막 줄을 의미하는 $-
로 분류되고 그 범위에서 1을 빼서 파일의 두 번째 줄에 도달합니다. ( 이것을 사용해도 됩니다.)$
-
$-1
함께 넣어보세요:
$ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF
음소거 하는 -s
것(화면을 깜박이게 하는 시각적 모드로 전환하는 대신) $-r
은 약어(전체 모드 $-1read
도 괜찮습니다)이고 마지막 wq
으로 에 입력하고 출력하는 방식입니다 vi
. :-)
고쳐 쓰다:마지막 줄 앞에 삽입하고 싶지 않고 특정 내용(예: "#End of file")이 있는 줄 앞에 삽입하고 싶다면 /search/
패턴을 사용하면 됩니다.
예를 들어:
$ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
...
EOF
답변3
또 다른 접근 방식은 파일의 마지막 줄을 제외하고 모두 인쇄하고 새 텍스트를 인쇄한 다음 파일의 마지막 줄을 인쇄하는 것입니다. 그런 다음 모든 출력을 새 파일로 리디렉션합니다.
{
sed '$d' limits.conf
cat <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF
tail -1 limits.conf
} > tmpfile && mv tmpfile limits.conf