텍스트 파일을 검색하는 명령을 실행하면 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
.