Jak mogę uzyskać Terminal.app w OS X, aby wyświetlić bieżący katalog w tytule okna lub karty?
Używam powłoki bash.
macos
bash
terminal
terminal.app
Kareman
źródło
źródło
Odpowiedzi:
Zależy od twojej powłoki.
W tym artykule przedstawiono wiele metod.
Ja osobiście używam zsh, który ma wygodną funkcję precmd (), która jest uruchamiana przed każdym monitem.
Chociaż w innych pytaniach wymieniono metody bash, aliasy cd. Bash zapewnia nieodłączną metodę, która oddziela tylko monity.
źródło
~/.profile
(lub równoważnym) pliku na zdalnym komputerze.Skopiuj i wklej do pliku ~ / .profile:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
Spowoduje to ustawienie tytułu bieżącej karty terminala na nazwę folderu, w którym się znajdujesz (NIE całą ścieżkę).
Więc ...
Developer/Applications/Utilities/Bluetooth/
staje się =>Bluetooth
źródło
Począwszy od systemu Mac OS X Lion 10.7, Terminal ma jawną sekwencję ucieczki do ustawiania katalogu roboczego, który Terminal wyświetla za pomocą standardowej ikony „proxy” w oknie. Umożliwia to kliknięcie z wciśniętym klawiszem Command, aby zobaczyć ścieżkę, odsłonić w Finderze lub przeciągnąć jak jakikolwiek inny folder. Ponadto Terminal może to wykorzystać do utworzenia innego terminala w tym samym katalogu oraz do przywrócenia katalogu roboczego podczas zamykania / ponownego uruchamiania Terminalu (gdy włączone jest Wznowienie). Umożliwia także przywracanie katalogów dla grup okien.
Jest to ta sama sekwencja zmiany znaczenia komendy systemu operacyjnego, jak w przypadku tytułów okien i kart, ale z pierwszym parametrem ustawionym na 7. Wartość powinna być adresem URL „file:”, który umożliwia kodowanie procentowe znaków specjalnych, aby mógł obsługiwać wszystkie poprawne nazwy ścieżek. Powinieneś także dołączyć nazwę hosta, aby Terminal mógł ustalić, czy jest to katalog lokalny; Terminal uniknie używania go jako bieżącego katalogu roboczego, jeśli pochodzi z innego hosta.
W powiązanej notatce Terminal podobnie obsługuje ustawianie „reprezentowanego pliku” za pomocą sekwencji ucieczki OSC z parametrem 6. Jeśli jest ustawiony, ikona proxy wyświetli to zamiast katalogu roboczego. Na przykład mam emacsa i mniej skonfigurowane do odzwierciedlania aktualnie wyświetlanego pliku / bufora w ikonie proxy. Dzięki temu te programy oparte na tty mogą być bardziej zintegrowane z otaczającym systemem operacyjnym.
Zachowania katalogu roboczego są domyślnie włączone dla bash (domyślna powłoka w Mac OS X). Odpowiedni kod znajduje się w / etc / bashrc.
Warto również wspomnieć, że Lion Terminal obsługuje teraz ustawianie tytułu karty niezależnie od tytułu okna za pomocą sekwencji ucieczki OSC.
źródło
update_terminal_cwd
Funkcja będzie ustawiona ikonę proxy do bieżącego katalogu roboczego. Domyślnie$PROMPT_COMMAND
jestupdate_terminal_cwd
.Oprócz zalecania używania sekwencji ucieczki poleceń systemu operacyjnego specyficznej dla terminala Apple:
ESC ] Ps ; Pt BEL
gdziePs
jest7
iPt
jestfile:
adresem URL; warto dodać, że w Mac OS X 10.11 (i prawdopodobnie od 10.7) jest plik/etc/bashrc_Apple_Terminal
(nieedytowalny pod 10.11), który definiuje wygodęupdate_terminal_cwd()
jako (bez komentarzy):Możesz użyć tego również na zdalnych skrzynkach, na wypadek, gdybyś chciał to zrobić, a następnie podrapać się po poprawnym zakodowaniu adresu URL pliku w bash.
A jeśli zmienisz
PROMPT_COMMAND
się sam.bash_profile
lub.bashrc
zapomnisz to nazwać. W tym samym pliku pokazują przykład lepszego połączenia łańcuchowego za pomocą:Osobiście
.bash_profile
chciałem dodać polecenie git, więc zrobiłem to:źródło
Rozwiązania Bash obejmujące PS1 i PROMPT_COMMAND kończą się niepowodzeniem, jeśli katalog zawiera znaki Unicode (przynajmniej w systemie Snow Leopard). Najlepszym rozwiązaniem, jakie mogłem wymyślić, było zrobienie odpowiednika
Niestety nie działa to bezpośrednio, więc zamiast tego zdefiniowałem funkcję powłoki, aby wykonać
tr
wywołanie:Działa to dobrze w przypadku akcentów łacińskich, które będą w formacie Unicode NFD (akcenty znikną, ale pozostanie podstawowa postać łacińska).
Niestety, całkowicie zawiedzie w przypadku takich rzeczy jak chiński.
źródło
Zakładając, że używasz domyślnego terminala MAC, możesz użyć następującego w .profile, ponieważ sam „set_prompt” może wysłać cię do folderu głównego po otwarciu nowej karty:
źródło
Wpisz to do swojego ~ / .profile lub równoważnego pliku:
Pierwszy wiersz zawiera dwa znaki specjalne, których nie można skopiować / wkleić, ale tekst można pobrać stąd: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh .
źródło
echo
używaniaprintf
, co pozwala wyrazić te znaki (ESC i BEL / Control-G) za pomocą sekwencji ucieczki:printf '\e]0;$@\a"