2013-10-26 4 views
4

Я нахожусь в процессе настройки моего терминала.Добавить новую строку после вывода каждой команды bash

В настоящее время у меня есть следующие:

http://d.pr/i/crBm

То, что я хочу, это символ новой строки после выхода каждой команды, как это:

http://d.pr/i/NVX5

Единственный способ у меня есть удалось достичь чего-то близкого к этому, добавив новую строку на , начиная моего PS1. Это работает, но из-за этого меня раздражает, что в первый раз, когда я открываю подсказку bash, есть новая строка над первой строкой. Есть ли другой способ сделать это?

+0

'существует новая строка над самой первой линии «Это такая большая проблема? – anubhava

+1

Не совсем, просто любопытно, есть ли лучший способ. Это портит мой OCD по-другому :( – bitpshr

+1

На самом деле положить новую линию над самой первой строкой, возможно, * это лучший способ - супер дешево и легко понять. – kojiro

ответ

6

Один подход с использованием Printf:

$ printf '%s\n' * $'\n' 

или лучше (для каждой команды):

$ PROMPT_COMMAND="echo" 
$ ls 

От man bash:

PROMPT_COMMAND 
    If set, the value is executed as a command prior to issuing 
    each primary prompt. 
+1

Мне нравится этот метод, но это интерпретируется до 'PS1' и все еще печатает новую строку над первой строкой подсказки bash, по существу эквивалентной новой строке в начале 'PS1'. Возможно, я что-то делаю неправильно ... – bitpshr

+1

Я действительно не знаю, как это отличается от перевода строки новой строки в начале PS1, что OP попросил не делать. (Кроме того, PROMPT_COMMAND немного дороже.) – kojiro

+1

Я однажды [отправил ответ] (http://stackoverflow.com/a/14860632/1126841), где показано, как определить 'PRMOPT_COMMAND' таким образом, что он переопределяет себя в первый раз, когда он вызывается. Вы можете адаптировать это так, чтобы' echo' * не * вызывался в первый раз, когда он используется в оболочке, но для каждого последующего использования. – chepner

Смежные вопросы