Як я можу скоротити командний рядок (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.