![Unixシリーズプログラムは出力位置を決定できますか? [コピー]](https://linux33.com/image/21857/Unix%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E5%87%BA%E5%8A%9B%E4%BD%8D%E7%BD%AE%E3%82%92%E6%B1%BA%E5%AE%9A%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
最近まで、私の考えでは、Unix-yプログラムは、出力が標準出力であるか、ファイルにリダイレクトされるか、パイプであるかなど、出力がどこに行くのか全く知りませんでした。しかし、以下の例のように、サイトに関係のないU&Lの質問が私の関心を集めました。
% echo "hello world" > file
% grep --color=auto lo file
hello world
% grep --color=auto lo file | cat
hello world
明らかにここでは表示されませんが、最初のコマンドは期待どおりに「lo」ハイライトを表示します。ただし、2番目の呼び出しはパイプを通過し、色は表示されません。これはgrep
、出力がパイプに向かうことを認識し、カラー出力を防止することを示します。あなたはそうしなかった方法?
答え1
答え2
はい。出力がどこに行くかを決定する方法はいくつかあります。一つのために比較のためにstackoverflowの関連質問に対する私の答えをご覧ください。。
答え3
簡単に。出力がどこに行くかを決定するために、さまざまな方法を使用できます。だからPythonでは次のことができます
/* 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);