この行を置き換えるスクリプトを作成しようとしています。
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
次の行を使用してください。
# [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
これにより、新しい行が追加されます。
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \D{%T} \W]\\$ "
ファイルとして/etc/bashrc
。デフォルトでは、スクリプトは以前の設定に注釈を付け、プロンプトのユーザー名の横にタイムスタンプ(新しい設定)を追加したいと思います。私は次のように最初の部分を実行しようとしています。
pattern=' [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "'
sudo sed 's/${pattern}/#${pattern}/' < /etc/bashrc
しかし、うまくいきません。文字列の特殊文字が原因であるようです。しかし、どの文字をエスケープする必要があるのかわかりません。最後の部分は次のようになります。
sed -i ' [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \D{%T} \W]\\$ "' /etc/bashrc
いくつかのガイドが提供されます。
ありがとう
ベストアンサー1
- スクリプトの一重引用符は拡張を
sed
防ぎます${pattern}
。二重引用符を使用する必要があります(ただし、これは上記の特殊文字の問題を引き起こします)。 sed
指定された行のアドレス指定を十分に使用して識別し、次のコメントを挿入します。/^ *\[ *"$PS1 =/s/^/#/
a
コマンドを使用してsed
与えられた行を追加します。
あなたの場合は、行に何かを追加したいので
sed 's/\( *\[ "$PS1" = "..s-..v...$ " \] && PS1="\[[email protected] \)\(.W]..$ "\)/#\1\2\
\1\\D{%T} \2/' /etc/bashrc