2013-07-05 14 views
37

Próbuję zmienić wiadomość dnia (MOTD) na moim pudełku Ubuntu Amazon EC2, tak aby wyświetlał status git jednego z moich katalogów, kiedy jestem w SSH.Wcięcie wielowierszowego wyjścia w skrypcie powłoki

Dane wyjściowe ze wszystkich domyślnych plików MOTD mają dwie spacje na początku każdej linii, więc wygląda ładnie wcięty, ale ponieważ moje dane wyjściowe git status obejmują kilka linii, jeśli wykonam echo -n " ", zanim zostanie tylko wcięty pierwszy wiersz.

Każdy pomysł, w jaki sposób mogę go dopasować do każdej linii?

Dzięki!

Odpowiedz

60

Przełóż go na sed, aby wstawić 2 spacje na początku każdej linii.

git status | sed 's/^/ /' 
+0

idealne-dokładnie to, czego szukałem. Pomyślałem, że to będzie coś z "sed", ale nie jestem z tym zbyt doświadczony. Dzięki! –

22

Opierając się na @ odpowiedź Barmar, ten jest znacznie krótszy i czytelniejszy sposób to zrobić:

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

git status | indent 
other_command | indent 
+1

Naprawdę nie dodaje wiele, był to jednorazowy przypadek wewnątrz skryptu powłoki, więc podprogramy bash są nieco przesadzone, ale dzięki –

+0

@MattFletcher: Cóż, myślę, że pisanie kodu z podprogramami takimi jak ten ułatwia dla nie-basha prof (takiego jak ja), aby dowiedzieć się, co się dzieje. Ponadto, jeśli zdecydujesz, że nagle chcesz mieć 3 zamiast 2 spacji, masz tylko jedno miejsce do poprawienia. – Vering

+2

@ Jeśli to prawda, i rozumiem, jakie są tego zalety, sugerowałem raczej, że mógł to być komentarz, a nie sama odpowiedź, ponieważ jest to w zasadzie ta sama odpowiedź i odnosi się do kwestii, która nigdy nie została poruszona w pierwsze miejsce :) –

Powiązane problemy