Я пытаюсь использовать функцию, которая сокращает мою подсказку bash. Я добавил его в .bash_profile:

function last_two_dirs {
   pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_
}

export PS1='$(last_two_dirs) $(__git_ps1) ➡  '

Но я получаю сообщение об ошибке bash: rev: command not found каждый раз, когда запускаю git bash.

Я правильно установил PATH, так как другие команды работают правильно, кроме rev. Разве rev не является частью git bash? Или есть какой-либо другой способ показать только родительский и текущий каталог для приглашения bash?

ОС: Windows 10

3
FatehAK 1 Май 2019 в 16:46

4 ответа

Лучший ответ

Это код, который работал для меня -

PROMPT_COMMAND='case $PWD in
        $HOME) HPWD="~";;
        $HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        $HOME/*) HPWD="~/${PWD##*/}";;
        /*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        *) HPWD="$PWD";;
      esac'
PS1='$HPWD \$'

По ссылке.

1
FatehAK 1 Май 2019 в 15:29

В вашей среде нет команды rev. Однако вам это не нужно, есть встроенные средства для того, что вы хотите сделать.

Чтобы получить текущий рабочий каталог в своем PS1, используйте $PROMPT_DIRTRIM переменную количество конечных каталогов для сохранения:

PROMPT_DIRTRIM=2

Это даст вам подсказку, как

~/.../subdir/subsubdir$
5
Benjamin W. 1 Май 2019 в 14:07
function last_two_dirs () 
{ 
        awk -F/ '{print ((NF>1)?$(NF-1)"/":"")""$NF}' <<< $PWD
}
0
jthill 1 Май 2019 в 16:44

Вы можете просто использовать

pwd | sed -r 's|.*/([^/]+/[^/]+)$|\1|'

Вместо

0
A.H. 1 Май 2019 в 17:02