2012-01-27 6 views
1

私は短いステータスを持つエイリアスをsedで解析し、ファイルをgitの '仮定していない'インデックスに追加します。シェルコマンドを使用したGit設定

しかし、この問題は、OS X bashでシングルクォートをエスケープすることについての私の理解には簡単な問題であるようです。

irm = !sh -c 'git ignore $(git st --short -u | sed '\''/^ D/s/^ D//g'\'')' 

これはgitconfigの完全な行です。シェル(shと引用符付き)でコマンドを発行できますが、実行しようとするとgit configが不正になります。

以下のアドバイスに基づいて少し違って設定しました。しかし、gitconfigではまだ動作しません。

irm = !sh -c 'git ignore $(git st --short -u | sed \"s/^ D//\")' 

あなたはので、ラインを選択する必要はありません。だから私はあなたが二重引用符を使用することができるはずですが、あなたはそれらをエスケープする必要があります私の~/.profile

alias irm="git ignore $(git st --short | grep '^ D' | sed 's/^ D //')" 
+0

sedの行が私に少し問題を引き起こしています。私はあなたがこれを探していると思う:sed -n -e "s/^ D // gp" –

+0

私はそれが削除されたファイルをヒットすることを確認したい。 M Aは除外すべきである。 – Drew

答えて

1

にこれを追加しました操作は選択と同じです。 -npsedを使用し、他のものと一致する行と除外する行だけを出力する場合は、コメント内でChrisが示唆しているようにするとよいでしょう。

また、パターンが固定されているため、グローバルオプションは必要ありません。

+0

あなたはgnuにいますか?私はos x bashでこのエラーが発生しています:sh -c 'git st --short -u | sed:1: "" s/^ ":無効なコマンドコード" – Drew

+0

@Drew:はい、私はGNUです。二重引用符をエスケープしないで試してみてください。もう一つは、エイリアス全体を二重引用符で囲むことです。 'irm ="!sh -c 'git ignore $(git st --short -u | sed \ "s/^ D // \")' "'。 'sh -c'を省略することもできます:' git ignore $(git st --short -u | sed \ "s/^ D // \") '。これらはそれぞれ私のために働く。 –

関連する問題