Nästa Föregående Innehållsförteckning

3. Filer och program

3.1 Filer: inledande anmärkningar

Linux har ett filsystem, vilket betyder "katalog-strukturen och filerna i den", som liknar DOS väldigt mycket. Filer har filnamn som följer vissa regler, lagras i kataloger, vissa är körbara och vissa av dem har har kommando-parametrar. Vidare kan du använda "wildcard- tecken", omdirigering och "piping". Det finns bara några små skillnader:

Du kan nu gå vidare till avsnitten Översätta kommandon från DOS till Linux, men om jag var du skulle jag läsa vidare.

3.2 Symboliska länkar

UNIX har en filtyp som inte existerar under DOS: den symboliska länken. Du kan tänka på den som en pekare till en fil eller en katalog, och den kan användas istället för filen eller katalogen den pekar på; det liknar genvägarna i Windows 95. Exempel på symboliska länkar är /usr/X11, vilken pekar på /usr/X11R6, och /dev/modem, vilken pekar på antingen /dev/cua0 eller /dev/cua1.

För att skapa en symbolisk länk:

$ ln -s <fil_eller_katalog> <länknamn>

Exampel:

$ ln -s /usr/doc/g77/DOC g77manual.txt

Nu kan du hänvisa till g77manual.txt istället för /usr/doc/g77/DOS. Länkar ser ut så här i katalog-listningar:

$ ls -F
g77manual.txt@
$ ls -l
(diverse saker...)           g77manual.txt -> /usr/doc/g77/DOC

3.3 Rättigheter (permissions) och ägarskap

DOS-filer och -kataloger har följande attribut: A (arkiv), H (dolda), R (endast läsbara) och S (system). Endast H och R finns under Linux: dolda filers namn börjar med en punkt, och för R-attributet, läs vidare.

Under UNIX har en fil "rättigheter" och en ägare, som i sin tur till- hör en "grupp". Titta på det här exemplet:

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

Det första fältet innehåller rättigheterna för filen /bin/ls, vilken tillhör root, gruppen är bin. Om vi bortser från den återstående informationen, lägg på minnet vad -rwxr-xr-x betyder, från vänster till höger:

- är filtypen (- = vanlig fil, d = katalog, l = länk osv.); rwx är rättigheterna för filens ägare (läs (read), skriv (write) och kör (execute)); r-x är rättigheterna för filägarens grupp (läs, kör); (Jag kommer inte att avhandla grupp-begreppet, du kan överleva utan det, så länge du är nybörjare ;-) r-x är rättigheterna för alla andra användare (läs, kör).

Katalogen /bin har också rättigheter: see avsnitt Katalogers rättigheter för mer detaljer. Det är p.g.a. detta som du inte kan radera filen /bin/ls, om du inte är root: du har inte skriv-rättighet att göra detta. För att ändra en fils rättigheter, använd kommandot:

$ chmod <vemXrättighet> <file>

där vem är u (användare (user), alltså användaren), g (grupp), o (annan (other)), X är antingen + eller -, rättighet är r (läs), w (skriv) eller x (kör). Vanliga exempel på chmod är de följande:

$ chmod +x fil

vilket sätter kör-rättighet för filen.

$ chmod go-rw fil

Det här tar bort läs- och skriv-rättigheterna för alla utom ägaren.

$ chmod ugo+rwx fil

Detta ger alla läs-, skriv- och kör-rättigheterna.

# chmod +s fil

det här skapar en så kalla "setuid"- eller "suid"-fil---en fil som alla kan köra med dess ägares rättigheter. Dessa kommer du typiskt att stöta på som root-suid-filer.

Ett kortare sätt att referera till rättigheter är med nummer: rwxr-xr-x kan uttryckas som 755 (varje bokstav korresponderar till en bit: --- är 0, --x är 1, -w- är 2, -wx är 3 osv.). Det ser svårt ut, men med en del träning kommer du att förstå konceptet.

root, som super-användare, kan ändra allas filers rättigheter. LMS.

3.4 Filer: Översättning av kommandon från DOS till Linux

Till vänster finns DOS-kommandona; till höger finns deras motsvarigheter under Linux.

ATTRIB:         chmod
COPY:           cp
DEL:            rm
MOVE:           mv
REN:            mv
TYPE:           more, less, cat

Omdirigerings- och rörlednings-operatorer: < > >> |

"Wildcards": * ?

nul: /dev/null

prn, lpt1: /dev/lp0 or /dev/lp1; lpr

Exempel





DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>ATTRIB +R FILE.TXT             $ chmod 400 file.txt
C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
C:\GUIDO>DEL TEMP                       $ rm temp
C:\GUIDO>DEL *.BAK                      $ rm *~
C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

Notes:

3.5 Köra program: multitasking och sessioner

För att köra ett program, skriv in dess namn, som du skulle göra under DOS. Om katalogen (avsnittet Kataloger) där programmet är lagrat finns med i din sökväg (avsnittet System-initiering), så kommer programmet att startas. Undantag: i motsats till DOS, så startas inte ett program i den aktuella katalogen, under Linux, om den katalogen inte finns med i sökvägen. Lösning: om prog är ditt program, skriv ./prog.

Så här ser en typisk kommando-rad ut:

$ command [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< input] [> output]

där -s1, ..., -sn är program-"switchar", par1, ..., parn är program- parametrar. Du kan ge flera kommandon på en rad:

$ kommando1 ; kommando2 ; ... ; kommandon

Det var allt för denna gång om att köra program, men det är lätt att gå bortom detta. En av huvudanledningarna till att använda Linux är att det är ett multi-taskande operativsystem: det kan köra flera program (från och med nu: processer) samtidigt. Du kan köra igång processer i bakgrunden och fortsätta arbeta med en gång. Vidare låter dig Linux ha flera sessioner: det är som att ha flera datorer som arbetar samtidigt!

Om du använder dessa kommandon kan du formattera en disk, zippa en bunt filer, kompilera ett program och packa upp ett arkiv, allt på samma gång, och fortfarande ha prompten tillgänglig. Försök med det under DOS! Och försök med Windows, bara för att se skillnaden i prestanda (om det inte krashar, naturligtvis).

3.6 Köra program på avlägsna datorer

För att köra ett program på en avlägsen maskin, vars IP-adress är remote.machine.edu, skriver du:

$ telnet remote.machine.edu

Efter att du loggat in är det bara att starta ditt favoritprogram. Jag behöver naturligtvis inte ens nämna att du måste ha ett användar- konto på den andra maskinen.

Om du har X11 så kan du till och med köra X-applikationer på en avlägsen dator, och visa det på din X-skärm. Säg att remote.machine.edu är den avlägsna X-datorn och local.linux.box är din Linux-maskin. För att, från local.linux.box, köra ett X-program, som finns på remote.machine.edu, kan du göra följande:

Och voila! Nu kommer prognamn startas på remote.machine.edu och visas på din maskin. Försök dock inte med det här över en PPP-lina, det är alldeles för långsamt för att vara användbart.


Nästa Föregående Innehållsförteckning