执行“bash -c”时如何获取颜色?

执行“bash -c”时如何获取颜色?

运行时不显示颜色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.

相关内容