파일의 마지막 줄 앞에 EOF 문을 삽입하세요.

파일의 마지막 줄 앞에 EOF 문을 삽입하세요.

이거 넣고싶다

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파일을 다시 디스크에 쓴 다음 quit.

축소하려면 달러 기호를 이스케이프 처리하거나 여기에 인용된 문서( )를 사용하여 변수의 현재 값 또는 null(해당 변수가 설정되지 않은 경우) 로의 확장을 방지해야 합니다 $ i.$ied -s input << 'EOF' ...$ii

답변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

관련 정보