Mój terminal ma domyślny format monitu, taki jak ten:
nazwa użytkownika @ nazwa skrzynki / ścieżka / do / bieżącego / katalogu $
Kod, który go tworzy, wygląda następująco: (ma też kilka definicji kolorów)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]'
Jeśli ścieżka do bieżącego katalogu staje się zbyt długa, praca z terminalem staje się nieprzyjemna, ponieważ ciągle przerywasz linie. W takich przypadkach wolałbym format, który generuje krótszy ciąg taki jak ten:
nazwa użytkownika @ nazwa skrzynki bieżąca nazwa_katalogu $
Kod, który go tworzy, wyglądałby tak (ponownie z kolorem):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] $(basename ${PWD}) \$ \[\033[00m\]'
Czy ktoś wie, jak łatwo zmienić format bieżącego okna terminala z jednego stylu na drugi, wpisując na przykład prompttoggle
:?
bash
gnome-terminal
Rotareti
źródło
źródło
PROMPT_DIRTRIM=0
iPROMPT_DIRTRIM=1
wydaje się prostsze niż przełączanie między różnymi wartościami,PS1
a wynik jest prawie taki sam. Dzięki za informację!PROMPT_DIRTRIM
jednego można również dodać argumenty do polecenia. Jeśli nie podasz żadnego argumentu, przełączysz się między,PROMPT_DIRTRIM=0
aPROMPT_DIRTRIM=1
jeśli podasz liczbę jako argument, ustawiszPROMPT_DIRTRIM
go.promptlen
byłaby wówczas bardziej odpowiednia nazwa dla polecenia.Odpowiedzi:
Przechowuj zarówno swoje długie, jak i krótkie
PS1
zmienne pod inną nazwą:Pamiętaj, aby
PS1
początkowo ustawić jedną z nich:Następnie możesz utworzyć taki alias, aby przełączać się między dwiema wartościami PS1:
Dodanie wszystkich czterech wierszy do
~/.bashrc
pliku będzie podobne do polecenia dostępnego w sesjach Bash, oto znowu dla łatwiejszego kopiowania:źródło
Możesz użyć małej
bash
funkcji:Powyższa funkcja jest zgodna, jeśli prąd
$PS1
zawierabasename
, jeśli tak, wówczas ustawiane jest „PS1
bez”, wbasename
przeciwnym raziebasename
ustawiona jest „ z” .Umieść tę funkcję w swojej,
~/.bashrc
aby była dostępna we wszystkich interaktywnych sesjach.Przykład:
źródło
Lub ... wykonaj dwie bardzo małe funkcje i dodaj do końca swojego
~/.bashrc
w przypadku skróconego monitu wpisz
promptshort
, aby wrócić do pełnej ścieżki, wpiszpromptlong
\W
pokazuje tylko bieżący katalog roboczy, więc$(basename ${PWD})
jest overkill imhoMożesz połączyć w jedną funkcję, ale „długie” i „krótkie” są opisowe i oba mają mniejszą liczbę naciśnięć klawiszy niż „przełączanie”;)
Zamiast dodawać wiersz, aby zastąpić PS1, wolę ulepszyć kod, który go ustawia (na przykład, anuluj komentarz
force_color_prompt=yes
i edytuj wiersz po[ "$color_prompt" = yes ]; then
)źródło
Oto
~/.bashrc
definicja funkcji, której osobiście używam do resetowania / przełączania monitu z regularnego na monit$
. Dostosuj go odpowiednio do swoich potrzeb.źródło
To jest odpowiedź na Twój problem (długie katalogi łamią linię poleceń), a nie na twoje pytanie (jak zmienić wiersz polecenia w locie).
Rozwiązałem ten problem wiele lat temu za pomocą tego monitu:
Co to robi:
Daje to całą przestrzeń potrzebną do wykonania polecenia, nie przesuwa go we właściwy sposób, gdy znajdujesz się w głębokiej strukturze katalogów, nie zmienia linii pisania za pomocą kodów kolorów (unikając czasami dziwnych błędów), a jednocześnie daje kolorowe wskazówka, gdzie zakończyło się wyjście jednego polecenia, a następne rozpoczęło:
źródło