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

105

По умолчанию в подсказке терминала отображается следующее:

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

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

>

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

задан Theodor 09.12.2010 в 09:16
источник

4 ответа

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

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

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

export PS1='> '

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

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

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

Предоставление (его легче увидеть на полном черном фоне):

Глоссарий приемлемых символов в PS1

    
ответ дан Oli 09.12.2010 в 09:22
источник
82

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

Запрос 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 24h Время
  • \d Дата (например, Tue Dec 21)
  • \e Символ "escape"
  • \h Имя хоста (до первого ".")
  • \H Имя хоста
  • \j Количество выполняемых в настоящее время заданий (ps)
  • \l Текущее tty
  • \n Линейный канал
  • \t Время (чч: мм: сс)
  • \T Время (чч: мм: сс, формат 12 ч)
  • \r Возврат каретки
  • \s Оболочка (т. е. bash, zsh, ksh ..)
  • \u Имя пользователя
  • \v Версия Bash
  • \V Полная версия выпуска Bash
  • \w Текущий рабочий каталог
  • \W Последняя часть текущего рабочего каталога
  • \! Текущий индекс в истории
  • \# Индекс команд
  • $ "#", если вы root, иначе "$"
  • \ Литеральная обратная косая черта
  • \@ Время (формат 12h с am / pm)

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

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" означает жирный и красный. И вы получите свой принтер для печати в цвете, избегая инструкции с [ и заканчивая его m . 33 или 1B в шестнадцатеричном виде, это знак ASCII "ESCAPE" (специальный символ в наборе символов ASCII). Пример:

"[1;31mHello World[m"

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

    
ответ дан Stefano Palazzo 21.12.2010 в 21:57
6

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

  

Создайте небольшой скрипт 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

    
ответ дан Olivier Lalonde 22.12.2010 в 00:26
3

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

$ 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

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

    
ответ дан Joe Codeswell user601770 27.03.2013 в 22:33