使用 \t 代替空格作为分隔符来格式化历史命令

使用 \t 代替空格作为分隔符来格式化历史命令

是否可以使用制表符分隔符而不是字段之间的空格来格式化历史命令输出?

我知道该变量$HISTTIMEFORMAT是否还有另一个变量来格式化输出?

例如:

command_number{\t}date_time{\t}command{\n}

它不一定是特定的 shell。

答案1

在不知道您的确切目的的情况下,这里有一种删除前导空格的方法,还可以用以下方法替换默认的“双倍空格”(用 ID 和 Command 分隔列)\t

history | sed 's/^[ \t]*//;s/ \+ /\t/'

sed表达式由两部分组成:

  • s/^[ \t]*//:此部分将删除所有前导空格或制表符(如果您出于某种原因想要以 开头每行\t,请改为执行以下操作:s/^[ \t]*/\t/)。
  • s/ \+ /\t/:此部分用 替换 2 个或更多空格\t

顺序很重要,因为你想第一的删除所有前导空格,然后然后将任意 2 个或更多空格替换为\t。如果您只运行第二部分,您还可能冒着\t在 ID 号较小的行首出现的风险。

有了这个,你希望有一些基础来继续自定义你的命令。如果你还想将时间戳添加到历史记录中,事情会变得稍微复杂一些,因为列之间有额外的单个空格。

灵感来了来自这篇文章

相关内容