Подтвердить что ты не робот

Отступы многострочного вывода в оболочке script

Я пытаюсь изменить сообщение дня (MOTD) на своем Ubuntu Amazon EC2, чтобы он отображал статус git одного из моих каталогов, когда я вхожу в SSH.

Вывод из всех файлов MOTD по умолчанию имеет два пробела в начале каждой строки, поэтому он выглядит хорошо отступом, но поскольку мой вывод git status охватывает несколько строк, если я делаю echo -n " ", прежде чем он только отстутнет первый линия.

Любая идея, как я могу заставить ее отступать каждую строку?

Спасибо!

4b9b3361

Ответ 1

Подключите его к sed, чтобы вставить 2 пробела в начале каждой строки.

git status | sed 's/^/  /'

Ответ 2

Основываясь на ответе @Barmar, это более удобный способ сделать это:

indent() { sed 's/^/  /'; }

git status | indent
other_command | indent

Ответ 3

Благодаря @Barmar и @Marplesoft для некоторых хороших простых решений - вот еще один вариант, что другие могли бы - это функция, которую вы можете сказать, сколько отступа уровней с помощью pr:

indent() {
  local indentSize=2
  local indent=1
  if [ -n "$1" ]; then indent=$1; fi
  pr -to $(($indent * $indentSize))
}

# Example usage
ls -al | indent
git status | indent 2