![改变每个命令的输出](https://linux22.com/image/1427191/%E6%94%B9%E5%8F%98%E6%AF%8F%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA.png)
我想知道是否有任何方法可以改变我在终端中执行的每个命令的输出。目的是使输出格式化为我的 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 - 在 vim 中,我只需执行一些操作,例如 :%s/^/#> /
一次性修复所有行。然后我会插入 markdown 标题等。
答案2
IFS=$'\n';for line in `ls -la .*z`;do echo "#>$line";done
它将循环遍历命令输出( )并通过在每一行前面ls -la .*z
添加内容在屏幕上显示结果#>
附言:
该IFS
部分用于设置分隔符新队代替空格