최근까지 내 생각에 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);