更改“cat”命令的标签大小

B F*_*ley 20 indentation cat

当我进入时,vim我可以使用以下命令更改选项卡大小:

:set ts=4
Run Code Online (Sandbox Code Playgroud)

是否也可以为cat命令输出设置选项卡大小?

Pet*_*r.O 22

此处的第一个命令模拟您在vim. 它基于每 4 列的制表符停止 (ts) 设置,智能地将制表符扩展到相同数量的空格。

printf "ab\tcd\tde\n" |expand -t4   
Run Code Online (Sandbox Code Playgroud)

输出

ab  cd  de
Run Code Online (Sandbox Code Playgroud)

为了保持标签标签和有标签STOP设置为每4列的位置,则必须改变方式,环境工程与制表字符(就像VIM确实与:set ts=4命令)

例如,在终端中,您可以使用此命令将选项卡STOP设置为 4;

tabs 4; printf "ab\tcd\tde\n" 
Run Code Online (Sandbox Code Playgroud)

输出

ab  cd  de
Run Code Online (Sandbox Code Playgroud)

  • 很高兴知道 (1)。`expand`(来自 coreutils 包)和 `tabs`(来自 ncurses 包)命令,(2)。ts 的意思是 [**T**]ab [**S**]top (2认同)

Gus*_*rra 16

只需使用以下代码:

tabs -n
Run Code Online (Sandbox Code Playgroud)

其中 n 是您希望制表符也对应的空格数。为了不必每次启动外壳程序时都这样做,只需编辑您的.bash_profile输入~/并将上述行添加到文件末尾。

有关 tabs 命令的更多信息,请参阅:

man tabs
Run Code Online (Sandbox Code Playgroud)

  • 请注意,永久更改默认选项卡宽度可能会搞砸其他命令(例如,`ls` 输出可能看起来没有正确对齐)。 (5认同)

Blr*_*rfl 10

中没有制表符或制表位的概念cat;该程序只是将输入汇集到输出中,并像对待任何其他字符一样对待制表符。如果输出设备恰好是终端,则将根据终端配置为提供的任何行为来处理选项卡。

实现 POSIX.1 的系统有一个名为的命令tabs(1),它将调整终端的选项卡应该如何显示的概念。依赖于特定的选项卡布局并不是一个好主意,因为有人可能会将您的文件发送到其他设备,例如不会按照您的预期运行的打印机。

当您调整tsin vim(或 plain vi)时,您所做的就是调整编辑器在显示时解释制表符的方式。它与文件中的内容无关。


小智 5

根据上述答案和示例,OP 想要的实际命令似乎是......

cat somefile | expand -t4

这在 Red Hat 6.4 上对我有用。