Wanneer u Terminal gebruikt in 10.3 en 10.4, gebruikt u waarschijnlijk de bash-shell - dit is de standaard, tenzij u een upgrade-installatie gebruikt die voorheen tcsh gebruikte.
Als u niet bekend bent met wat een "shell" is, is het eigenlijk een programma dat wordt uitgevoerd en de interface biedt die u gebruikt bij communicatie met de Unix-kant van OS X via Terminal. In de eerste versies van OS X stelde Apple de standaard shell in op tcsh, maar overgeschakeld naar bashen met de release van OS X 10.3 en nieuwer.
Een van de kenmerken van bash is een promptregel die de huidige werkmap laat zien. Terwijl u door de bestandsstructuur navigeert, weerspiegelt uw promptstring constant de huidige werkdirectory:
gargantua5:~ robg$ cd Library/gargantua5:~/Library robg$ cd Widgets/gargantua5:~/Library/Widgets robg$ cd WindGuru.wdgt/gargantua5:~/Library/Widgets/WindGuru.wdgt robg$
Hoewel dit in theorie geweldig is, kan het in de praktijk niet zo geweldig zijn. Bedenk wat er gebeurt als u inzoomt op een diep begraven systeemmap, zoals deze:
gargantua5:/System/Library/CoreServices/Dock.app/Contents/Resources robg$
Als je een Terminal-venster van 80 tekens hebt, loopt de bovenstaande promptregel eigenlijk volledig rond de breedte van je scherm. Dit maakt het erg moeilijk om in Terminal te werken, omdat je scherm een verwarrende wirwar van opdrachten, padweergave en uitvoer wordt. Er zijn veel oplossingen voor dit probleem, maar hier zijn er twee die ik leuk vind.
Voor beide oplossingen moet u de vi
editor om die van uw gebruiker te bewerken .bash_profiel
bestand, in uw homedirectory. Start Terminal en zorg ervoor dat u zich in uw thuismap bevindt door te typen CD
en druk vervolgens op Return. Typ vervolgens vi .bash_profile
. Als u een bestaand bestand heeft, wordt dit geopend voor bewerking. Zo niet, dan wordt er een nieuw bestand geopend. Volg vanaf daar de juiste oplossing zoals u wilt.
Oplossing 1: gebruik de titelbalk van de terminal
In plaats van je pad in je prompt weer te geven, kun je bash de prompt laten weergeven in de titel van je Terminal-venster, zoals deze:
Om dit te doen, hoeft u alleen maar deze twee regels toe te voegen aan de .bash_profiel
bestand:
export PROMPT_COMMAND='echo -n "^[]1;$PWD^G"'PS1='e[7m [u] :[e[0;m] '
U kunt echter niet alle bovenstaande tekst gewoon kopiëren en plakken - de tweede regel werkt, maar de eerste regel bevat twee speciale "tussen aanhalingstekens"-commando's. Dus hier is hoe je het invoert. Eerste druk i
zetten vi
in de invoegmodus.
Kopieer en plak vervolgens alles tot, maar niet inclusief, het eerste dakje (^
). De volgende twee karakters, ^[
, vertegenwoordigen de feitelijke Escape-toets. Om het in te typen vi
, typ Control-V en druk op Escape. Hiermee worden de gecodeerde Escape-sleuteltekens ingevoerd. U kunt dan alles kopiëren en plakken tot, maar ook weer niet inclusief, het volgende dakje. Om de ^G
, gebruik je dezelfde procedure: typ Control-V en druk vervolgens op Control-G. Typ ten slotte het afsluitende dubbele aanhalingsteken en het enkele aanhalingsteken. Wauw.
Nadat u de twee regels hebt ingevoerd, drukt u op Escape en typt u :w
om uw wijzigingen op te slaan, en :Q
om de editor te verlaten. Open een nieuw Terminal-venster en je zou het pad in de titel moeten zien, en een mooie korte prompt met je gebruikersnaam.
Ik zal niet proberen de voodoo in deze twee commando's uit te leggen, behalve de eerste werken om de venstertitel, en de tweede gebruikt enkele ASCII-codes om de zwart-op-witversie van uw gebruikersnaam te maken als de snel. Sla het bestand op door op Escape te drukken Hoewel veel mensen de voorkeur geven aan deze ultra-schone prompt met het pad in de titel van het venster, vind ik I zoals op zijn minst een korte herinnering aan mijn huidige map in mijn prompt, en dat is precies wat u krijgt met de volgende oplossing.
Oplossing 2: beperk de lengte van het weergegeven pad
De tweede oplossing beperkt het pad van de prompt tot een bepaald aantal tekens. Ongeacht hoe diep u in het systeem boort, u ziet alleen het gewenste aantal tekens in de prompt. Open de .bash_profiel
bestand zoals hierboven uitgelegd, drukt u op i
om de invoegmodus te openen en plak de volgende code:
function prompt_command { # Hoeveel tekens van de $PWD moeten lokaal worden bewaard 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] '
Laat alles zoals je het ziet, behalve mogelijk de 23
, wat aangeeft hoeveel tekens u in het pad van de prompt wilt zien. Als je klaar bent, druk je op Escape om de invoegmodus te verlaten en typ je :w
En :Q
.
Net als bij de eerste oplossing, is er hier een mooie voodoo gaande om het pad te verkorten (dat is wat de functie doet) en het vervolgens weer te geven in je prompt. Open een nieuw Terminal-venster en navigeer naar een diep begraven map, en je zou zoiets als dit moeten zien:
Bronnen/English.lproj [robg]:
Hoewel dit niet zo handig is als het volledige pad, is het in ieder geval voldoende om me eraan te herinneren waar ik was voordat ik mijn volgende opdracht uitvoerde.