改变每个命令的输出

改变每个命令的输出

我想知道是否有任何方法可以改变我在终端中执行的每个命令的输出。目的是使输出格式化为我的 markdown 操作指南。

例如

ls -la .*z
#>-rw-r--r--  1 hologos  staff   3580 26 zář 14:22 .zconfig
#>-rw-------  1 hologos  staff  28927 17 říj 15:59 .zhistory
#>-rw-r--r--  1 hologos  staff   5600 30 zář 08:03 .zshrc

我希望每行输出都以此开头。我主要使用 zsh。

谢谢。

答案1

我会做类似的事情

  command | sed -e 's/^/line-prefix /'

例子

$ ls -la m* | sed -e 's/^/#> /'
#> -rwxr-xr-x 1 root root 76080 Aug 11  2011 mailstats
#> -r-xr-xr-x 1 root root 92824 Aug 11  2011 makemap
#> -rwxr-xr-- 1 root root 12389 Jul 22  2011 makewhatis
#> -rwxr-xr-x 1 root root 11520 Mar  6  2011 matchpathcon
#> -rwxr-xr-x 1 root root 56600 May 18  2011 mcelog
#> lrwxrwxrwx 1 root root    15 Mar 18  2011 mkdict -> cracklib-format
#> -rwxr-xr-x 1 root root  9600 Jul 22  2011 mklost+found
#> -rwxr-xr-x 1 root root 10176 Jan  6  2007 mksock
#> -rwxr-xr-x 1 root root  4409 Jan  7  2007 modeline2fb
#> -rwxr-xr-x 1 root root 23787 Jul 22  2011 mountstats
#> -rwxr-xr-x 1 root root 58032 Jan  7  2007 mtr

您还可以将其应用于 shell,以便自动完成

$ ksh | sed -e 's/^/#> /'
$ ls m*
#> mailstats
#> makemap
#> makewhatis
#> matchpathcon
#> mcelog
#> mkdict
#> mklost+found
#> mksock
#> modeline2fb
#> mountstats
#> mtr

可能存在一些缺点/陷阱,请小心处理。


另一种方法是运行script(参见man script),然后使用您最喜欢的编辑器(或小型 perl/awk/etc 脚本)使其适合 markdown - 在 vi​​m 中,我只需执行一些操作,例如 :%s/^/#> /一次性修复所有行。然后我会插入 markdown 标题等。

答案2

IFS=$'\n';for line in `ls -la .*z`;do echo "#>$line";done

它将循环遍历命令输出( )并通过在每一行前面ls -la .*z添加内容在屏幕上显示结果#>

附言:

IFS部分用于设置分隔符新队代替空格

相关内容