Скрыть текущий рабочий каталог в терминале


133

По умолчанию подсказка терминала показывает что-то вроде:

user@system:/folder1/folder2/folder3/folder4$

чем глубже вы заходите в файловую систему, тем меньше места остается для ввода команд. Могу ли я изменить это, чтобы показать только что-то вроде:

>

Я имею в виду, я могу просто напечатать, pwdчтобы показать, где я нахожусь. ;)


1
Это должен быть комментарий, но я не могу комментировать, извините. Помимо скрытия текущего каталога, следующее значение PS1 будет визуально разделять ваши команды bash:export PS1="\n___"
Hello World

экспериментировал с решениями Оли. Цветные шрифты хорошо работают в терминале: export PS1 = '[\ 033 [0; 35 м] \ h [\ 033 [0; 33 м] \ w [\ 033 [00 м]:'
linbianxiaocao

Ответы:


153
export PS1='\u@\h: '

Это приводит oli@bert:к моей подсказке.

Если вы действительно хотите что-то минималистичное, как вы просите, попробуйте это:

export PS1='> '

Вы можете прикрепить это к концу вашего ~/.bashrcфайла, чтобы он сохранялся между логинами.

Вы также можете проявить творческий подход с некоторыми цветами. Вот что я использую на своих серверах:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Даешь (это легче увидеть на черном фоне):

Мои терминалы

Глоссарий допустимых символов в PS1


2
Вы также можете использовать символы новой строки (\ n) в качестве части приглашения, чтобы вы могли поместить всю информацию и '>' в отдельные строки.
ak2

Я впервые столкнулся с такого рода «экстремальной» настройкой оболочки в msysGit, хотите верьте, хотите нет. Я был немедленно преобразован в мир Баш. Имея всю информацию (мой текущий каталог, текущую ветку, извлеченную из репозитория Git, состояние индекса Git ...) прямо там было так здорово. Я планирую сделать нечто подобное с установкой Ubuntu, которую я недавно установил на старый ноутбук (наряду с Windows XP).
ДГВ

3
какой формат используется для настройки цветов?
Ракиб

1
@SyedRakibAlHasan Попробуйте echo -e "\e[31mHello World\e[0m"или echo -e "\033[31mHello\e[0m World"в терминале, который должен дать вам подсказку. источник
Дака

103

Просто чтобы расширить ответ Оли (и чтобы у меня была закладка для этих коротких символов):

Подсказка bash ( stefano@linux:~$) - это только первая из пары подсказок, которые вы можете увидеть:

  • PS1 : приглашение по умолчанию, которое вы видите при открытии оболочки

    Это значение хранится в переменной среды с именем PS1. Чтобы увидеть его значение, введите

    echo $PS1

    Это даст вам что-то вроде

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    Чтобы изменить его, вы можете установить новое значение для переменной:

    export PS1="\u > "

    Это приведет к приглашению, как это:

    stefano > 
  • PS2 : это ваша вторая подсказка. Это показано, когда команда не завершена. Введите echo "asdи нажмите Enter, вторичная подсказка позволит вам вводить больше строк, пока вы не закроете кавычки.

  • PS3 - подсказка, используемая для select(2)

  • PS4 это приглашение используется для альтернативный текст трассировки стека ( по умолчанию: +)

Чтобы сделать изменения постоянными, вы добавляете их в конец .bash_profile(или .bashrcсмотрите этот вопрос ) в своем домашнем каталоге.

Вот более или менее полный список сокращений, которые вы можете использовать при их составлении:

  • \a     Персонаж "колокол"
  • \A     24ч Время
  • \d     Дата (например, вторник 21 декабря)
  • \e     «Побег» персонаж
  • \h     Имя хоста (до первого ".")
  • \H     Hostname
  • \j     Количество рабочих мест, запущенных в данный момент (пс)
  • \l     Текущий tty
  • \n     Перевод строки
  • \t     Время (чч: мм: сс)
  • \T     Время (чч: мм: сс, 12ч формат)
  • \r     Возврат каретки
  • \s     Оболочка (то есть bash, zsh, ksh ..)
  • \u     имя пользователя
  • \v     Bash версия
  • \V     Полная версия релиза Bash
  • \w     Текущий рабочий каталог
  • \W     Последняя часть текущего рабочего каталога
  • \!     Текущий индекс в истории
  • \#     Индекс команды
  • \$     «#», Если вы root, иначе «$»
  • \\     Буквальный обратный слеш
  • \@     Время (12 ч формат с утра / вечера)

Конечно, вы можете вставить любую буквальную строку и любую команду:

export PS1="\u \$(pwd) > "

Где $(pwd)стоит вместо "выход" pwd.

  • Если подстановка команды экранирована, как в \$(pwd), она оценивается каждый раз, когда отображается приглашение, в противном случае, как в $(pwd), она оценивается только один раз при запуске bash.

Если вы хотите, чтобы ваше приглашение отображало цвета, вы можете использовать цветовые коды Bash, чтобы сделать это. Код состоит из трех частей:

40;33;01
  • Первая часть перед точкой с запятой представляет стиль текста.

    • нет 00 = нет
    • 01 = жирный шрифт
    • 04 = подчеркивание
    • 05 = мигания
    • 07 = обратный
    • 08 = скрывала
  • Вторая и третья часть - это цвет и цвет фона:

    • 30 = черный
    • 31 = красный
    • 32 = зеленый
    • 33 = желтый
    • 34 = синий
    • 35 = пурпурного
    • 36 = циан
    • 37 = белый

Каждая часть может быть опущена, при условии, что начинается слева. то есть «1» означает жирный, «1; 31» означает жирный и красный. И вы бы заставили свой терминал печатать в цвете, выполнив инструкцию \33[и завершив ее символом m. 33 или 1B в шестнадцатеричном формате, это знак ASCII «ESCAPE» (специальный символ в наборе символов ASCII). Пример:

"\33[1;31mHello World\33[m"

Печать "Hello World" ярко-красным.


Я приложил export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'к /etc/bash.bashrcно ничего не казалось , чтобы изменить ... он работает на одну сессию, но я не могу показаться , чтобы сделать его постоянным.
Джаред Трич

8

Другой альтернативой является сокращение пути к рабочему каталогу, когда он становится слишком длинным: обрезать рабочий каталог командной строки терминала

Создайте небольшой скрипт на python, который реализует желаемую логику обрезки.

Пример: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Теперь проверьте это из терминала:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Если вы согласны с результатом, просто добавьте команду в ваш ~ / .bashrc


Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py Я думаю, что оба должны быть одинаковыми. Либо вы вводите дополнительную команду в обоих местах, либо не делаете этого вообще. Но это отличный ответ ..
MycrofD

7

Я часто хочу сделать это временно. Вот что я делаю:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Я надеюсь, что это поможет кому-то.


1

для пользователей MacOS:

open ~/.bash_profile

в конце файла добавьте следующую строку и сохраните ее

export PS1='\u:\w\$ '

результат в домашнем каталоге:

user: ~$

здесь u для пользователя w для текущего рабочего каталога $, чтобы предложить отобразить

Вы можете попробовать следующие стили:

export PS1='$ '

просто иметь $ как подсказку, больше ничего. как:

$ 

0

Мне помогло то, что: export PS1 = '$'

Чтобы иметь это каждый раз, когда вы открываете терминал, напишите команду в конце .bashrc, которую вы можете открыть с помощью «cd», а затем «gedit .bashrc».

Надеюсь это поможет. Получилось для меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.