Over UNIX

The name of the game

UNIX is een besturingssysteem ontstaan in 1969. Vandaag de dag zijn er nog steeds afstammelingen van UNIX volop in ontwikkeling. Het meest bekend zijn Mac OS X en de *BSD familie. Wat meestal wordt bedoeld met UNIX zijn systemen die grotendeels compatibel zijn met UNIX, de bekendste hiervan zijn de GNU/Linux (of gewoon Linux) distributies. In die zin worden al die systemen hier onder UNIX geschaard.

Gereed maken

Als je op de faculteit op een UNIX computer (op het moment van schrijven vrijwel altijd Ubuntu) inlogt met je science login, krijg je een bureaublad voor je. De interface spreekt vrij voor zich, maar hij is wel anders dan die in Windows. Het precieze uiterlijk verandert vaak, daarom ga ik daar niet verder op in. Je kunt het vast wel uitvogelen als je ooit achter een computer hebt gezeten. Ergens in de menuutjes zit een programma genaamd xterm, terminal, console, of een variatie daarop, dat programma moet je openen. Ubuntu heeft de toetscombinatie Ctrl-Alt-t, zodat je niet hoeft te zoeken.

Als je vanuit thuis inlogt op een server, zie Thuis inloggen, krijg je dit venster, genaamd de terminal, ook voor je.

De terminal (of console) is een manier om via tekst opdrachten te geven aan een UNIX computer. Deze opdrachten, commando’s genaamd, voer je in via het toetsenbord gevolgd door Enter. De tekst die er staat voordat je iets het getypt is de prompt: deze regel geeft aan dat je terminal klaar is om een commando uit te voeren. Voor het $-teken staan meestal je gebruikersnaam, de naam van de pc of server waar je op bent ingelogd en welke directory je je bevindt (zo meer daarover). Het $-teken geeft het einde van de prompt aan, dit kan ook een > of # zijn. Achter de prompt staat de cursor (dat blokje), die niet veel anders werkt dan in een tekstverwerker.

Het voordeel van de terminal boven de grafische interface is dat de terminal interface al tientallen jaren hetzelfde is op alle UNIX pc’s, terwijl de grafische ieder jaar weer net iets anders werkt. Dus als je wil dat iemand the programma ed wil starten is het eenvoudig om te zeggen “Typ ed in een terminal.”. Daarentegen is het onwaarschijnlijk dat ed in een menuutje is te vinden, ook al staat ed op bijna iedere UNIX pc.

De directorystructuur

In tegenstelling tot Windows kent UNIX maar één directorystructuur: de allerhoogste directory (ook wel root genaamd) is / en alle andere directory’s en bestanden staan lager in de directorystructuur. Dit betekent ook dat er geen verschillende stations of drives zijn: zelfs CDROM-spelers en diskettestations worden binnen de directorystructuur geplaatst, bijvoorbeeld in het pad /mnt/cdrom. Merk overigens op dat het scheidingsteken tussen twee opeenvolgende directorynamen in een pad een / is (slash) en geen \ (backslash), zoals in Windows!

Je huidige pad is wat net voor de $ staat. Als je net bent ingelogd staat hier ~. Dit zegt op het eerste gezicht weinig, maar het is je eigen homedir: het is een afkorting voor /home/jelogin. Het is de Mijn Documenten van UNIX. Alle bestanden en directory’s die onder deze dir staan, zijn jouw eigendom en je mag er in doen wat je wilt. Althans, zolang je niet meer schijfruimte gebruikt dan je is toegewezen, ik heb geen idee hoeveel dat is. Als je even gauw een groot bestand kwijt moet, kun je dat kwijt in de directory /tmp. Let op: deze directory wordt eens per een à twee weken ’s nachts geleegd. Twee andere, afhankelijk van je huidige pad, directories zijn “.” en “..”. De directory . is die waar je je in bevindt. De directory .. is de daar bovenliggende map. Bijvoorbeeld als je je in ~ (wat dus /home/jelogin is) bevindt, dan is .. gelijk aan /home/

Belangrijke commando’s

Hier vind je enkele basiscommando’s die je moet weten als je met een UNIX-prompt wil werken. Stukken tekst tussen blokhaken [zoiets dus] duiden een optioneel stuk commando aan. Alles is hoofdlettergevoelig, maar alle commando’s hier zijn in kleine letters.

Standaard UNIX-commando’s

cd dir Ga naar de directory “dir”. Bijvoorbeeld cd .. om naar de bovenliggende directory te gaan.
pwd Geef het huidige pad weer op het scherm. (“print working directory”)
whoami Geeft de huidige user weer (‘wie ben ik?’).
ls [dir] Geef een lijst van alle bestanden in de directory “dir”, behalve bestandsnamen die met een punt beginnen (“verborgen” bestanden).
ls -l [dir] of ll [dir] Geef een lijst met details van alle bestanden in de directory “dir”, behalve bestandsnamen die met een punt beginnen.
ls -a [dir] of la [dir] Geef een lijst met details van alle bestanden in de directory “dir”, ook bestandsnamen die met een punt beginnen (verborgen bestanden).
mkdir dir Maak een nieuwe directory “dir” in de huidige directory.
rmdir dir Verwijder de directory “dir”. Dit kan alleen als deze leeg is.
mv file1 [file2 …] dir Verplaats het bestand “file1” [en de bestanden “file2”, …] naar de directory “dir”.
man commando Vraag informatie op over commando, zoals de syntax en de ondersteunde opties. Verlaat man met q.
lpr -P(printer) [opties] file Print het bestand ‘file1’ uit op de aangegeven printer. Voor mogelijke opties, bekijk man lpr.
lpq -P(printer) Bekijk de queue van de opgegeven printer.
lprm XXXX -P(printer) Verwijder printopdracht XXXX van de aangegeven printer. Om aan het nummer van de printopdracht te komen, gebruik lpq.
mv file1 file2 Wijzig de naam van het bestand of de directory “file1” in “file2”.
cp file1 file2 Kopieer het bestand “file1” naar het nieuwe bestand “file2”.
ln -s source target Laat het bestand ‘source’ naar het bestand ‘target’ verwijzen, wat ongeveer analoog werkt met een snelkoppeling in Windows.
rm [-rf] file Verwijder het bestand “file”. De opties -r en -f zijn optioneel, en dienen voorzichtig gebruikt te worden. ‘-r’ is recursief verwijderen (het gaat dus alle files en subdirs in een directory verwijderen). De optie ‘-f’ is gevaarlijk: er word niet meer gevraagd om bevestiging.
passwd Verander je wachtwoord. Omdat de infrastructuur op de faculteit best ingewikkeld is kan dit niet en word je doorverwezen.
ssh [-l user] server of
ssh user@server
Log in [als gebruiker “user”] op het apparaat “server”.
su [user] Verander de huidige gebruiker naar een andere (SwitchUser). Het argument is niet nodig, maar wel handig: ‘su’ is synoniem voor ‘su root’. Je zou dan dus verwisselen naar wat in Unix land het administratoraccount is. Als het goed is ken je op de faculteit dit wachtwoord niet.
exit Sluit de terminal of shell af.

Als je je hebt vertypt, en de opdracht al hebt verstuurd (en een foutmelding oplevert), kun je met pijltje omhoog je laatste commando’s terughalen.

Als er een unieke aanvulling is, kun je met Tab de rest van je commando of argument aanvullen, bijvoorbeeld
cd helelaTab
wordt
cd helelangenaamvaneendirectory/
Natuurlijk alleen als ``helelangenaamvaneendirectory/’ bestaat en er geen andere directories met ``helela’’ beginnen. Dit heet autocompletion en kan je veel tijd schelen.

Specifiekere opdrachtregel commando’s

Dit zijn specifiekere programma’s die je wellicht wil gebruiken omdat je natuurkundestudent bent. Deze commando’s vereisen geen X-server en kun je ook via bijvoorbeeld PuTTy gebruiken. Een programma dat enkel via een opdrachtregel te gebruiken is, wordt afgekort met CLI (Command Line Interface). Behalve vi hoef je in het algemeen beschikbaarheid van de andere commando’s niet te verwachten. Voor de marietje commando’s moet je in het bestand .bash_login de regel

source /vol/impuls/marcur/bashrc

zetten.

latex file[.tex] Compileer het bestand file.tex in LaTeX naar file.dvi .
pdflatex file[.tex] Compileer file.tex in pdfLaTeX naar file.pdf .
gcc [-o name] file.c Compileer je c-programma file.c [output=name, default: a.out].
g++ [-o name] file.cpp Compileer je C++ programma file.cpp [output=name, default: a.out].
vi of vim Teksteditor (maakt bestanden zoals kladblok), zeer onvriendelijk als je hem niet hebt bestudeerd. Als je er toch in verzeild geraakt bent, druk op Esc en typ dan :q! Enter om af te sluiten. Om er wegwijs in te worden loont het om vimtutor een paar keer te volgen.
nano Vriendelijkere, kleine teksteditor. Vooral fijn als je slechts een beetje in een text bestand moet aanpassen.
math CLI versie van Mathematica, een algebrasysteem. De interface is slecht, beter is om “readline-editor math” te doen, dan kun je dingen terug roepen en met de pijltjestoetsen door de getypte tekst navigeren.
maple CLI versie van Maple.
matlab MATLAB: numeriek computer systeem, afhankelijk of je het start met of zonder X-server ondersteuning krijg je een nieuw scherm of een CLI-versie.
octave Octave: vrije MATLAB kloon, heeft alleen CLI.
python Python interpreter
marietje Queue je favoriete muziek in de zuidkantine.
upload-to-marietje file Upload file naar marietje, herkent de tags in het bestand om auteur en titel in te voegen.
screen “Terminal multiplexer”: Laat meerdere sessies tegelijk in één terminalscherm lopen. Kan programma’s door laten lopen ook als je bent uitgelogd. Op internet zijn handleidingen te vinden.
telgids zoekterm Zoek naar de zoekterm tussen de medewerkers van de faculteit. Handig om bijvoorbeeld kantoornummers en interne telefoonnummers te vinden. Staat natuurlijk alleen op servers van de faculteit.

Grafische opdrachtregels commando’s

Deze commando’s vereisen een X server. Als je van thuis uit inlogt, lees dan het deel over grafische interface bij Thuis inloggen. Als je op een server bent ingelogd zijn de meeste van deze programma’s traag, omdat er een heel venster via je verbinding moet worden overgestuurd. Op een computer op de faculteit heb je de gewone snelheid, omdat het programma dan op die computer staat en draait. Het is vaak handig om een & achter het commando te zetten. Dan blijft de prompt beschikbaar en kun je meer programma’s starten, terwijl het andere programma in een nieuw scherm wordt geopend.

nautilus Een equivalent van Windows Explorer, met tabbladen. Ingelogd op de server is het sneller om te navigeren via de prompt.
evince [file] Documentenviewer [geeft file weer], werkt bij o.a. pdf, ps, dvi, png, jpg en gif bestanden.
xterm Open een nieuw terminal venster.
gvim [file] [Open file in] grafische versie van vim, je kunt met de muis navigeren en er zitten menu’s in. Nog steeds onbruikbaar als je niet weet hoe het werkt.
nedit en gedit [file] [open file in ] Teksteditors, vergelijkbaar met notepad++. nedit is sneller en gedit ziet er mooier uit.
mathematica Mathematica algebra systeem. Gebruik op afstand de CLI-versie, die is veel sneller.
matlab MATLAB, zie de opmerking boven.
gimp Uitgebreid photoshop-achtig programma.
inkscape Vector graphic plaatjes maker.

chmod

Het commando chmod verandert wat mensen met een bestand mogen doen. Een bestand heeft een attribuut genaamd de permissies die je kunt zien met ls -l [dir] of ll [dir]. De permissies kun je instellen voor 3 verschillende gebruikers: de eigenaar van het bestand, de groep en de andere gebruikers. De permissies zien er uit als drwxrwxrwx, met meestal een streepje op bepaalde plaatsen. Eigenlijk is d geen permissie, maar geeft het aan of het bestand een directory is of niet (dan staat er een – ). De volgende 3 tekens geven aan wat de eigenaar van het bestand er mee mag, de 3 daar op volgende tekens geven aan wat leden van de groep van het bestand kunnen en de laatste 3 geven aan wat de rest van de gebruikers met het bestand mogen. r, w en x staan voor read, write en execute (lezen, schrijven/bewerken en uitvoeren). Met chmod verander je dus de permissies, Het eenvoudigst is via de octale notatie, op het eerste gezicht lijkt het cryptisch maar het is eigenlijk heel eenvoudig. De permissie voor elke groep gebruikers is één getal van 0 tot en met 7. r heeft de waarde 4, w de waarde 2 en x de waarde 1, de permissie is dan de som van de toegestane permissies. Voorbeeld: als je wilt dat de eigenaar alles mag doen, de groep alleen mag lezen en uitvoeren en de rest niets mag, wordt de code rwxr-x- – - =(4+2+1) (4+1) 0 = 750. De permissie van file verander je dan met chmod 750 file

Er zijn nog veel meer commando’s (op moment van schrijven in totaal 3859, inclusief scriptjes door marieleden geschreven). Ik kan ze hier niet allemaal noemen en veruit de meeste zul je nooit tegenkomen. Als je meer wil weten biedt het internet vaak een uitkomst.

Random dingen om te weten

  • De natuurkundestudenten als geheel krijgen van CNCZ wat eigen schijfruimte op de systemen, al die dingen kun je vinden in de /vol/impuls map, veel dingen staan in de /vol/impuls/marcur map. Hier staat een hoop oud spul, maar ook bijvoorbeeld syllabi, extra opgaven en boeken in/vol/impuls/fysica . Ook kun je programmaatjes vinden die je de inhoud van een mailalias geven of allerlei instellingen veranderen. De meeste commissies hebben hier een map met dingen zoals TeX files van brieven. Ook natuurkundegerelateerde instanties die officieel niet met Marie verbonden zijn, zoals de NSF en de OLC, hebben hier directories.
  • Heb je een programma opgestart en wil je er uit maar weet niet hoe, dan werkt het vaker om Ctrl-c en Ctrl-d een paar keer in te drukken.
  • Het is handig al wat in te stellen, doe dit door nano ~/.bashrc te typen en bovenaan ‘source /vol/impuls/marcur/bashrc’ te typen, als er nog niets staat, zet dan gewoon deze regel in het bestand, sla het op met Ctrl-o enter Ctrl-x. Als je terug bent bij de prompt, op de opdrachtregel source ~/.bashrc .

v1.0.0 (RoR 2.3.5) ~ served by walter.marie-curie.nl ~ about