ed [duplicate]で<<\ENDを使用する理由

ed [duplicate]で<<\ENDを使用する理由

ファイルの10〜20行の先頭にedput文字を使用します。解決策は次のとおりです。#/etc/passwd

ed /etc/passwd <<\END
10,20s/^/#/
%p
Q
END

私の質問は<<ここと\以前の意味が何でENDあり、私たちがそれを使用するのはなぜですか?私たちはいつもそれを使うべきですか?

ベストアンサー1

あなたが示したものはed編集スクリプトで動作します。

編集スクリプト(一連のコマンド)がedここに文書に渡されます。edここでは、ドキュメントは複数行のテキストです。リダイレクトユーティリティの標準入力を入力します。ここでは、END最初のタグと最後のタグの間にあります。\前の最初のトークンはドキュメントENDが参照されることを意味し、これはシェルがドキュメント内の変数などを拡張しようとしないことを意味します。と書くこともできます<<'END'。この特別な場合には、\編集スクリプトにシェル拡張のための内容が含まれていないため、削除が可能です。

edこれはより簡単な非対話型編集の一般的な方法ですが、edこの方法で使用する場合は、そのオプションと一緒に使用する必要があります。-s

このコマンドの効果は、次のようsedに使用するのと同じです。

sed '10,20/^/#/' /etc/passwd

edスクリプトはファイルを変更し、終了する前に端末にファイルを表示します。いいえ変更を保存します。これはsed、上記のスクリプトが1行ずつ実行する操作と似ています。


これはいいえそれでもファイルを編集するのは良い方法です/etc/passwded幸いなことに、スクリプトは変更を保存しないので実際には行いません)。これを行うには、vipwこのファイルを変更するためのツールまたは特定のコマンド(など)を使用する必要があります。useraddこれは、多くのUnixシステムでは、ファイルを1つ以上の他のファイルまたはデータベースと同期させる必要があり、編集するにはそのファイルを更新(vipw自動更新など)する必要があるためです。

おすすめ記事