최근까지 나는 Unix-y 프로그램이 출력이 표준 출력으로 가는지, 파일로 리디렉션되는지, 파이프로 가는지 인식하지 못한다는 인상을 받았습니다. 그러나 이 사이트의 관련 없는 U&L 질문이 다음 예에 관심을 끌었습니다.
% echo "hello world" > file
% grep --color=auto lo file
hello world
% grep --color=auto lo file | cat
hello world
분명히 여기에서는 볼 수 없지만 첫 번째 명령에는 예상대로 'lo'가 강조 표시되어 있습니다. 그러나 파이프를 통과하는 두 번째 호출에서는 색상이 표시되지 않습니다. 이는 grep
출력이 파이프로 향하는 것을 인식하고 색상 출력을 피했음을 나타냅니다. 이것은 어떻게 이루어 집니까?
답변1
답변2
그렇습니다. 출력이 어디로 가는지 결정하는 방법에는 여러 가지가 있습니다. 에 대한비교 stackoverflow의 관련 질문에 대한 내 답변을 참조하세요..
답변3
용이하게. 출력이 어디로 갈지 결정하기 위해 다양한 방법을 사용할 수 있습니다. 그래서 파이썬에서는 다음과 같은 일을 할 수 있습니다
/* CODE. Input will be parsed and executed */
int
PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit,
PyCompilerFlags *flags)
{
if (filename == NULL)
filename = "???";
if (Py_FdIsInteractive(fp, filename)) {
int err = PyRun_InteractiveLoopFlags(fp, filename, flags);