Изменить вывод каждой команды
Я хотел бы знать, есть ли способ изменить вывод каждой команды, которую я выполняю в терминале. Цель состоит в том, чтобы сделать вывод форматированным для моих инструкций по уценке.
Например
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
часть для установки разделителя на новую строку вместо пробела