【问题标题】:is it possible to prepend a character to every line of terminal output, for every command?是否可以为每个命令在终端输出的每一行添加一个字符?
【发布时间】:2017-08-05 03:04:27
【问题描述】:

有可能吗?

比如说我要运行命令ll:

我的输出看起来像这样:

josh@zeitgeist ~ ll
total 41148
drwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
drwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
-rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11-001710_3840x2160_scrot.png

但我希望它看起来像这样:

josh@zeitgeist ~ ll
XXXtotal 41148
XXXdrwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
XXXdrwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
XXX-rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11-XXX001710_3840x2160_scrot.png

我已经知道使用PS1='XXX'来改变提示了;有没有办法更改显示的输出的每一行,特别是在终端中(不更改输出并将其放入文件中)?

我想这样做是为了在终端左侧有一个统一的字符行。

【问题讨论】:

  • 你想用这个来完成什么?您是否想轻松区分您的终端?
  • I would like to do this to have a unified line of characters going down the left side of my terminal 这个不清楚,你为什么要那个?

标签: linux bash ubuntu terminal urxvt


【解决方案1】:

您可以通过sed轻松做到这一点:

ll | sed 's/./XXX&/'

【讨论】:

  • 我已经使用 sed 多年了。在刚刚找到这个答案之前,我在读取循环时执行了复杂的函数。这个 sed 的“技巧”太棒了!
【解决方案2】:

XXX添加到包括空行在内的所有行。

ll | sed 's/^/XXX/'

编辑: 更改 PS1 后,您可以使用

为所有命令调用解决方案
bash | sed 's/^/XXX/'

【讨论】:

    【解决方案3】:

    我想你可以这样做:

    while read; do echo "xxx $REPLY"; done < <(ls -l)
    

    虽然不太确定这样做的目的是什么。

    【讨论】:

      【解决方案4】:

      使用 awk:

      $ ll|awk '$0="XXX"$0'
      

      【讨论】:

        猜你喜欢
        • 2015-12-26
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多