1

Я на Lubuntu, и я использую Bash. Мой PS1 (в .bashrc) это:

PS1="\w> "

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

/this/is/a/very/long/path/that/i/want/to/make/shorter >

Я хотел бы установить в моей среде переменные:

$tiavl=/this/is/a/very/long

И тогда я получу:

$tiavl/path/that/i/want/to/make/shorter >

Цель состоит в том, чтобы сделать что-то более короткое в командной строке, но я все еще хочу иметь возможность скопировать, вставить это и сделать:

cd $tiavl/path/that/i/want/to/make/shorter

Это немного похоже на $ HOME:

~/path/that/i/want/to/make/shorter  >

Я знаю, где я, и я могу скопировать вставить ~.

Благодарю.

3 ответа3

2

Вы можете сделать это с помощью небольшой вспомогательной функции, как показано ниже (используйте /home в качестве примера пути префикса):

~ > pwd
/home/me
~ > tiavl=/home
~ > prompt_path () { echo ${1/#$tiavl/\$tiavl}; }
~ > export PS1="\$(prompt_path \w) > "
$tiavl/me > 

Это использует простую функцию манипуляции со строками (см. Здесь много примеров) в функции, чтобы заменить начальную часть пути литералом $tiavl если он совпадает.

Вот демонстрация того, как обновить эту функцию для нескольких путей.

#! /bin/sh

path1=/home
path2=/usr
path3=/var

prompt_path() {
    local path
    path="${1/#$path1/\$path1}"
    path="${path/#$path2/\$path2}"
    path="${path/#$path3/\$path3}"
    echo "$path"
}

prompt_path $HOME
prompt_path /usr/local
prompt_path /var/tmp
1

Если вы копируете вставить в терминал, вы можете просто использовать переменную окружения $ PWD, которая всегда будет показывать вам рабочий каталог.

echo $PWD

показывает рабочий каталог.

0

В общем, вы делаете скрипт bash:

prompt_path

который содержит :

#! /bin/sh
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"

Вы помещаете это в папку как:

~/.local/bin

Вы даете право x вашему сценарию:

chmod u+x prompt_path

В вашем ~/.bashrc:

1 - вы меняете PS1 на:

PS1="\$(prompt_path \w) > "

2 - вы добавляете эти строки:

export path1=/home
export path2=/usr
export path3=/var

3 - вы указываете, что вы можете вызвать свой скрипт из любой точки мира:

export PATH=~/.local/bin:$PATH

Наконец, вы получаете ваш .bashrc:

. ~/.bashrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .