git 用の「カスタム grep」ラッパーを開発しています。ファイル マッチング パターンの最初の行が表示されます。この行は、ファイルのヘッダーであると予想されます。
エイリアスを作成しましたが、作業フォルダーに見つからないパターンを検索するまではすべて問題ありませんでした。ファイルが見つからなかったためhead
、sed
コマンドは処理するものがなく、コマンドを渡して入力を待ちます。
これを防ぐ方法は?入力がない場合、スクリプトを中断したいと思います。確かに、別のスクリプトを作成し、ファイルのリストを変数に割り当てて、この変数の長さを確認することができました。しかし、私は甘くてきちんとした oneliner-alias を好みます。
出来ますか?ここに私の.gitconfig
エイリアスセクションがあります:
[alias]
gg = !sh -c 'head -n1 -q `git grep --name-only $0` | sed s/OBJECT.//'
解像度
エイリアスの次のコマンドは、Windows 7 x64、msysGit 1.7.11.1 で機能しました。
gg = !sh -c 'head -n1 -q `git grep --name-only $0` < /dev/null | sed s/OBJECT.//'
と
gg = !sh -c 'git grep --name-only $0 | xargs -l sed -n "1{s/OBJECT.//p}"'
でも性能は違いました。最初のアプローチは著しく高速です。