Як я можу скоротити командний рядок (bash)?


167

В даний час це:

michael@Castle2012-Ubuntu-laptop01:~/Dropnot/webs/rails_v3/linker/spec/controllers$

Поза перейменуванням моєї машини та структури каталогів ...

Як я можу зробити так, щоб це було щось подібне:

michael:controllers$

Відповіді:


241

Щоб змінити його лише для поточного екземпляра терміналу

Просто введіть PS1='\u:\W\$ 'і натисніть Enter.


Щоб змінити його "назавжди"

У своєму ~/.bashrcзнайдіть такий розділ:

if ["$ color_prompt" = так]; тоді
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00м \] \ $ '
ще
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
фі

Вийміть @\hі замініть \wвелику літеру \W, щоб вона стала:

if ["$ color_prompt" = так]; тоді
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ W \ [\ 033 [00м \] \ $ '
ще
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ $'
фі

Збережіть, вийдіть, закрийте термінал і запустіть інший, щоб побачити результат.


Тонів більше варіантів!

  • Дивіться тут для більш широкого HOWTO, з багатьма іншими опціями
  • Дивіться цю відповідь щодо використання крихітного сценарію Python для встановлення підказки так, щоб скорочення відбулося лише тоді, коли ви заглиблені в структуру каталогу.

1
Ви також можете мати багато інформації ... а потім повернення вагона наприкінці, як у unix.stackexchange.com/q/88780/10043
Майкл

Чи є спосіб зробити це глобальним? Іншими словами, якщо я надіюсь на іншого користувача, чи перенести це налаштування, але лише для себе (тобто, не для користувача, коли він зазвичай використовує свій обліковий запис)?
ctote

Для того, щоб мати спільний .bashrc, який працює як на Linux, так і на OSX, я з того часу перейшов на unix.stackexchange.com/a/127800/10043
Майкл

тобто HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } TIME='\033[01;31m\]\t \033[01;32m\]' LOCATION=' \033[01;34m\]pwd | sed "s # (/ [^ /] \ {1, \} / [^ /] \ {1, \} / [^ /] \ {1, \} /). * (/ [^ /] \ { 1, \} / [^ /] \ {1, \}) / \ {0,1 \} # \ 1_ \ 2 # г "' BRANCH=' \033[00;33m\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Майкл Дюрант

але дивіться відповідь щодо фактичного використання коду.
Майкл Дюрант

104

Запустіть цей код у поточному терміналі

PROMPT_DIRTRIM=3

Тепер підказка bash покаже лише останні три назви каталогів. Ви можете вибрати 1, щоб відображати лише поточний каталог. Більше інформації розміщено в документації GNU .

Ефект:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

Якщо ви хочете зробити це назавжди, додайте на початку такий рядок ~/.bashrc:

PROMPT_DIRTRIM=3

або інше число, що перевищує нуль.



Приємно ... Я додав для цього (з функцією) promptdir() { PROMPT_DIRTRIM=$1; }
bach_alias,

18

Це моє бажане швидке налаштування:

додано в ~/.bashrc

PS1='[\u@\h \W]\$ '    

це виглядає приблизно так:

[user@hostname dirname]$

(з пробілом після $знака)


Як би я додавав пробіл між кожним словом? Також я можу розфарбувати його?
Даніель Спрінгер

6

Особисто я вважаю за краще бачити лише поточну папку в запиті bash. Я можу це зробити за допомогою наступної команди:

PS1='\W\$ '

Якщо ви хочете, щоб він набув чинності після кожного запуску, додайте вищевказану команду у свій ~ / .bashrc.


1

Я усвідомлюю, що це дуже старе, але оскільки ніхто не запропонував створити псевдонім, я зрозумів, що опублікую. Використовуючи послідовність втечі Bash Prompt, я зробив псевдонімshorten

В ~/.bash_aliasesтут ви помітите $ Синього вар , щоб встановити швидкий колір , який ви можете опустити або змінити на основі переваг , я також очистити термінал при виклику вкоротити.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

Для досягнення бажаного рядка підказок OP:

alias shorten='PS1="$USER:\W$ "'

Я маю кольори, визначені в ~/.bashrcкопії та вставлені з https://wiki.archlinux.org/index.php/Color_Bash_Prompt . Зі сторони, що з кольорами ansi-коду? Я розгублений, просто дивлячись на це.

Blue='\e[0;34m'         # Blue

Покрокове керівництво для цього було б настільки корисним, тому що я не знаю, як дістатися до .bash_aliases. Спасибі
Кайоте

2
"." префікс вказує на прихований каталог або файл. Тильда "~" - це коротка форма змінної $ HOME. Отже, "~ / .bash_aliases" - це лише коротка форма "/home/$USER/.bash_aliases". Щоб відкрити ".bash_aliases", ви можете або відкрити термінал і ввести "gedit /home/$USER/.bash_aliases" або "gedit ~ / .bash_aliases", або у своєму домашньому каталозі ввести ctrl-h, щоб показати приховані файли та відкрити файл безпосередньо . Сподіваюся, що це допомагає. Ви також можете пошукати в Google корисні псевдоніми.
Аллі Карвер

0

Я написав функцію, яку ви можете змінити відповідно до ваших потреб:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

Розташуйте цю функцію в нижній частині або поблизу ~/.bashrcпісля того, як PS1лінія була повністю обчислена.

Ви вводите termpromptбудь-коли, коли хочете скоротити своє запит, або termpromptзателефонували знизу ~/.bashrcна постійність.

Перевагою цієї методики перед багатьма іншими відповідями є .bashrcналаштування PS1чотирма різними способами (xterm + no-color, xterm + color, no-xterm + no-color, no-xterm + color). Ця відповідь підтримує всі чотири поточні методи та, мабуть, і майбутні методи.

Ще одна перевага полягає в тому, що цей метод має менш складні контрольні коди, щоб їх переходити, щоб вставити зміни.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.