Как динамически сократить текущую рабочую директорию в запросе bash [дубликат]

Вопрос или проблема

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

user1@localhost:~/Pictures/awesome_trip/

Это было бы нормально, но если мы переходим в более глубокие подкаталоги, такие как:

user1@localhost:~/Pictures/awesome_trip/first_day/mikes_camera/funny_pics

Я хотел бы, чтобы приглашение изменилось на

user1@localhost:/.../funny_pics

Я знаю, как изменить приглашение в .bashrc

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

CUR_PROMPT=$(pwd); # получить рабочий каталог

CUR_PROMPT_LENGTH={#CUR_PROMPT}; # получить длину

if[ $CUR_PROMPT_LENGTH -gt 20 ]; then 
  # если приглашение длинное, вывести короткую версию
  PS1='\u@\h:...\w:\$';
else
  # иначе вывести длинную версию
  PS1='\u@\h:\W:\$'

Надеюсь, есть способ это сделать,
Спасибо за ваш ответ.

Вы можете использовать что-то подобное коду ниже. Просто добавьте это в ваш файл .bashrc в вашей домашней папке. Это в основном сделает ваше приглашение похожим на “user@computername [dir] $”, так что оно может выглядеть как telegonicaxx@laptop [shared] $

export PS1="\u@\h [\W] \\$\[$(tput sgr0)\]"

.

Ответ или решение

Чтобы сократить путь текущего рабочего каталога в командной строке Bash динамически, вам необходимо внести изменения в файл конфигурации .bashrc, который находится в вашем домашнем каталоге. Это позволит вам настроить приглашение так, чтобы оно автоматически адаптировалось в зависимости от длины пути. Ниже приведен подробный процесс, как этого добиться.

Шаг 1: Откройте файл .bashrc

Для начала вам нужно открыть файл .bashrc в текстовом редакторе. Вы можете использовать nano, vim или любой другой текстовый редактор. Например, для открытия с помощью nano, выполните следующую команду:

nano ~/.bashrc

Шаг 2: Определение и настройка функции для сокращения пути

Добавьте следующую функцию в конец вашего файла .bashrc. Эта функция будет определять текущий путь и изменять приглашение в зависимости от его длины.

function set_prompt {
    local CUR_PROMPT=$(pwd)                  # Получаем текущий каталог
    local CUR_PROMPT_LENGTH=${#CUR_PROMPT}   # Получаем длину пути

    if [ $CUR_PROMPT_LENGTH -gt 50 ]; then    # Проверяем условие длины пути (можете изменить значение на любое другое)
        # Если путь длинный, краткая версия
        PS1='\u@\h:...\W\$ '                   # Пример: user@host:.../funny_pics$
    else
        # Если путь короткий
        PS1='\u@\h:\w\$ '                      # Пример: user@host:/home/user/Pictures/awesome_trip$
    fi
}

PROMPT_COMMAND=set_prompt  # Обновляем приглашение перед каждым введением команды

Шаг 3: Сохраните и закройте файл

После внесения изменений сохраните файл и закройте текстовый редактор. Если вы используете nano, нажмите CTRL + X, затем Y, чтобы подтвердить сохранение.

Шаг 4: Применение изменений

Чтобы изменения вступили в силу, выполните следующую команду:

source ~/.bashrc

Объяснение кода

  • Функция set_prompt: Эта функция считывает текущий рабочий каталог и определяет его длину. Затем она изменяет переменную PS1, которая отвечает за вывод приглашения командной строки, в зависимости от длины пути.

  • PROMPT_COMMAND: Этот встроенный параметр позволяет выполнять определенную команду перед выводом приглашения. В данном случае, мы вызываем функцию set_prompt.

  • PS1: Это переменная, определяющая, как будет выглядеть ваше приглашение. Мы используем \u для отображения имени пользователя, \h для имени хоста и \w для полного пути. В случае длинного пути, мы используем укороченный вариант с использованием ....

Заключение

Теперь ваша командная строка будет динамически изменять вывод в зависимости от длины текущего рабочего каталога. Этот подход не только улучшает читаемость вашего приглашения, но и помогает вам быть более организованным в вашей работе. Кроме того, вы всегда можете настроить значение длины или форматирование в соответствии с вашими предпочтениями.

Оцените материал
Добавить комментарий

Капча загружается...