Saturday, 16 August 2008

Introduktion till kommandotolken i Linux

Alltid emellanåt får man höra att någon inte vill använda Linux av anledningen att denna är rädd för kommandotolken, dvs att styra operativsystemet och programmen via textkommandon. Jag vill göra det helt klart från början att man kan vara en mycket nöjd Linuxanvändare utan att någonsin behöva skriva ett enda kommando. Alla inställningar för de stora Linux-distributionerna och alla väsentliga program kan styras genom grafiska gränssnitt, liksom t ex Windows-användarna är vana med. Dock kan det ge ett mervärde i Linux att kunna de enklaste kommandona. Det kan också nämnas att mycket av vad som nämns här, apropå kommandon m m, även gäller för UNIX och Mac OS X.

Att använda sig av textkommandon är framförallt ett mycket överskådligt, logiskt och kompakt sätt att utföra en uppgift. När man i en grafisk miljö vill beskriva hur en sak skall utföras måste man ofta avbilda olika fönster med tillhörande textförklaringar och inringningar av de rätta knapparna osv. Det hel blir betydligt kortare och klarare om man bara kan säga att "kör dessa kommandon i denna ordning". Du behöver oftast inte veta vad kommandona gör i detalj. Du behöver bara kopiera över dem till kommandotolken – eller terminalfönstret, som den kallas i Linux -- och köra dem.

En annan situation där det är till nytta att använda sig av kommandotolken är när man tar fjärrkontakt till en Linuxdator via Internet. Oftast via
SSH-programmet, som oftast är färdigtinstallerat i Linux. Grafik förbrukar mycket bredbandsresurser, så att bara använda sig av kommandoraden är betydligt smidigare. Använder man sig av programmet PuTTY från sin smarttelefon när man tar SSH-kontakt till sin dator, har man (förmodligen) inte ens tillgång till någon grafik, utan är enbart hänvisad till kommandotolken.

Slutligen kan det ibland vara mer överskådligt att utföra en operation via kommandon, eftersom man kan få ut mer information om vad som görs. Antag att du vill överföra 20 GB data från ett ställe till ett annat. Gör du det i filhanteraren ser du oftast bara en blå balk och en dator som blir långsammare i 10 min. Gör du det i kommandotolken kan du få den att berätta exakt vilken fil den just då överför och om överföringen av någon enskild fil misslyckas, framkommer även det som error-meddelanden. Du får helt enkelt mer kontroll över det du gör
.

När du öppnar terminalfönstret är promten det första du ser. På min dator ser den för närvarande ut så här:

visitor@linux-85ak:~>

Efter ">" (eller alternativt "$" eller "#") skriver man in de kommandon man vill köra. "visitor" är mitt användarnamn och "linux-85ak" är namnet på datorn (Man kan välja det själv). Har datorn nätkontakt kan datornamnet ändras till IP-adressen. Promten kan dock även vara annorlunda uppbyggd. Man kan nämligen själv välja hur promten skall se ut. Exemplet ovan är dock standard.

Härnäst kan det vara skäl att nämna hur filsystemet är uppbyggt i Linux. Varje användare har en egen hemmapp som namnges efter inloggningsnamnet. Min hemmapp heter alltså "visitor" med den fulla adressen "/home/visitor", där "home" är den mapp där alla hemmappar är samlade. Alla filadresser börjar med "/" och är sig själv en mapp – root-mappen.

visitor@linux-85ak:~> pwd
/home/visitor

"pwd" skriver ut mappen man är i för tillfället (Print Working Directory). Filsystemet har alltså en trädstruktur med root-mappen underst (eller överst, som man hellre säger). En annan mapp som kan vara bra att känna till är mappen "/media", där alla externa media som CD-skivor, Minnesstickor och dylikt syns vid användning.

För att se vad en mapp innehåller använder man kommandot "ls" (list), med eventuella optioner, som kommer som bokstäver efter ett (eller ibland två) minustecken.

visitor@linux-85ak:~> ls
bin Desktop Documents public_html

visitor@linux-85ak:~> ls -l

totalt 32
drwxr-xr-x 2 visitor users 4096 25 jun 11.16 bin
drwxr-xr-x 2 visitor users 4096 25 jun 11.17 Desktop

drwxr-xr-x 2 visitor users 4096 29 jun 15.22 Documents

drwxr-xr-x 2 visitor users 4096 25 jun 11.16 public_html


visitor@linux-85ak:~> ls -a

. .dmrc .ICEauthority .qt .. Documents .inputrc .recently-used .adobe .dvipsrc .kde .skel .bash_history .emacs .kde4 .wapi .bashrc .fontconfig .local .xauthLmpDlI .beagle .fonts .macromedia .Xauthority bin .gconf .mozilla .xim.template .config .gconfd .ooo-2.0 .xine .dbus .gnome2 .profile .xinitrc.template Desktop .gnome2_private public_html .xsession-errors

visitor@linux-85ak:~> ls -la

totalt 228
drwxr-xr-x 26 visitor users 4096 10 aug 15.41 .
drwxr-xr-x 5 root root 4096 25 jun 11.16 ..
drwx------ 3 visitor users 4096 29 jun 15.23 .adobe
-rw------- 1 visitor users 75 10 aug 15.34 .bash_history -rw-r--r-- 1 visitor users 1177 25 jun 11.16 .bashrc drwx------ 7 visitor users 4096 29 jun 15.08 .beagle
drwx------ 3 visitor users 4096 25 jun 11.17 .kde

drwx------ 4 visitor users 4096 25 jun 11.17 .kde4
drwxr-xr-x 2 visitor users 4096 25 jun 11.16 public_html

...

"ls" listar alltså alla filer och kataloger i den aktiva katalogen. Optionen "-l" ger en detaljerad lista och "ls -a" listar de s k osynliga filerna, dvs alla filer och kataloger som börjar med en punkt. Dessa är oftast konfigureringsfiler för olika program. Thunderbird sparar t ex alla brev i en undermapp till mappen .thunderbird i hemmappen. Man kan även själv skapa "osynliga mappar genom att sätta en punkt som första tecken i namnet.

I den detaljerade listan ("ls -l") kommer informationen om varje fil och katalog i följande form:

drwxr-xr-x 2 visitor users 4096 29 jun 15.22 Documents

"d" i början betyder att det är frågan om en katalog (directory). "rwxr-xr-x" anger vilka rättigheter användarna har för katalogen. Det finns tre olika rättigheter: läs- ("r"), skriv- ("w") och körrättigheter ("x"). I exemplet ovan betyder de första "rwx" att användaren, visitor, har alla tre rättigheter till katalogen Documents (En katalog behöver körrättigheter för att man skall kunna öppna den). De följande tre tecknen "r-x" syftar på gruppen som filen tillhör, users. Vanligtvis finns bara grupperna users och root. Mans skapa egna om det finns många användare på systemet att hålla reda på. Gruppen users har i exemplet läs- och körrättigheter, men saknar skrivrättigheter till katalogen Documents. De sista tre tecknen "r-x" syftar på alla övriga; de som inte hör till gruppen users. Följande kolumn efter rättigheterna anger hur många filer katalogen innehåller. Sedan kommer användarens namn, gruppens namn, storleken på katalogen i bytes, datum och tid när katalogen senast ändrats och till slut filens namn. Det hela ser lika ut för en fil, men börjar med ett "-" istället för "d".

Förflyttning mellan mappar sker med kommandot "cd" (Change Directory). Vill jag gå till en speciell mapp (Documents) i den mapp jag är skriver jag

visitor@linux-85ak:~> cd Documents/
visitor@linux-85ak:~/Documents>

Eller för att gå till en mapp var som helst i trädet (mappen Desktop):

visitor@linux-85ak:~/Documents> cd /home/vjansson/Desktop/ visitor@linux-85ak:/home/vjansson/Desktop>

Vill jag gå till min hemmapp skriver jag bara "cd". Alternativt "cd ~", där "~" är en symbol för min hemmapp. Om jag vill till en mapp i min hemmapp går det lika bra att skriva

visitor@linux-85ak:/home/vjansson/Desktop> cd ~/Documents/ visitor@linux-85ak:~/Documents>

som

visitor@linux-85ak:~/Desktop> cd /home/vjansson/Documets/

"/" på slutet är inte obligatoriskt. Ett tips är även att tabulatorn kan användas till att automatiskt avsluta ett fil-/katalognamn i den katalog man är, så att man inte behöver skriva in hela namnet. Pil upp ger även tillbaka de senaste kommandona man gett.

Den mapp jag befinner mig just nu i betecknas med en punkt: ".". Kommandot "cd ." gör alltså ingenting. Vill jag gå till föräldramappen har även denna en generisk beteckning med två punkter, "..". Kommandot "cd .." (observera mellanrummet!) går alltså en nivå uppåt i filstrukturen. Kommandot "cd /" tar en naturligtvis till rootmappen.

Vill man veta mer om kommandot kan man läsa manualsidorna om det genom att skriva (för ls)

visitor@linux-85ak:~/Documents> man ls

Man kommer tillbaka till promten genom att skriva "q".

Nyttiga kommandon att känna till är även:

cp - kopiera

mv - flytta eller byt namn

rm - ta bort

rmdir - ta bort en katalog

mkdir - skapa katalog

chmod - ändra rättigheterna för en fil eller katalog

firefox - startar Mozilla Firefox om grafik kan visas. Andra program kan vanligtvis startas på liknande vis från kommandoraden.

sudo - kör ett kommando med administratörsrättigheter (kräver skilt lösenord).

Många av dess kan kombineras med optioner som "-r", recursive, "-v", verbose, "-i" interactive, "-f" force. Se manualsidorna för respektive kommando för närmare information. Det kan vara skäl att varna för kommandot "rm", remove. Det finns inget sätt att ta tillbaka en fil efter att man använt det kommandot. Oftast finns det en trash-katalog som i Windows och Mac, men den används bara de grafiska filhanterarna och inte av "rm".

Slutligen kan det vara skäl att visa hur SSH används från kommandotolken, eftersomd det är så användbart i sammanhanget. Vill du ta kontakt till en annan Linux- (eller Unix-) dator där du har användarkonto, måste du veta denna dators IP-adress eller domännamn. Du ringer upp med

ssh -X visitor@serverdator.exempel.fi

Där optionen "-X" ger dig möjlighet att starta grafiska program (De öppnar i egna fönster). "visitor" är mitt inloggningsnamn och serverdator.exmpel.fi är värddatorns IP-adress. Kan vara en IP-nummer lika väl. Vill du ta kontakt med SSH från en Windows-dator kan du t ex använda programmet PuTTY för Windows.

När man får problem lönar det sig att söka med Google och svaret kan ibland vara i kommandoform. En del specialprogram kräver också installation från kommandotolken och har då oftast i README-filen instruktioner för vilka kommandon man skall köra och i vilken ordning. Det fina är att man som användare oftast inte behöver veta vad exakt vad kommandona gör -- man bara följer instruktionerna. Men för att det skall vara någon idé att alls öppna kommando-terminalen måste man kunna baskommandona ovan. De är som synes inte så många och de är rätt lätta att komma ihåg.


No comments: