据我所知,命令
sed
逐行处理其输入。因此,以下命令成功仅输出当前目录中的目录:
$ ls -p -1 | sed -n '/\/$/p'
这里选项
-1
到ls
使其输出出现在列中,因此sed
可以逐行处理它。但是,如果我删除选项 -1
,此命令仍然有效。为什么?如果没有选项 -1
,ls
的输出不是一组分隔行。
isatty
库函数来测试其文件描述符是否与终端关联。
许多工具都会执行此操作并相应地更改其输出,例如大多数工具在打印到终端时会输出 ANSI 颜色代码,但在重定向到文件或管道到另一个进程时仅输出纯文本。