我正在寻找一种将自定义颜色应用于rm -i
命令发出的消息的方法:
~ $ rm -i file.txt
rm: remove regular empty file 'file.txt'?
我知道我需要将 stderr 作为 stdin 重定向到任何将应用 ANSI 颜色的命令并将输出重定向回 stderr,例如
~ $ rm -i file.txt 2> >(sed $'s/^/\e[31m/;s/$/\e[m/'>&2)
然而,仅此是行不通的;上面的命令不会打印任何内容并立即开始等待用户输入。如果我输入 eg nand Enter,我会得到随后打印的彩色输出:
~ $ rm -i file.txt 2> >(sed $'s/^/\e[31m/;s/$/\e[m/'>&2)
n
rm: remove regular empty file 'file.txt'? ~ $
我似乎明白这里出了什么问题 - stderr 被重定向并着色,但由于命令开始等待用户输入而没有打印。有没有办法在rm
开始监听标准输入之前打印彩色消息?