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


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

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

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

>

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


112
2017-12-09 09:16


происхождения


Это должен быть комментарий, но я не могу комментировать, извините. Помимо скрытия текущего каталога, следующее значение PS1 будет визуально разделять ваши команды bash: export PS1="\n___" - Hello World
экспериментировал на решениях Оли. Цветные шрифты хорошо работают в терминале: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:' - linbianxiaocao


ответы:


export PS1='\u@\h: '

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

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

export PS1='> '

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

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

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

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

My terminals

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


129
2017-12-09 09:22



Вы также можете иметь новые строки (\ n) в качестве части приглашения, чтобы вы могли поместить всю информацию и «>» в ​​отдельные строки. - ak2
Я впервые столкнулся с такой «экстремальной» настройкой оболочки в msysGit, верьте или нет. Меня сразу превратили в мир баш. Имея всю информацию (моя текущая директория, текущая ветка проверена из Git repo, состояние индекса Git ...), там было так здорово. Я планирую сделать что-то подобное с установкой Ubuntu, которую я недавно положил на старый ноутбук (наряду с Windows XP). - dgw
какой формат используется для настройки цветов? - Syed Rakib Al Hasan


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

Запрос 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 это подсказка, используемая для alt text  трассировка стека (по умолчанию: +)

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

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

  • \a Символ «звонок»
  • \A Время в 24 часа
  • \d Дата (например, 19 декабря)
  • \e Символ «escape»
  • \h Имя хоста (до первого «.»)
  • \H Hostname
  • \j Число рабочих мест, выполняемых в настоящее время (ps)
  • \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.

  • Если подстановка команды выполняется, как в \$(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» в ярко-красном цвете.


87
2017-12-21 21:57



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


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

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



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


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

$ 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

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


4
2018-03-27 22:33





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

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

Надеюсь это поможет. Выработал для меня.


0
2017-07-05 19:36