これを入れたい
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
この行の前のファイルから2行目に移動します。
この文を挿入せずに他の方法で挿入できることを知っていますが、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を引いてファイルの2行目に達します。 (これを使用しても構いません。)$
-
$-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