bashrc怠惰な交換

bashrc怠惰な交換

~/.bashrcエイリアスを取得する方法$()実行時の代替評価、〜/.bashrcを実行するとき(ターミナルを開くとき)ではありませんか?

私はこのコマンドを頻繁に実行するので、エイリアスを追加したいと思います。

svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff

~/.bashrcしかし、それをエイリアスとして追加したときに端末を開いたときの値で評価がハードコーディングされたことがわかりました。

$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'

端末を開くと~エラーが発生します。

svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD  | colordiff'
$

私はこれら2つのエイリアスのバリエーションを試みましたが、~/.bashrcどちらも同じ効果を持っていました(予想通り)。

alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"

実行時に~/.bashrc代替を評価するためのエイリアスを取得する方法$()

さらに、人はどうやってGoogleのこの状況は?「bashrcの置き換え」、「bashrcの怠惰な交換」、およびその他の重要なフレーズをインターネットで検索してみましたが、情報を見つけるのに十分な一般的な質問であると思われる項目が見つかりませんでした。

ベストアンサー1

使用アポストロフィ特殊文字処理を抑制します。あなたもできますバックスラッシュ これ $S.

複雑なコマンドでは、どのような場合でもエスケープを必要とせず、読みやすく編集しやすい関数を使用する方が良いでしょう。

svnbranch() {
    svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
}

エイリアスを定義できる任意の場所で関数を定義できます。

おすすめ記事