#Banner none
をBanner /etc/sshd_banner
内の/etc/sshd_config
に置き換えたい。走ったら
Sudo sed -i "s/#Banner none/Banner \/etc\/sshd_banner" /etc/sshd_config
次のエラーが表示されます
sed:1: "/ etc/sshd_config":終了していない代替パターン
この問題を修正する方法についてのアイデアはありますか?
別の区切り文字を使用
ここにある"
広告区切り文字を使用します
Sudo sed -i "" "s|#Banner none|Banner /etc/sshd_banner|" /etc/sshd_config
区切り文字を変更すると、/
をエスケープする必要がありません
元の投稿は最後に/
を1つ逃しました。
OS Xマニュアルから
-i extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension
is given, no backup will be saved. It is not recommended to give a zero-length extension when
in-place editing files, as you risk corruption or partial content in situations where disk
space is exhausted, etc.
zero-length
= ""
コマンドに関する3つの問題:
/
がありません。/
を区切り文字として使用することはできません。この文字は、置換または置換しようとしている文字列に含まれているためです。区切り文字として、パイプ文字などの別の文字を使用する必要があります。sed
のバージョン(BSD)では、-i
フラグは必須<extension>
引数を必要としますが、コマンドはありません。このバージョンのsed
を使用してファイルをその場で編集する場合は、""
フラグの後に空の文字列(-i
)を続ける必要があります。要約すると、試してください
Sudo sed -i "" "s|#Banner none|Banner /etc/sshd_banner|" /etc/sshd_config
一重引用符を試してください。また、一部のSedでは、/
以外のものを使用する場合は、最初の区切り文字をエスケープする必要があります。
Sudo sed -i 's\:#Banner none:Banner :etc/sshd_banner:' /etc/sshd_config
もう1つは、#
が行末まで続くコメントとして解釈される可能性があることです。