Sposób, w jaki aktualnie konfigurowany jest mój monit bash, pokazuje całą ścieżkę do bieżącego katalogu. Jest to denerwujące, gdy jestem głęboko w drzewie katalogów, ponieważ monit staje się tak długi, że każde polecenie zawija się do następnego wiersza. Jak sprawić, by pokazywał tylko ostatnią część ścieżki?
Oto co mam w swoim .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
źródło
case
oświadczenie zastępuje go, gdy jestem na xterm, a problem wydaje się być zPWD
wPROMPT_COMMAND
linii. Czy wiesz co powinienem tam umieścić?\w
(małe litery) ustawia go na pełną ścieżkę,\W
(wielkie litery) przycina do ostatniego bitu. PROMPT_COMMAND ustawia tytuł okna w xterm. sprawdź swoją zmienną TERM; jeśli nie zaczyna się od „xterm” lub „rxvt”, to PROMPT_COMMAND nawet się nie uruchamia.Proste polecenie zamiany bash jest
Aby wyświetlić ostatni katalog, możesz po prostu zrobić
${PWD/*\//}
, tj. Znaleźć dowolną rzecz przed ostatnim, włączając w to ostatni „/
” i zastąpić go niczym.Na mojej maszynie ubuntu używam:
źródło
Moim rozwiązaniem jest wyświetlenie górnych trzech i dolnych 2 katalogów, gdy jest ich więcej niż 5
Mój monit (który zawiera także inne informacje) wygląda następująco:
kiedy faktycznie jest mój pwd
Mój monit PS1 jest konfigurowany w następujący sposób:
git_branch
jest funkcją, która pokazuje bieżącą gałąź git, trzymam ją w moich plikach dot, jest to:źródło
Moje rozwiązanie tego problemu różni się nieco pod względem eksportu, więc pomyślałem, że podzielę się tutaj:
Utwórz kolejną zmienną ciągu zachęty; PS5 i wyeksportuj następujący ciąg do pliku
.profile
/.bash_profile
:Teraz, gdy potrzebujesz użyć skróconego PS, po prostu uruchom:
eval $PS5
Lub jeszcze lepiej, utwórz alias w swoim
.bash_aliases
pliku: (dzięki @muru )source
ponownie, a teraz możesz po prostu wpisać,PS5
aby przełączyć.źródło
Większość innych rozwiązań nie działała dla mnie we wszystkich moich systemach operacyjnych, które współużytkują moje pliki kropek: AIX, Windoze i Linux. Porty bash były stare wersje, które nie obsługują niektóre konstrukcje i nie chcą bulić inny proces (tj
sed
,awk
etc.), która jest zauważalnie droższe pod Cygwin.Poniższe jest długie, ale wydajne:
Chcę, żeby wypluł:
Zwróć uwagę na brak wiodącego ukośnika w ostatnim wierszu, który mi się podoba. Możesz także wypluć ostatnie 3 katalogi, zmieniając argument na
DIR_LAST
.Ponadto próbowałem to zrobić za pomocą wyrażenia regularnego,
BASH_REMATCH
ale bash v3 nie wydawał się lubić parenów i nie mogłem wymyślić, jak właściwie z nich uciec. Westchnienie.źródło
Wierzę, że ta opcja jest znacznie łatwiejsza, po prostu wykonując:
Więc przypisz to do zmiennej PS1 w pliku .bashrc:
źródło
dodaj następujący kod na końcu swojego ~ / .bashrc
źródło