$HOME パスをチルダ ~ に変更するスクリプト ~ [重複]

$HOME パスをチルダ ~ に変更するスクリプト ~ [重複]

私は試した: $ echo $HOME sed /$HOME/~/g

しかし、それはうまくいきません。おそらくスラッシュのためですか?

誰もがこれを行うスクリプトを持っていますか?

  • Bash 組み込み機能の使用
  • sedを使う

ありがとう

答え1

コマンドが機能しない原因はいくつかあります。

まず、bashは一重引用符内で変数拡張を実行しません(コマンド拡張なども実行しません)。二重引用符を使用する必要があります。

また$HOME、1つ以上のスラッシュが含まれる可能性が高いため、sedコマンドでターゲット文字列と代替文字列の区切り文字としてスラッシュ記号を使用すると、次のすべてのスラッシュをエスケープする必要があります$HOME

$ echo $HOME | sed "s/${HOME//\//\\\/}/~/"
~

下記のご意見に応じて、はい。bashの文字列変数演算子を使用してこれを実行し、より簡潔にすることもできます。

$ echo $A
/home/jim/screenshot.png
$ echo "${A/$HOME/\~}" 
~/screenshot.png

関連情報