テキストファイルを検索するコマンドを実行すると、ag
コマンドラインに次の出力が表示されます(全体の結果は表示されません)。
❯ ag dependency
140317155505.md
27:The Bundler dependencies API ...
140423193022_python_packages.md
61:`distutils` is part of the Python standard ....
出力に改行文字があります。ただし、ファイルにパイプまたはリダイレクトすると、次の出力が表示されます。
140317155505.md:27:The Bundler dependencies API...
140423193022_python_packages.md:61:`distutils` is part of the Python standard...
これには改行文字の代わりに追加のコロンがあります。どのように動作しますか?ag
STDOUTに書き込むだけで、STDOUTの実際の宛先を知らないようです。この情報にアクセスできないと思うのは間違っていますか?
答え1
Googleでこれを見つけましたが、私が探していた答えを見つけることができませんでした。次のようにagを呼び出すことができます。
ag --color --group
出力がttyかどうかにかかわらず、デフォルトの色を使用し、結果をファイルごとにグループ化します。
これは実際の効果は何ですか。
答え2
ag
(私が慣れていない)このプログラムはシステムコールを使うことができます
stdout_is_tty = isatty(1);
isatty() 関数は、fd が端末を参照するオープンファイル記述子かどうかをテストします。
これにより、出力が作成された場所に応じて出力を変更できます。
私も関連しているものを見つけたと思います。ソースコード部分
/* If we're not outputting to a terminal. change output to:
* turn off colors
* print filenames on every line
*/
if (!isatty(fileno(stdout))) {
opts.color = 0;
group = 0;
....
また、見ることができますman isatty
。