Изменить вывод каждой команды

Я хотел бы знать, есть ли способ изменить вывод каждой команды, которую я выполняю в терминале. Цель состоит в том, чтобы сделать вывод форматированным для моих инструкций по уценке.

Например

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.

Спасибо.

2 ответа

Решение

Я бы сделал что-то вроде

  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

Вы также можете применить это к оболочке, так что это делается автоматически

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

Там, вероятно, есть некоторые недостатки / недостатки, будьте осторожны с этим.


Другой подход - бежать script (увидеть man script) и затем используйте ваш любимый редактор (или небольшой скрипт на perl / awk / etc), чтобы сделать его дружественным к уценке - в vim я бы просто сделал что-то вроде :%s/^/#> / исправить все линии за один раз. Затем я вставляю заголовки уценки и т. Д.

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

он будет проходить через вывод команды (ls -la .*z) и отобразить результат на экране, предварительно добавив #> к каждой строке

пс:

IFS часть для установки разделителя на новую строку вместо пробела

Другие вопросы по тегам