1

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

Например

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 ответа2

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/^/#> / чтобы исправить все строки за один раз. Затем я вставляю заголовки уценки и т.д.

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

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

пс:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .