Як скоротити поточний шлях до каталогу, показаний на терміналі?


17

Якщо я перебуваю в глибокому каталозі, скажімо:

~/Desktop/Dropbox/School/2017/C/A3/

тоді, коли я відкриваю термінал, він говорить

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

а потім я пишу свою команду. Це дуже довго, і кожен рядок, який я записую в термінал, переходить до наступного рядка. Я хочу знати, чи існує спосіб, щоб він відображав лише мій поточний каталог. Я хочу, щоб це відображалось:

bob@bob-ubuntu: A3/$

Таким чином, це набагато зрозуміло, і завжди я можу зробити, pwdщоб побачити весь свій каталог. Я просто не хочу, щоб весь каталог був видно в терміналі, оскільки він займає занадто багато місця.

Відповіді:


12

Вам потрібно змінити PS1файл запуску оболонки (можливо .bashrc).

Якщо він вже є, його параметр буде містити \w, що дає ваша робоча директорія. Змініть це на \W(верхній регістр). Вийдіть із системи та ввійдіть знову, або зробіть:

. .bashrc

(або будь-який файл).

Якщо його немає, додайте щось на кшталт:

PS1='\u@\h: \W:\$'

до .bashrcчи що завгодно. Загляньте PS1на bashсторінку керівництва, щоб отримати більше ідей.

Будь обережний; bashможе використовувати декілька більше одного файлу ініціалізації, наприклад, .bashrcі .bash_profile; можливо, PS1це встановлено в загальносистемній. Але ви можете змінити це в одному зі своїх власних файлів.


23

Починаючи з bash 4, простим способом скоротити глибину каталогу в командному рядку є команда нижче у вашому файлі bashrc. Просто не забудьте знову відкрити свій термінал, а також число (тобто 1) визначає глибину каталогу, який потрібно показати.

PROMPT_DIRTRIM = 1


4
Це ТОЧНО те, що я шукав. Налаштування чогось подібного export PROMPT_DIRTRIM=3у вашому .bashrcє ідеальним серединою між \Wта \w. Дивіться: gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane

3

Припустимо, що ви використовуєте bash, змініть рядок підказок (змінну PS1) так, щоб він мав \Wзамість \w.

наприклад, якщо ваш PS1 зараз є \u@\h:\w\$, встановіть його\u@\h:\W\$

Щоб зробити це постійним, вам доведеться змінити його у файлах запуску bash - наприклад, ~/.bash_profileабо ~/.bashrc.

перегляньте man bashта знайдіть PROMPTINGповну інформацію та список спеціальних символів, що уникнули косої риски.


У мене є 4 згадки про PS1 Чи потрібно змінити всі 4?
K Спліт X

4 згадки де? в ~ / .bash_profile? це не повинно шкодити, щоб змінити всі екземпляри \wPS1 на \W. або ви можете просто встановити підказку на те, що вам подобається внизу сценарію.
cas

1

у цьому випадку вам доведеться відредагувати PS1 ,

Введено \wкоманду або змінну, яка показує скорочений шлях:

оригінальний PS1

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

змінити його на

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

Зверніть увагу, що це додасть ім'я користувача ~, якщо ви перебуваєте в своєму домашньому режисері!

щоб уникнути того, що вам знадобиться кілька команд, набраних $ {PWD ## * /}, наприклад

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

новий PS1 буде виглядати наступним чином

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

oOps в той час, як я намагаюся врятувати світ, у мене була noIdea | пробула \ W


1

Це портативно для всіх shснарядів.

Призначте PS1один із файлів запуску оболонки:

PS1='${PWD##*/} $ '

Підказка буде виглядати так

dir $

Де dirбазова назва поточного каталогу.

$PWDМінлива містить поточний шлях до каталогу, і ${PWD##*/}позбавить все аж до і включаючи останній /в цьому шляху.

Одиничні лапки не дозволяють формі оболонки оцінювати підстановку змінної на момент призначення (значення " $PS1Оцінюватиметься" щоразу, коли відображається запит).

PS1Змінна не повинна бути експортована як він використовується тільки в поточній оболонці.


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