vim
ma naprawdę fajną funkcję, którą wykorzystuje na swoich ścieżkach, gdy są nieco długie:
Skraca ścieżkę do dokumentu w zakładce u góry. Czy istnieje sposób na zrobienie czegoś podobnego do tego, aby mój monit bash nie wyglądał tak:
rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $
rfkrocktk@work-laptop ~/D/P/W/m/src/main/java/com/tkassembled/ $
? Idealnie, używając pewnego progu dla maksymalnej długości pytania?Odpowiedzi:
Wypróbuj to :
lub czysty bash:
następnie
produkuje (zwróć uwagę
~
na${HOME}
):Poprawiłem swoją odpowiedź dzięki @ enzotib's
źródło
$PWD
→~
testowi. Obecnie, jeśliHOME
jest/home/ed
iPWD
jest/home/edwina
, masz~wina
wersję Perla i~/ina
wersję powłoki. (2) Twój kod powłoki dusi się, jeśli bieżący katalog zawiera znaki wieloznaczne (tj. Rozwinięcie nazwy ścieżki); np .PWD
=/abc/*/def
. Możesz to naprawić, dodającset -o noglob
lubset -f
. … (Ciąg dalszy)$HOME
(wewnątrz podwójnych cudzysłowów) i$PWD
są wystarczająco dobre. W polecenia powłoki, ostatnie trzy referencje zmienne powłoki są w porządku, ale pierwsze trzy mogą być"${PWD#$HOME}"
,"$PWD"
i"$p"
. (4) Zobacz także odpowiedź mbentley i moje komentarze na ten temat.Podobne do odpowiedzi @nicerobot, ale nieco krótsze:
Spowoduje to wyświetlenie następującego przykładowego wyniku:
źródło
Lubię
PROMPT_DIRTRIM
w bash ...zmieni przykładowy monit na ...
Mi to pasuje.
źródło
Dodając do odpowiedzi enzotib , następujący fragment kodu :
/Path/To/Your/Home/
na~/
(więc~/a/b/c
zamiast ścieżki będzie/P/T/Y/H/a/b/c
)Użyj pierwszej litery „pliku kropkowego” zamiast pokazywać tylko kropkę (
/a/./c/d
stanie się/a/.b/c/d
):Upewnij się, że używasz pojedynczych cudzysłowów, bo bash przedwcześnie go rozwinie.
źródło
Format do użycia w twoim
PS1
jest\W
(zobaczPROMPTING
sekcję nabash
stronie man).I możesz przeczytać inne opcje tam, możesz zrobić fajne rzeczy za pomocą wiersza poleceń.
źródło
Uwielbiam wyniki z przykładu nicerobota, ale znalazłem jeden problem. Mam katalog, w którym znajduje się łącznik
A-E
, i był postrzegany-E
jako argument do tego,printf
kiedy był to mój bieżący katalog roboczy. Aby to naprawić, dodałem--
do ostatniegoprintf
i dodałem cudzysłowy wokół wyjścia, na wypadek gdyby nie było nic do wyjścia:źródło
-
jako drugi znak. Chociaż prawdą--
jest, że jest to ogólne rozwiązanie problemu argumentów rozpoczynających się od-
, lepszym sposobemprintf
jest powiedziećprintf "%s" "${q:1}"
, ponieważ chroni to również przed zawieraniem argumentów%
. (Na przykład spróbujPWD
=/home/mbentley/Documents/Projects/Work/maventest/src/main/java/com/abc%def
. (2) Zobacz także moje komentarze do odpowiedzi nicerobota.