これを入れたい
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
ファイルの2行目から最後の行、# End of file
行の前。
他の方法を使用してEOF
を使用せずにこのステートメントを挿入できることはわかっていますが、見栄えのために、読みやすくするためにこの形式を維持したいと考えました。
同じ種類のヒアドキュメント形式を維持し、ファイルの最後の行の直前に所定のテキストを挿入するには、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
nsertテキストを入力するとします。例のように、テキストが続きます。挿入したテキストの処理が完了したら、1つのピリオド(.
)で完了したことを通知します。 W
riteファイルをディスクに戻し、次にq
uit。
$ i
を$i
に縮小する場合は、ドル記号をエスケープするか、引用符付きのヒアドキュメント(ed -s input << 'EOF' ...
)を使用して、$i
が展開されないようにします。 i
変数の現在の値、またはそのような変数セットがない場合は空。
別の方法:ファイルの最終行を除くすべてを印刷し、新しいテキストを印刷してから、ファイルの最終行を印刷します。次に、すべての出力を新しいファイルにリダイレクトします。
{
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