Мой терминал имеет формат приглашения по умолчанию, такой как этот:
username @ boxname / path / to / current / directory $
Код, который производит это, выглядит так: (он также имеет некоторые определения цвета)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]'
Если путь к текущему каталогу становится слишком длинным, работать с терминалом становится неприятно, потому что вы постоянно ломаете строки. В таких случаях я бы предпочел формат, который производит более короткую строку, такую как эта:
username @ boxname current_dir_name $
Код, который его производит, будет выглядеть так (опять же с цветом):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] $(basename ${PWD}) \$ \[\033[00m\]'
Кто - нибудь знает , как я мог бы легко переключить формат текущего окна терминала от одного стиля к другому, просто набрав, например: prompttoggle
?
bash
gnome-terminal
Rotareti
источник
источник
PROMPT_DIRTRIM=0
иPROMPT_DIRTRIM=1
кажется более простым, чем переключение между различными значениямиPS1
и результат почти одинаков. Спасибо за информацию!PROMPT_DIRTRIM
также может добавить аргументы в команду. Если вы не передаете аргумента, вы переключаетесь междуPROMPT_DIRTRIM=0
и,PROMPT_DIRTRIM=1
и если вы передаете число в качестве аргумента, вы устанавливаетеPROMPT_DIRTRIM
его.promptlen
было бы более подходящим именем для команды тогда.Ответы:
Храните ваши длинные и короткие
PS1
переменные под другим именем:Убедитесь, что
PS1
изначально установлено одно из них:Затем вы можете создать псевдоним для переключения между двумя значениями PS1:
Добавление всех четырех строк в ваш
~/.bashrc
файл вызовет команду, доступную в ваших сеансах Bash, вот они снова для более простого копирования:источник
Вы можете использовать крошечную
bash
функцию:Вышеприведенная функция соответствует, если текущая
$PS1
содержитbasename
, если да, то устанавливаетсяPS1
без,basename
в противном случае устанавливается сbasename
.Поместите функцию в свой,
~/.bashrc
чтобы она была доступна во всех интерактивных сессиях.Пример:
источник
Или ... сделайте две очень маленькие функции и добавьте в конец
~/.bashrc
для сокращенного приглашения введите
promptshort
, чтобы вернуться к полному пути, введитеpromptlong
\W
показывает только текущий рабочий каталог, так$(basename ${PWD})
что overkill imhoВы можете объединить в одну функцию, но «long» и «short» являются описательными, и оба имеют меньше нажатий клавиш, чем «toggle»;)
Вместо добавления строки для переопределения PS1 я предпочитаю настроить код, который ее устанавливает (например, раскомментировать
force_color_prompt=yes
и отредактировать строку после[ "$color_prompt" = yes ]; then
)источник
Вот определение
~/.bashrc
функции, которое я лично использую для сброса / переключения моего приглашения с обычного на простое$
. Адаптируйте его по мере необходимости в соответствии с вашими потребностями.источник
Это ответ на вашу проблему (длинные каталоги ломают командную строку), а не конкретно на ваш вопрос (как изменить командную строку на лету.)
Я решил эту проблему несколько лет назад с помощью этой подсказки:
Что это делает:
Это дает вам все пространство, необходимое для вашей команды, не сдвигает ее правильно, когда вы находитесь в глубокой структуре каталогов, не искажает печатную строку с помощью цветовых кодов (избегая странных ошибок, которые иногда случаются), в то же время давая вам цветные подсказка о том, где закончился вывод одной команды и началась следующая:
источник