dinsdag 18 augustus 2009

Wat ik moet weten over prompt aanpassen

  • Wat is BASH?
  • Wat is een Prompt?
  • Waarom een Prompt veranderen?
  • Waar is de Prompt opgeslagen?
  • De mogelijke opties
  • Aan de slag
  • Externe Commando’s gebruiken
  • Kleur gebruiken
  • Prompt permanent opslaan

Wat is BASH

BASH (Borne Again Shell) is een veel gebruikte shell (commandline) in Linux met een scala aan mogelijkheden. Veel mensen die de oudere Windows OS hebben gebruikt kunnen zich vast nog wel herinneren dat ze commando’s in DOS moesten typen. In het huidige Windows tijdperk wordt commando’s typen als irritant en te moeilijk ervaren. In Linux wordt het wel aangeraden, want het kan je veel werk en tijd besparen. Commando’s die je in je console typt zijn daadwerkelijk kleine programma’s die je leven makkelijker kunnen maken. Je kunt er specifieke taken mee laten uitvoeren, zelfs op je eigen aangegeven tijdstip. Je kunt commando’s ook met elkaar combineren zodat je een nog beter resultaat krijgt. De praktijk leert ons dat het een stuk sneller is dan in een grafische omgeving. Je kunt BASH op verschillende manieren starten,onder Linux kan je bijvoorbeeld CTR + ALT + F1 t/m F6 indrukken. Vervolgens inloggen en WHOLA. (Om weer terug te keren in de grafische omgeving druk je op CTR + ALT +F7 Dat werkt voor de meeste distributies)

Wat is een Prompt?

Ik heb er een tijdje over na zitten denken hoe ik een definitie van een Prompt kan geven. Het is iets moeilijker dat het lijkt. Ik zal het toch even proberen uit te leggen, eerst maar door middel van een definitie en vervolgens met een voorbeeld.

Een Prompt is de data die voor de cursor geprint kan worden in de Borne Again Shell. Deze data kan van alles bevatten zoals tijd, datum, directory, gebruikers, uptime etc.

Een Voorbeeld van een Prompt:
[accessko@unix /home] $

Waarom een Prompt veranderen?

Je zult misschien wel denken, waarom nou een Prompt veranderen?’ Zoals jullie misschien al weten is Linux een multi-user systeem, dat betekent dat er meerdere gebruikers (ook tegelijkertijd) op één systeem kunnen werken. Het is dan handig om bijvoorbeeld bepaalde gebruikers een kleur te geven zodat je weet met welke gebruiker je werkt, zo voorkom je misschien dat je de bestanden verwijderd die je niet wilde verwijderen. Persoonlijk gebruik ik een Prompt om de informatie die ik altijd beschikbaar wil hebben weer te geven.

Waar is de Prompt opgeslagen

De Prompt wordt opgeslagen in de zogenoemde $PS String, er zijn vier PS strings, $PS1, $PS2, $PS3, $PS4. Ik beperkt me tot de $PS1 String, daar gaan we mee werken, de andere PS Strings zijn voor de gevorderde gebruikers en bevatten ook andere data.

[accessko@unix] echo $PS1
[\u@\H]
[accessko@unix]

Door middel van echo commando wordt de $PS1 string geprint op het scherm. Deze Prompt bevat een aantal opties:

  • \u staat voor user (gebruiker)
  • \H staat voor hostname
  • De @ en [ ] zijn optioneel. Dit betekent dat je zelf de tekens mag kiezen die je graag in je Prompt terug ziet.

Jouw output bevat natuurlijk eigen data, zoals jouw gebruikersnaam, computernaam, datum, tijd etc.

De mogelijke opties

De Prompt heeft een aantal opties die je aan de $PS1 string kan meegeven. Ik zal ze niet allemaal behandelen. Voor het complete overzicht verwijs ik je naar de handleiding van BASH, toets in de Shell het volgende commando: $ man bash om de handleiding te kunnen lezen. Aantal opties die mogelijk zijn:

  • \d De datum “Weekdag, Maand, Dag” voorbeeld “Tue Feb 28″
  • \H De gebruikers naam.
  • \j Het aantal jobs in de huidige shell.
  • \l De basisnaam van de shell.
  • \n Nieuwe regel (Enter)
  • \t De huidige tijd in 24 uur HH:MM:SS formaat
  • \T De huidige tijd in 12 uur HH:MM:SS formaat
  • \u De gebruikersnaam van de huidige gebruiker.
  • \v Het versie nummer van BASH
  • \w De huidige werk directory
  • \W De basisnaam van de huidige werk directory
  • \! De geschiedenis van de commando’s
  • \# Het aantal keren dat de commando’s zijn gebruikt

Aan de slag.

We gaan hier voor het eerst de $PS1 string aanpassen. Ik zal hieronder een aantal voorbeelden laten zien hoe je dat doet.

[accessko@unix] PS1="\u#\H [\w] $ "
accessko#unix [/home] $

accessko#unix [/home] $ echo $PS1
\u#\H [\w] $
accessko#unix [/home] $

Zoals je ziet heb je de Prompt veranderd. We hebben de optie \w toegevoegd en de [ ] verplaatst. Ook hebben we de @ teken veranderd in # en een dollarteken $ toegevoegd.

accessko#unix [/home] $ PS1="[\t] [\d] \u@\H $ "
[22:45:31] [Tue Feb 28] accessko@unix $

Zoals je al ziet hebben we hier de tijd en datum toegevoegd. Ik zou zeggen probeer maar gewoon wat uit, wat voor jou het handigste lijkt. De $PS1 string is alleen aan deze sessie gekoppeld. Wanneer je de shell afsluit zal de default Prompt weergegeven worden. Om de Prompt permenent op te slaan zal je de bashrc script aan moeten aanpassen. Hoe je dat doet vertel ik je later.

Externe commando’s gebruiken

Je hoeft je niet beperken tot alleen de opties zoals \u, je kunt ook externe commando’s in je Prompt verwerken. Deze mogelijkheid opent veel deuren. zodat je niet beperkt hoeft te zijn in alleen de opties. Wel wil ik erbij vermelden dat je de commando’s goed moet uitzoeken. Sommige commando’s kunnen veel uitput printen en je zou niet willen dat jouw Prompt tien of meer regels bevat. Kies daarom de commando’s met zorg uit, juist diegene die zich beperken tot een kleine hoeveelheid tekens. Een externe commando roep je met een dollar $ teken op. Een voorbeeld:

accessko@unix [/home] $ PS1=="[\$ (date +%H%M)] \u@\H [\w]: $
[12:00] accessko@unix [/home]: $
[12:01] accessko@unix [/home]: $

Wat we hier gedaan hebben is een tijd toegevoegd door middel van date commando. Date commando hebben we beperkt tot (%H) uren en (%M) minuten. Het commando ziet er als volgt uit:
\$ (date +%H%M)
De backslash (\) voor de $ teken betekent dat het commando elke keer opnieuw wordt uitgevoerd. Zonder deze backslash zou je de hele sessie dezelfde tijd geprint krijgen. Nog een voorbeeld:

accessko@unix [/home] $ PS1="\$(echo "Tijd") \$(date +%H:%M) \u@\H [\w]$ "
Tijd 16:41 accessko@unix:[/home]$

In dit voorbeeld heb ik twee commando’s gebruikt. (Je ziet ook twee maal \$ teken) Het eerste commando echo print het woord “Tijd” op het scherm. Het tweede commando date zag je al in het eerste voorbeeld, deze print het (16:41) op het scherm.

Kleur Gebruiken


Zoals ik al eerder vermelde is het mogelijk om in de Prompt verschillende kleuren te gebruiken. Het is mogelijk om de tekstkleur te veranderen maar ook de achtergrondkleur. Het is wat het beste bij jou past. De kleuren worden gedefinieerd door middel van een kleurcode die uit cijfers bestaat. Ik zal eerst een kleine lijst weergeven met de meest gebruikte kleuren.

kleur-code.jpg
De kleurcode wordt als volgt gedefinieerd: \[\033[\...

accessko@unix [/home]$: PS1=”\[\033[0;31m [\$ (date +%H:%M)] \u@\H [\w]$: \[\033[0m"
Ziet het als volgt uit:
[15:22] accessko@unix [/home]$:

  • \[\033[0;31m is de code die de rode kleur weergeeft.
  • \[\033[0m zorgt ervoor dat de tekst die je na je Prompt typt op default staat (meestal wit). Wanneer je deze regel weglaat zal de tekst die je na je Prompt typt ook rood zijn.

Het is ook mogelijk om je achtergrondkleur te kiezen. Net als bij tekstkleur gebruik je hier een kleurcode die uit cijfers bestaat, bijvoorbeeld kleur groen is 42, rood 41, blauw 44 etc. De achtergrond maakt geen gebruik van lichte of donkere kleuren zoals bijvoorbeeld Donker Rood.
accessko@unix [/home]$: PS1=”\[\033[42;0;31m [\$ (date +%H:%M)] \u@\H [\w]$: \[\033[0m”

Prompt permanent opslaan

Al deze bovengenoemde voorbeelden zijn gekoppeld aan een sessie, sluit je de sessie af en zal de Default PS1 String weer optreden. Wanneer je toch besluit om je Prompt permanent op te laten slaan zal je het bashrc script moeten aanpassen. Eerst moet je het bashrc-script lokaliseren. Er zijn verschillende Linux distributies die bashrc-script in verschillende folders plaatsen. De meest voorkomende plaatsen zijn: /etc/bashrc, /etc/profile, ~/.bashrc Vervolgens open je het bestand met je favorite editor en lokaliseer de PS1 string. Verander deze na je eigen smaak en sla dit bestand weer op. Dit bestand heeft root rechten en zal je dus als root ingelogt moeten zijn.

Geen opmerkingen:

Een reactie posten