Joh*_*iak 10 osx ls colors pipe sed
我正在使用该sed命令,我想保留上一个命令的彩色输出。的输出ls是彩色的,但 sed 的输出不是。我正在使用 OSX。
ls -la | sed -En '/Desktop/q;p'
Run Code Online (Sandbox Code Playgroud)
Fox*_*Fox 13
在 macOS 上,ls它不是 GNU ls,并且不接受--color=alwaysLinux 用户可能期望使用此功能的选项。
在 macOS 版本中ls,颜色由两个变量控制:$CLICOLOR和$CLICOLOR_FORCE。如果定义了前者,指定的终端$TERM支持颜色,并且输出到一个终端,那么这个输出将是彩色的,很像 GNU 的--color=auto选项。如果也定义了后一个变量,则最终条件将被删除,其行为类似于 GNU 的--color=always.
因此,要将颜色传递到sed,您需要如下内容:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
Run Code Online (Sandbox Code Playgroud)
我会盲目地猜测您的发行版与许多发行版一样,都有一个映射ls到ls --color=auto.ls -la --color=always | sed …应该管用。
(从auto广义上讲,该设置ls检查其输出是否进入显示器,并且只检查显示的颜色。原因是颜色是通过转义序列实现的,即不可见的命令字符,因此程序可能会混淆它们对于文件名的一部分,诸如此类。)