Kiedy używasz Terminala w wersjach 10.3 i 10.4, prawdopodobnie używasz powłoki bash — jest to ustawienie domyślne, chyba że używasz aktualizacji, która wcześniej korzystała z tcsh.
Jeśli nie wiesz, czym jest „powłoka”, w rzeczywistości jest to program, który działa i zapewnia interfejs, którego używasz podczas komunikacji z uniksową stroną systemu OS X za pośrednictwem terminala. W pierwszych wersjach OS X Apple ustawił domyślną powłokę na tcsz, ale przełączyłem na grzmotnąć wraz z wydaniem OS X 10.3 i nowszych.
Jedną z cech basha jest linia zachęty, która pokazuje bieżący katalog roboczy. Gdy przechodzisz do struktury plików, ciąg zachęty stale odzwierciedla bieżący katalog roboczy:
gargantua5:~ robg$ cd Library/gargantua5:~/Library robg$ cd Widgets/gargantua5:~/Library/Widgets robg$ cd WindGuru.wdgt/gargantua5:~/Library/Widgets/WindGuru.wdgt robg$
Chociaż w teorii jest to świetne, w praktyce może nie być tak wspaniałe. Zastanów się, co się stanie, gdy przejdziesz do głęboko zakopanego folderu systemowego, takiego jak ten:
gargantua5:/System/Library/CoreServices/Dock.app/Contents/Resources robg$
Jeśli masz 80-znakowe okno terminala, powyższa linia zachęty faktycznie zawija się całkowicie wokół szerokości ekranu. To sprawia, że praca w Terminalu jest bardzo trudna, ponieważ ekran staje się mylącą mieszanką poleceń, wyświetlania ścieżek i danych wyjściowych. Istnieje wiele rozwiązań tego problemu, ale oto dwa, które mi się podobają.
W przypadku obu tych rozwiązań musisz użyć wi
edytor, aby edytować użytkownika .bash_profil
plik w swoim katalogu domowym. Uruchom Terminal i upewnij się, że jesteś w swoim katalogu domowym, wpisując płyta CD
a następnie naciśnij klawisz Return. Następnie wpisz vi .bash_profile
. Jeśli masz istniejący plik, zostanie on otwarty do edycji. Jeśli nie, otworzy się nowy plik. Stamtąd postępuj zgodnie z odpowiednim rozwiązaniem, jak wolisz.
Rozwiązanie 1: Użyj paska tytułu terminala
Zamiast wyświetlać ścieżkę w monicie, bash może wyświetlać monit w tytule okna terminala, na przykład:
Aby to zrobić, wystarczy dodać te dwie linie do pliku .bash_profil
plik:
export PROMPT_COMMAND='echo -n "^[]1;$PWD^G"'PS1='e[7m [u] :[e[0;m] '
Jednak nie możesz po prostu skopiować i wkleić całego powyższego tekstu - druga linia będzie działać, ale pierwsza linia zawiera dwa specjalne "cytowane" polecenia. Oto jak go wprowadzić. Pierwsze naciśnięcie I
położyć wi
w trybie wstawiania.
Następnie skopiuj i wklej wszystko do pierwszej daszki, ale nie włączając (^
). Następujące dwie postacie, ^[
, reprezentują rzeczywisty klawisz Escape. Aby go wpisać wi
, wpisz Control-V, a następnie naciśnij Escape. Spowoduje to wprowadzenie zakodowanych znaków klawisza Escape. Następnie możesz skopiować i wkleić wszystko do następnej karetki, ale znowu nie włączając. Wejść do ^ G
, użyj tej samej procedury — naciśnij Control-V, a następnie naciśnij Control-G. Na koniec wpisz zamykający podwójny cudzysłów i pojedynczy cudzysłów. Uff.
Po wprowadzeniu dwóch wierszy naciśnij Escape, a następnie wpisz :w
aby zapisać zmiany i :Q
opuścić edytor. Otwórz nowe okno terminala i powinieneś zobaczyć ścieżkę w tytule oraz ładny krótki monit zawierający twoją nazwę użytkownika.
Nie będę próbował wyjaśniać voodoo zachodzącego w tych dwóch poleceniach, poza pierwszymi pracami nad ustawieniem tytuł okna, a drugi wykorzystuje niektóre kody ASCII do utworzenia czarno-białej wersji nazwy użytkownika jako podpowiedź. Zapisz plik, naciskając Escape Podczas gdy wiele osób preferuje ten ultra czysty monit ze ścieżką w tytule okna, znajduję I jak przynajmniej krótkie przypomnienie mojego bieżącego katalogu w moim monicie, co jest dokładnie tym, co otrzymasz w następnym rozwiązaniu.
Rozwiązanie 2: Ogranicz długość wyświetlanej ścieżki
Drugie rozwiązanie ogranicza ścieżkę podpowiedzi do określonej liczby znaków. Niezależnie od tego, jak głęboko zagłębisz się w system, w monicie zobaczysz tylko preferowaną liczbę znaków. Otworzyć .bash_profil
plik, jak wyjaśniono powyżej, naciśnij I
aby przejść do trybu wstawiania, a następnie wklej następujący kod:
function prompt_command { # Ile znaków $PWD powinno być przechowywanych lokalnie pwd_length=23 if [ $(echo -n $PWD | wc -c | tr -d " ") -gt $pwd_length ] then newPWD="$(echo -n $PWD | sed -e "s/.*(.{$pwd_length})/1/")" else newPWD="$(echo -n $PWD)" fi}PROMPT_COMMAND=prompt_commandexport PROMPT_COMMANDPS1='e[7m$newPWD [u]:[e[0;m] '
Zostaw wszystko tak, jak to widzisz, poza ewentualnie 23
, która reprezentuje liczbę znaków, które chcesz zobaczyć w ścieżce monitu. Po zakończeniu naciśnij Escape, aby wyjść z trybu wstawiania, a następnie wpisz :w
I :Q
.
Podobnie jak w przypadku pierwszego rozwiązania, dzieje się tutaj jakieś fantazyjne voodoo, aby skrócić ścieżkę (tak robi ta funkcja), a następnie wyświetlić ją w monicie. Otwórz nowe okno Terminala i przejdź do głęboko zakopanego folderu, a powinieneś zobaczyć coś takiego:
Resources/English.lproj [robg]:
Chociaż nie jest to tak przydatne jak pełna ścieżka, przynajmniej przypomina mi, gdzie byłem, zanim wykonam następne polecenie.