Можно ли добавить символ к каждой строке вывода терминала, для каждой команды?

Является ли это возможным?

Например, скажите, что я хочу запустить команду ll:

Мой вывод будет выглядеть примерно так:

josh@zeitgeist ~ ll
total 41148
drwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
drwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
-rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11-001710_3840x2160_scrot.png

но я хочу, чтобы это выглядело так:

josh@zeitgeist ~ ll
XXXtotal 41148
XXXdrwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
XXXdrwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
XXX-rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11-XXX001710_3840x2160_scrot.png

Я уже знаю об использовании PS1='XXX' изменить подсказку; Есть ли способ изменить каждую строку вывода, который отображается, в частности, в терминале (не изменяя вывод и не помещая его в файл)?

Я хотел бы сделать это, чтобы единая линия символов шла вниз по левой стороне моего терминала.

4 ответа

Вы можете легко сделать это с sed:

ll | sed 's/./XXX&/'

Prepend XXXна все строки, включая пустые строки.

ll | sed 's/^/XXX/'

Изменить: После изменения PS1 вы можете вызвать решение для всех команд, используя

bash | sed 's/^/XXX/'

Использование awk:

$ ll|awk '$0="XXX"$0'

Вы могли бы сделать что-то вроде этого, я полагаю:

while read; do echo "xxx $REPLY"; done < <(ls -l)

Не совсем уверен, что цель этого будет все же.

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