运行时不显示颜色bash -c "ls -l"
(CentOS 7.2)。毕竟我有一个不明原因想要显示颜色。我可以禁用这个...颜色抑制吗?
对于任何想知道我的模糊用例的人:我正在运行 Parcellite 剪贴板管理器,它支持上下文菜单中的“操作”,我定义的操作之一是“运行终端命令”,它打开一个新终端并运行存储在剪贴板上的命令。它是通过以下方式实现的(以便命令允许包含除撇号之外的所有特殊字符):
# Parcellite recognizes %s only once; store in a variable to use twice
CMD='%s' gnome-terminal -e "$SHELL -c 'echo \\\$ \"\$CMD\"; eval \$CMD; exec $SHELL'"
# Or equivalently....
CMD='%s' gnome-terminal -e $SHELL' -c "echo \$ "$CMD"; eval $CMD; exec $SHELL"'
因为gnome-terminal
只能运行单个命令并且不理解诸如 之类的东西&&
,所以我需要调用bash -c
( $SHELL -c
) 以便正确解释命令并保持 shell 之后运行(并且因为 bash不直接支持这一点exec $SHELL
最后我也得溜进去。)
答案1
一个更通用的答案是更改bash -c
为.该选项将 shell 置于“交互”模式,这会导致它读取用户的文件并处理别名。bash -ci
-i
.bashrc
答案2
当您以这种方式调用时,并不是颜色被抑制ls
,而是颜色未启用。
您的普通 shell 可能会定义一个别名ls
来--color=tty
启用颜色,因此只需在调用ls
.