Многострочный bash, если путь длиннее x символов?

0

Я хотел бы разбить мою подсказку bash на две строки, если путь слишком длинный, чтобы введенная команда всегда подходила.

Моя текущая подсказка выглядит так:, ~/go/src/asd$ ls -lahпоэтому, если путь слишком длинный, команды должны все время переносить строки. Таким образом, я хотел бы условно сделать это двухстрочной подсказкой, если путь слишком длинный. Как я могу это сделать?

Филип Хаглунд
источник
Предположим, что вы находитесь /dataи вам нужно ввести ln -s /zzzzzz/ccccc/vvvvvv/bbbbbb/nnnn /ssss/ddddd/fffff/ggggg/jkjkjkjkjkjkjпараметр "too long", который не может быть учтен в математике. Такие «точные» параметры работают только для политики в своих высказываниях :)
Alex
Я не думаю, что вы можете сделать это. Вы можете сделать это всегда 2 строки, хотя
phuclv
Нет, если команда слишком длинная, это нормально. Я просто не хочу, чтобы путь в приглашении был слишком длинным. Слишком долго я имею в виду некоторую константу.
Филип Хаглунд

Ответы:

0

Добавьте в конец вашего ~/.bashrcфайла:

path_len() {
  max_path=20
  currentPath=$(pwd)
  pathLen=${#currentPath}
  [ ${pathLen} -gt ${max_path} ] && printf "\n:"
}

PS1="\n\[\033[1;31m\]\u@\h: \[\033[32m\]\w\$(path_len)\[\033[0m\] -> "

и отрегулируйте переменную max_pathв функции path_lenдо того магического значения, которое вы назвали «слишком длинным»;)

Alex
источник