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

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

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

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

>

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

)
1
задан 23 January 2014 в 19:26

3 ответа

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

Запрос 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, см. этот вопрос) в вашем домашнем каталоге.

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

PS1 : приглашение по умолчанию, которое вы видите при открытии оболочки. Это значение хранится в переменной среды, называемой PS1. Чтобы увидеть его значение, введите echo $PS1. Это даст вам что-то вроде
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
. Чтобы изменить его, вы можете установить новое значение для переменной:
export PS1="\u > "
Это приведет к следующему приглашению:
stefano > 
[!d3 ] \A       24h Время PS2: ваше вторичное приглашение. Это отображается, когда команда не завершена. Введите echo "asd и нажмите enter, вторичное приглашение позволит вам ввести больше строк, пока вы не закроете перевернутые запятые. \e       Символом 'escape' PS3 является приглашение, используемое для select (2) \H       Hostname PS4 - это приглашение, используемое для трассировки стека (по умолчанию: +) \l       Текущий tty \n       Линейный канал \t       Время (чч: мм: сс) \T       Время (чч: мм: сс, формат 12 ч) \r       Возврат каретки \s       Shell (то есть bash, zsh, ksh ..) \u       Имя пользователя \v       Версия Bash \V       Полная строка выпуска Bash \w       Текущий рабочий каталог \W       Последняя часть текущего рабочего каталога \!       Текущий индекс в истории \#       Индекс команд \$       «#», Если вы root, иначе «$» \\       Литеральная обратная косая черта \@       Время (формат 12h с am / pm)

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

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

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

\A       24h Time

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

40;33;01

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

00 = нет 01 = жирный 04 = подчеркивание 05 = мигает 07 = обратный 08 = скрытый \e       Символ «escape»

Первая часть перед точкой с запятой представляет стиль текста.

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

Вторая и третья части - цвет и цвет фона:

85
ответ дан 26 May 2018 в 00:02
  • 1
    Я добавил export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> ' в /etc/bash.bashrc, но ничего не изменилось ... он работает на сеанс, но я не могу сделать его постоянным. – Jared Tritsch 16 November 2013 в 03:10

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

Создайте небольшой скрипт 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
6
ответ дан 26 May 2018 в 00:02
  • 1
    Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py Я думаю, что оба они должны быть одинаковыми. Либо вы добавляете дополнительную команду в оба места, либо не делаете этого вообще. Но это отличный ответ. – MycrofD 19 April 2017 в 13:09

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

$ 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

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

3
ответ дан 26 May 2018 в 00:02

Другие вопросы по тегам:

Похожие вопросы: