From DOS/Windows to Linux HOWTO - Swedish Version <author> By Guido Gonzato, <tt><htmlurl url="mailto:guido@ibogfs.cineca.it" name="guido@ibogfs.cineca.it"></tt> Svensk översättning: Linus Åkerlund, uxm165t@tninet.se <date>v1.3.0, 15 April 1998. Svensk översättning, 4 juni 1998 <abstract> Den här HOWTOn är tillägnad alla de (snart före detta?) DOS- och Windows-användare som just har tagit steget och bestämt sig för att byta till Linux, den fria UNIX-klonen. Givet likheterna mellan DOS och UNIX, så är syftet med detta dokument att hjälpa läsaren att föra över sina kunskaper om DOS och Windows till Linux-miljön, för att kunna bli produktiv så fort som möjligt. </abstract> <toc> <sect> Inledning <p> <sect1> Är Linux rätt för dig? <p> Så du vill byta från DOS/Windows till Linux? Bra idé, men akta dig: det kanske inte är användbart för dig. Enligt min åsikt finns det inget sådant som "den bästa datorn" eller "det bästa operativsystemet": det beror på vad man ska göra. Det är därför jag inte tror att Linux är det bästa lösningen för alla, även om det, tekniskt sett, är överlägset många kommersiella operativsystem. Du kommer att tjäna en enorm massa på att använda Linux, om du behöver mjukvara för programmering, Internet, TeX... teknisk mjukvara i allmänhet, men om du mest behöver kommersiell mjukvara, eller om du inte känner för att lära dig att skriva kommandon, leta någon annanstans. Linux är inte (nu) så enkelt att använda och konfigurera som Windows eller Mac, så förbered dig på att "hacka" en del. Trots dessa varningar, låt mig påpeka att jag är 100% säker på att om du tillhör den rätta användar-typen så kommer Linux att bli ditt dator-Nirvana. Det är upp till dig. Och kom ihåg att Linux + DOS/Windows kan samexistera på en och samma maskin, i alla fall. Förutsättningar för den här HOWTOn, jag kommer att anta att <itemize> <item> du känner till de grundläggande DOS-kommandona och -koncepten; <item> Linux, eventuellt med X-Window-systemet, är korrekt installerat på din PC; <item> ditt skal---motsvarigheten till <tt/COMMAND.COM/---är <tt/bash/. </itemize> Notera att, om inte annat anges, så är all information i det här dokumentet riktad mot det "gamla dåliga DOS". Det finns ett avsnitt om Windows, men kom ihåg att Windows och Linux är helt och hållet olika, i motsats till DOS, som ett slags sämre släkting till UNIX. Lägg också märke till att det här dokumentet varken är en komplett inledning, och ej heller en konfigurerings-handledning! <sect1> Det är det. Berätta mera <p> Du installerade Linux och de program du behövde på din PC. Du gav dig själv ett användarkonto (om du inte gjorde det, skriv <tt/adduser/ <em/nu!/) och Linux fungerar. Du har just skrivit in ditt användarnamn och lösenord, och nu tittar du på skärmen och tänker: "Jaha, vad ska jag göra nu?" Förtvivla inte. Du är nästan färdig att göra samma saker som du förut gjorde i DOS/Win, och en hel del till. Om du körde DOS/Win istället för Linux, skulle du hålla på med några av följande saker: <itemize> <item> köra program och skapa, kopiera, titta på, ta bort, skriva ut, ändra namn på filer; <item> CD-a, MD-a, RD-a och DIR-a dina kataloger; <item> formattera disketter och kopiera filer till och från dem; <item> skräddarsy systemet; <item> skriva .BAT-filer och program i ditt favorit-språk; <item> den återstående 1%. </itemize> Du kommer bli lättad när du inser att dessa saker kan åstadkommas under Linux, på ett sätt som i mycket påminner om DOS. Under DOS använder den genomsnittlige användaren väldigt få av de mer än hundra tillgängliga kommandona: detsamma gäller, till en del, även för Linux. <sect2> Inledande kommentarer <p> Det bästa sättet att lära sig något är att gå in i det. Du uppmanas starkt att experimentera och leka med Linux: du kan inte skada systemet på det sättet. Några påpekande: <itemize> <item> först, hur du tar dig ur det. För att avsluta Linux: om du ser en textläges-skärm, tryck CTRL-ALT-DEL, vänta på att systemet fixar till sitt innanmäte och upplyser dig om att allt är okej och stäng sedan av din PC. Om du arbetar under X-Window-systemet, tryck först CTRL- ALT-BACKSPACE, sedan CTRL-ALT-DEL. Slå aldrig av eller "resetta" din PC direkt: det kan skada ditt filsystem; <item> i motsats till DOS så har Linux inbyggda säkerhets-mekanismer, p.g.a. sin fleranvändar-natur. Filer och kataloger har rättigheter (permissions), och därför kan vissa av dem inte tillgås av den vanlige användaren; (see avsnittet <ref id="Permissions" name="Rättigheter och ägarskap">). DOS, å andra sidan, låter dig ta bort hela innehållet på hårddisken; <item> det finns en speciell användare, som kallas "root": system-administratören, med fulla förmågar att ge liv åt eller ta död på maskinen. Om du arbetar på din egen PC, så kommer du vara root också. Att arbeta som root är <em/farligt/: vilket misstag som helst kan skada eller förstöra systemet, precis som i DOS/Win. Arbeta inte som root om det inte är absolut nödvändigt; <item> mycket av komplexiteten hos Linux kommer från dess extrema konfigurabilitet: i stort sett varje funktion och varje applikation kan ställas in genom en eller flera konfigurerings-filer. Komplexitet är priset man betalar för kraft; <item> omdirigering och "piping" är en sido-funktion under DOS, en väldigt viktig sådan, och mycket mera kraftfull, under Linux. Enkla kommandon kan bindas samman för att åstadkomma komplicerade saker. Jag föreslår att du lär dig hur du kan använda dem. </itemize> <sect2> Skaffa hjälp <p> Det finns många sätt att få hjälp med Linux. De viktigaste är: <itemize> <item> <em/läs dokumentationen/---jag menar det. Även om HOWTOn du läser kan fungera som en introduktion till Linux, så finns det flera böcker som du verkligen bör läsa: Matt Welsh "Linux installation and getting started" (<tt> <url url="http://sunsite.unc.edu/mdw/LDP/gs/gs.html"> </tt>), Larry Greenfields "Linux user guide" (<tt> <url url="ftp://sunsite.unc.edu/pub/Linux/docs/linux-doc-project/users-guide"> </tt>), och Linux FAQ (<tt> <url url="http://sunsite.unc.edu/mdw/FAQ/Linux-FAQ.html"></tt>). Du kan få ha dåligt samvete tills du åtminstone har läst en av dem; <item> dokumentationen till de paket som finns installerade på din maskin finns oftast i underkataloger under <tt>/usr/doc/</tt>; <item> för att få en del hjälp om de "interna kommandona", skal-kommandona, skriv <tt/help/ eller, ännu bättre, <tt/man bash/ eller <tt/info bash/; <item> för att få hjälp om ett kommando, skriv <tt/man kommando/, vilket plockar fram manualen ("man-sidan") om <tt/kommando/. Alternativt kan du skriva <tt/info kommando/, vilket anropar, om den finns, info-sidan om <tt/kommando/. Info är ett hypertext-baserat dokumentations-system, kanske inte så intuitivt i början. Slutligen kan du pröva <tt/apropos kommando/ eller <tt/whatis kommando/. Med alla de här kommandona kan du trycka "q" för att avsluta. </itemize> <sect1> Konventioner <p> Genom det här verket kommer exemplen att följa detta format: <tt/<...>/ är ett argument som krävs, medan <verb/[...]/ är ett valfritt. Exempel: <tscreen><verb> $ tar -tf <fil.tar> [> omdir_fil] </verb></tscreen> <tt>fil.tar</tt> måste anges, men omdirigering till <tt/omdir_fil/ är valfritt. "LMS" betyder "var vänlig läs man-sidan för mer information". Jag kan inte tillräckligt understryka hur viktigt det är att läsa dokumentation. När prompten i ett kommando-exempel är "#", så kan kommandot endast utföras av root. <sect1> Översättarens anmärkningar <p> Uppdaterade dokumentet 13/11-98, genom att byta ut översättningen av "permissions" till "rättigheter", istället för det sämre "tillåtelser" <p> <sect> För de otåliga <p> Vill du köra igång på direkten? Ta en titt på den här tabellen: <!-- I'd like to make this an sgml table, but lynx wouldn't display it correctly. I'll think it over. --> <tscreen><verb> DOS Linux Anmärkningar ------------------------------------------------------------------------------ BACKUP tar -Mcvf enhet kat/ helt annorlunda CD katnamn\ cd katnamn/ nästan samma syntax COPY fil1 fil2 cp fil1 fil2 dito DEL fil rm fil varning - ingen "undelete" DELTREE katnamn rm -R katnamn/ dito DIR ls inte riktigt samma syntax DIR fil /S find . -namn fil helt annorlunda EDIT fil vi fil tror inte du kommer gilla det här emacs fil det här är bättre jstar fil känns som DOS edit FORMAT fdformat, mount, umount ganska annorlunda syntax HELP kommando man kommando samma filosofi MD katnamn mkdir katnamn/ nästan samma syntax MOVE fil1 fil2 mv fil1 fil2 dito NUL /dev/null dito PRINT fil lpr fil dito PRN /dev/lp0, /dev/lp1 dito RD katnamn rmdir katnamn/ nästan samma syntax REN fil1 fil2 mv fil1 fil2 inte med flera filer RESTORE tar -Mxpvf enhet annorlunda syntax TYPE fil less fil mycket bättre WIN startx enorm skillnad! </verb></tscreen> Om du behöver mer än en tabell med kommandon, fortsätt läsa. <sect> Filer och program <p> <sect1> Filer: inledande anmärkningar <p> 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: <itemize> <item> under DOS är filnamnen i så kallat 8.3-format; t.ex. <tt/NOTENOUG.TXT/. Under Linux har vi det bättre. Om du installerade Linux, med ett fil- system som ext2 eller umsdos, så kan du använda längre filnamn (upp till 255 tecken) och med mer än en punkt i dem: t.ex. <tt/This_is.a.VERY_long.filename/. Observera att jag använde både stora och små bokstäver: faktiskt... <item> så är det så att stora och små bokstäver i filnamn är annorlunda. <tt/FILENAME.tar.gz/ och <tt/filename.tar.gz/ är därför två olika filer. <tt/ls/ är ett kommando, <tt/LS/ är en felskrivning; o Windows 95-användare kommer naturligtvis att vilja använda långa fil- namn under Linux. Om ett filnamn innehåller mellanslag (vilket inte rekommenderas, men är möjligt), så måste du innesluta filnamnet i citationstecken när du vill referera till det. T.ex.: <tscreen><verb> $ # följande kommando skapar en katalog som heter "Mina gamla filer" $ mkdir "Mina gamla filer" $ ls Mina gamla filer bin tmp </verb></tscreen> Vidare så finns det vissa tecken som inte bör användas: några av dessa är <tt/!*$&/. <item> det finns inga obligatoriska filändelser som .COM och .EXE för program, eller .BAT för batch-filer. Körbara filer är markerade med en asterisk,<tt/*/ , på slutet av namnet, när du kör kommandot <tt/ls -F/. T.ex.: <tscreen><verb> $ ls -F I_am_a_dir/ cindy.jpg cjpg* letter_to_Joe my_1st_script* old~ </verb></tscreen> Filerna <tt/cjpg*/ och <tt/my_1st_script*/ är körbara; "program". Under DOS slutar säkerhetskopiornas namn med .BAK, medan de under Linux slutar med ett tilde, "<tt/˜/", som gömda filer. Exempel: filen <tt/.I.am.a.hidden.file/ dyker inte upp efter <tt/ls/-kommandot; <item> parametrar till DOS-program skrivs som <tt>/parameter</tt>, medan Linux använder <tt/-parameter/ eller <tt/--parameter/. Exempel: <tt>dir /s</tt> blir <tt/ls -R/. Observera att många DOS-program, som <tt/PKZIP/ och <tt/ARJ/, använder UNIX-liknande parametrar. </itemize> Du kan nu gå vidare till avsnitten <ref id="Files" name="Översätta kommandon från DOS till Linux">, men om jag var du skulle jag läsa vidare. <sect1> Symboliska länkar <p> 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 <tt>/usr/X11</tt>, vilken pekar på <tt>/usr/X11R6</tt>, och <tt>/dev/modem</tt>, vilken pekar på antingen <tt>/dev/cua0</tt> eller <tt>/dev/cua1</tt>. För att skapa en symbolisk länk: <tscreen><verb> $ ln -s <fil_eller_katalog> <länknamn> </verb></tscreen> Exampel: <tscreen><verb> $ ln -s /usr/doc/g77/DOC g77manual.txt </verb></tscreen> Nu kan du hänvisa till <tt/g77manual.txt/ istället för <tt>/usr/doc/g77/DOS</tt>. Länkar ser ut så här i katalog-listningar: <tscreen><verb> $ ls -F g77manual.txt@ $ ls -l (diverse saker...) g77manual.txt -> /usr/doc/g77/DOC </verb></tscreen> <sect1> Rättigheter (permissions) och ägarskap <label id="Permissions"> <p> 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: <tscreen><verb> $ ls -l /bin/ls -rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls* </verb></tscreen> Det första fältet innehåller rättigheterna för filen <tt>/bin/ls</tt>, vilken tillhör root, gruppen är bin. Om vi bortser från den återstående informationen, lägg på minnet vad <tt/-rwxr-xr-x/ betyder, från vänster till höger: <tt/-/ är filtypen (- = vanlig fil, d = katalog, l = länk osv.); <tt/rwx/ är rättigheterna för filens ägare (läs (read), skriv (write) och kör (execute)); <tt/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 ;-) <tt/r-x/ är rättigheterna för alla andra användare (läs, kör). Katalogen <tt>/bin</tt> har också rättigheter: see avsnitt <ref id="Directories Permissions" name="Katalogers rättigheter"> för mer detaljer. Det är p.g.a. detta som du inte kan radera filen <tt>/bin/ls</tt>, 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: <tscreen><verb> $ chmod <vemXrättighet> <file> </verb></tscreen> där vem är <tt/u/ (användare (user), alltså användaren), <tt/g/ (grupp), <tt/o/ (annan (other)), X är antingen <tt/+/ eller <tt/-/, rättighet är <tt/r/ (läs), <tt/w/ (skriv) eller <tt/x/ (kör). Vanliga exempel på <tt>chmod</tt> är de följande: <tscreen><verb> $ chmod +x fil </verb></tscreen> vilket sätter kör-rättighet för filen. <tscreen><verb> $ chmod go-rw fil </verb></tscreen> Det här tar bort läs- och skriv-rättigheterna för alla utom ägaren. <tscreen><verb> $ chmod ugo+rwx fil </verb></tscreen> Detta ger alla läs-, skriv- och kör-rättigheterna. <tscreen><verb> # chmod +s fil </verb></tscreen> 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: <tt/rwxr-xr-x/ kan uttryckas som 755 (varje bokstav korresponderar till en bit: <tt/---/ är 0, <tt/--x/ är 1, <tt/-w-/ är 2, <tt/-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. <sect1> Filer: Översättning av kommandon från DOS till Linux <label id="Files"> <p> Till vänster finns DOS-kommandona; till höger finns deras motsvarigheter under Linux. <tscreen><verb> ATTRIB: chmod COPY: cp DEL: rm MOVE: mv REN: mv TYPE: more, less, cat </verb></tscreen> Omdirigerings- och rörlednings-operatorer: <tt/ < > >> |/ "Wildcards": <tt/* ?/ <tt>nul: /dev/null</tt> <tt>prn, lpt1: /dev/lp0 or /dev/lp1; lpr</tt> <sect2> Exempel <p> <tscreen><verb> 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 </verb></tscreen> Notes: <itemize> <item> <tt/*/ är smartare under Linux: <tt/*/ matchar alla filer, utom de dolda; <tt/.*/ matchar alla dolda filer (men också den aktuella katalogen, <tt/./, och föräldra-katalogen, <tt/../: varning!); <tt/*.*/ matchar endast de som har en punkt i mitten, följt av andra tecken; <tt/p*r/ matchar både "peter" och "piper"; <tt/*c*/ matchar både "picked" och "peck"; <item> när du använder <tt/more/, tryck <SPACE> för att bläddra genom filen, "q" för att avsluta. <tt/less/ är mer intuitivt och låter dig använda pil-tangenterna. <item> det finns ingen <tt/UNDELETE/, så <em/tänk dig för/ innan du tar bort något; <item> utöver DOS <tt/< > >>/, så har Linux <tt/2>/ för att omdirigera felmeddelanden (stderr); vidare så omdirigerar <tt/2>&1/ stderr till stdout, medan <tt/1>:&2/ omdirigerar stdout till stderr; <item> Linux har ett annat "wildcard": <verb/[]/. Användning: <verb/[abc]*/ matchar filer som börjar med a, b och c; <verb/*[I-N1-3]/ matchar filer som slutar med I, J, K, L, M, N, 1, 2 och 3; <item> <tt/lpr/ <fil> skriver ut en fil i bakgrunden. För att kolla statusen på utskriftskön, använd <tt/lpq/; för att ta bort en fil från utskriftskön, använd <tt/lprm/; <item> det finns ingen DOS-liknande <tt/RENAME/; <tt/mv/ *.xxx *.yyy fungerar alltså inte. Du skulle kunna pröva följande enkla skal-program; se avsnittet <ref id="Shell Scripts" name="Skal-program: .BAT-filer på anabola"> för detaljer. <code> #!/bin/sh # ren: byt namn på flera filer enligt flera regler if [ $# -lt 3 ] ; then echo "användning: ren \"mönster\" \"ersättning\" filer..." exit 1 fi OLD=$1 ; NEW=$2 ; shift ; shift for file in $* do new=`echo ${file} | sed s/${OLD}/${NEW}/g` mv ${file} $new done </code> Varning: det beter sig inte som DOS <tt/REN/, eftersom det använder reguljära mönster (regular expressions), som du fortfarande inte vet något om. Om du bara vill byta ut filändelser, använd det så här: <tt/ren "htm$" "html" *htm/. Glöm inte <tt/$/-tecknet. <item> använd <tt/cp -i/ och <tt/mv -i/ för att få en varning när en fil kommer att bli överskriven. </itemize> <sect1> Köra program: multitasking och sessioner <p> För att köra ett program, skriv in dess namn, som du skulle göra under DOS. Om katalogen (avsnittet <ref id="Directories" name="Kataloger">) där programmet är lagrat finns med i din sökväg (avsnittet <ref id="System Initialisation" name="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 <tt/prog/ är ditt program, skriv <tt>./prog</tt>. Så här ser en typisk kommando-rad ut: <tscreen><verb> $ command [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< input] [> output] </verb></tscreen> där <tt>-s1</tt>, ..., <tt>-sn</tt> är program-"switchar", <tt/par1/, ..., <tt/parn/ är program- parametrar. Du kan ge flera kommandon på en rad: <tscreen><verb> $ kommando1 ; kommando2 ; ... ; kommandon </verb></tscreen> 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! <itemize> <item> För att byta till session 1..6 på de virtuella terminalerna, tryck <ALT-F1> ... <ALT-F6> <item> För att starta en ny session i samma virtuell terminal, utan att lämna den nuvarande, skriv <tt/su - <loginnamn>/. Exempel: <tt/su - root/. Detta är användbart t.ex. när du behöver utföra något, som bara root kan göra. <item> För att avsluta en session, skriv <tt/exit/. Om det finns stoppade jobb (mer om det senare), så blir du varnad. <item> För att starta en process i bakgrunden, lägg till en ampersand "<tt/&/" på slutet av kommando-raden: <tscreen><verb> $ prognamn [-switchar] [parametrar] [< indata] [> utdata] & [1] 123 </verb></tscreen> skalet identifierar processen med ett jobb-nummer (t.ex. <verb/[1]/; se nedan), och med en PID (Process identification Number; 123 i vårt exempel). <item> För att se hur många processer som körs, skriv <tt/ps -ax/. Detta kommer att visa en lista på den aktuella processerna. <item> För att döda en process, skriv <tt/kill <PID>/. Du kanske behöver döda en process, om du inte vet hur man ska stänga den på rätt sätt... Om du är root, så kan du döda andras processer. Ibland kan en process endast dödas med <tt/kill -SIGKILL <PID>/. Utöver detta låter dig skalet stoppa eller tillfälligt pausa en process, skicka en process till bakgrunden och hämta fram en process från bakgrunden till förgrunden. I denna kontext kallas processer för "jobb". <item> För att se hur många jobb som finns, tryck <tt/jobs/. Här identifieras jobben med sina jobb-nummer, inte sina PID. <item> För att stoppa en process, som körs i förgrunden, tryck <CTRL-C> (det fungerar inte alltid). <item> För att pausa en process som körs i förgrunden, tryck <CTRL-Z> (dito). <item> För att skicka en pausad process till bakgrunden, skriv <tt/bg <jobb>/ (den blir ett jobb). <item> För att plocka fram ett jobb till förgrunden, skriv <tt/fg <jobb/gt;/. För att förgrunda det senast bakgrundade (är mitt språk underligt?) jobbet, skriv bara <tt/fg/. <item> För att döda ett jobb, skriv <tt/kill <%jobb>/, där <jobb> kan vara 1, 2, 3... </itemize> 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). <sect1> Köra program på avlägsna datorer <p> För att köra ett program på en avlägsen maskin, vars IP-adress är <tt/remote.machine.edu/, skriver du: <tscreen><verb> $ telnet remote.machine.edu </verb></tscreen> 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 <tt/remote.machine.edu/ är den avlägsna X-datorn och <tt/local.linux.box/ är din Linux-maskin. För att, från <tt/local.linux.box/, köra ett X-program, som finns på <tt/remote.machine.edu/, kan du göra följande: <itemize> <item> kör igång X11, starta en <tt/xterm/ eller annan terminal-emulator, och skriv sedan: <tscreen><verb> $ xhost +remote.machine.edu $ telnet remote.machine.edu </verb></tscreen> <item> efter att du loggat in, skriv: <tscreen><verb> remote:$ DISPLAY=local.linux.box:0.0 remote:$ prognamn & </verb></tscreen> (istället för <tt/DISPLAY.../, kan du bli tvungen att skriva: <tt/setenv DISPLAY local.linux.box:0.0/. Det beror på den andra maskinens skal.) </itemize> Och voila! Nu kommer <tt/prognamn/ startas på <tt/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. <sect> Använda kataloger <label id="Directories"> <p> <sect1> Kataloger: inledande anmärkningar <p> Vi har sett skillnaderna mellan filer under DOS och Linux. Vad gäller kataloger, så heter rot-katalogen <tt/\/ under DOS, under Linux heter den <tt>/</tt>. På samma sätt är nästade kataloger åtskilda med <tt/\/ under DOS, och med <tt>/</tt> under Linux. Exempel på fil-sökvägar: <tscreen><verb> DOS: C:\PAPERS\GEOLOGY\MID_EOC.TEX Linux: /home/guido/papers/geology/middle_eocene.tex </verb></tscreen> Som vanligt är <tt/../ föräldra-katalogen (parent directory) och <tt/./ är den aktuella katalogen. Kom ihåg att systemet inte låter dig köra <tt/cd/, <tt/rd/ eller <tt/md/ överallt, där du vill. Varje användare börjar i sin hemkatalog, t.ex. <tt>/home/guido</tt>. <sect1> Katalog-rättigheter <label id="Directories Permissions"> <p> Kataloger har också rättigheter. Det vi lärt oss i avsnittet <ref id="Permissions" name="Rättigheter och ägarskap"> gäller även för kataloger (användare, grupp och andra). För en katalog innebär <tt/rx/ att du kan <tt/cd/-a till den katalogen, och <tt/w/ innebär att du kan ta bort filer i den (beroende på filens rättigheter också, naturligtvis), eller katalogen själv. Till exempel, för att förhindra andra användare från att tjuvkika i <tt>/home/guido/text</tt>: <tscreen><verb> $ chmod o-rwx /home/guido/text </verb></tscreen> <sect1> Kataloger: översätta kommandon från DOS till Linux <label id="Directories: Trans"> <p> <tscreen><verb> DIR: ls, find, du CD: cd, pwd MD: mkdir RD: rmdir DELTREE: rm -R MOVE: mv </verb></tscreen> <sect2> Exempel <p> <tscreen><verb> DOS Linux --------------------------------------------------------------------- C:\GUIDO>DIR $ ls C:\GUIDO>DIR FILE.TXT $ ls file.txt C:\GUIDO>DIR *.H *.C $ ls *.h *.c C:\GUIDO>DIR/P $ ls | more C:\GUIDO>DIR/A $ ls -l C:\GUIDO>DIR *.TMP /S $ find / -name "*.tmp" C:\GUIDO>CD $ pwd n/a - se not $ cd dito $ cd ~ dito $ cd ~/temp C:\GUIDO>CD \OTHER $ cd /other C:\GUIDO>CD ..\TEMP\TRASH $ cd ../temp/trash C:\GUIDO>MD NEWPROGS $ mkdir newprogs C:\GUIDO>MOVE PROG .. $ mv prog .. C:\GUIDO>MD \PROGS\TURBO $ mkdir /progs/turbo C:\GUIDO>DELTREE TEMP\TRASH $ rm -R temp/trash C:\GUIDO>RD NEWPROGS $ rmdir newprogs C:\GUIDO>RD \PROGS\TURBO $ rmdir /progs/turbo </verb></tscreen> Noter: <enum> <item> När du använder <tt/rmdir/ så måste katalogen som ska tas bort vara tom. För att ta bort en katalog och allt dess innehåll, använd <tt/rm -R/ (på egen risk). <item>Tecknet "<tt/˜/" är en genväg för namnet på din hemkatalog. Kommandona <tt/cd/ och <tt/cd ˜/ tar dig båda till din hemkatalog, från den katalog där du för tillfället är; kommandot <tt>cd ˜/tmp</tt> tar dig till <tt>/home/ditt_hem/tmp</tt>. <item> <tt/cd -/ "tar tillbaks" det senaste <tt/cd/. </enum> <sect> Floppy-diskar, hårddiskar och liknande <label id="Floppies"> <p> Det finns två sätt att administrera enheter under Linux: DOS-sättet coh UNIX-sättet. Välj själv. <sect1> Administrera enheter på DOS-sättet <p> Det flesta Linux-distributioner kommer med Mtools-paketet, en uppsättning kommandon som fungerar precis som sina motsvarigheter under DOS, men börjar med ett "m": alltså <tt/mformat/, <tt/mdir/, <tt/mdel/, <tt/mmd/ osv. De kan till och med bevara långa filnamn, men inte fil-rättigheter. Om du konfigurerar Mtools, genom att editera en fil som heter <tt>/etc/mtools.conf</tt> (ett exempel ges), så kan du komma åt DOS/Win-partitioner, CD-ROM-spelaren och Zip-driven. För att formattera en tomdisk, så funkar dock inte <tt/mformat/-kommandot. Du måste, som root, köra följande kommando först: <tscreen><verb> # fdformat /dev/fd0H1440 </verb></tscreen> Observera att du inte kan komma åt filerna på en diskett med ett kommando som, t.ex. <tt>less a:file.txt</tt>! Detta är en nackdel med DOS-sättet att montera disketter. <sect1> Administrera enhter på UNIX-sättet <p> UNIX har ett annat sätt att administrera enheter än DOS/Win. Det finns inga separata volymer som A: eller C:; en disk, vare sig det är en diskett eller något annat, blir en del av det lokala filsystemet, efter en operation som kallas "montering". När du är klar med den diskett, så måste du "avmontera" den, innan du tar ut den. Fysisk formattering av en diskett är en sak, och att skapa ett filsystem är en annan. DOS-kommandot <tt/FORMAT A:/ gör båda sakerna, men under Linux är de separata kommandon. För att formattera en diskett, se ovan; för att skapa ett filsystem, gör följande: <tscreen><verb> # mkfs -t ext2 -c /dev/fd0H1440 </verb></tscreen> Du kan använda <tt/minix/, <tt/vfat/, <tt/dos/ eller andra format, istället för <tt/ext2/. Så fort disken är preparerad, montera den med kommandot <tscreen><verb> # mount -t ext2 /dev/fd0 /mnt </verb></tscreen> och specificera det korrekta filsystemet, om du inte använder <tt/ext2/. Nu kan du komma åt filerna på disketten. Allt du brukade göra med A: eller B: kan du nu göra, fast med <tt>/mnt</tt> istället. Exempel: <tscreen><verb> DOS Linux --------------------------------------------------------------------- C:\GUIDO>DIR A: $ ls /mnt C:\GUIDO>COPY A:*.* $ cp /mnt/* . C:\GUIDO>COPY *.ZIP A: $ cp *.zip /mnt C:\GUIDO>EDIT A:FILE.TXT $ jstar /mnt/file.txt C:\GUIDO>A: $ cd /mnt A:>_ /mnt/$ _ </verb></tscreen> När du är klar, så <em/måste/ du avmontera disketten, innan du tar ut den. Använd kommandot <tscreen><verb> # umount /mnt </verb></tscreen> Det är naturligtvis så att du bara behöver köra <tt/fdformat/ och <tt/mkfs/ på oformatterade disketter, inte sådana du redan har använt. Om du vill använda enhet B:, hänvisa till den som <tt/fd1H1440/ och <tt/fd1/, istället för <tt/fd0H1440/ och <tt/fd0/, i exemplen ovan. Jag behöver egentligen inte nämna det, men det som är tillämpligt på disketter, är det även på andra enheter; om du t.ex. vill montera en till hårddisk eller en CD-ROM-spelare. Så här monterar du en CD-ROM: <tscreen><verb> # mount -t iso9660 /dev/cdrom /mnt </verb></tscreen> Det där var det "officiella" sättet att montera diskar, men det finns ett litet knep vi kan ta till. Eftersom det är något av ett irritations- moment att behöva vara root för att montera en floppy-disk eller CD-ROM, så kan varje användare tillåtas att montera dem, på följande sätt: <itemize> <item> som root, gör följande: <tscreen><verb> # mkdir /mnt/a: ; mkdir /mnt/a ; mkdir /mnt/cdrom # chmod 777 /mnt/a* /mnt/cd* # # se till så att CD-ROM-enheten är den rätta # chmod 666 /dev/hdb ; chmod 666 /dev/fd* </verb></tscreen> <item> lägg de följande raderna till <tt>/etc/fstab</tt>: <tscreen><verb> /dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/fd0 /mnt/a: msdos user,noauto 0 0 /dev/fd0 /mnt/a ext2 user,noauto 0 0 </verb></tscreen> </itemize> För att montera en DOS-diskett, en ext2-diskett och en CD-ROM, kan du nu skriva: <tscreen><verb> $ mount /mnt/a: $ mount /mnt/a $ mount /mnt/cdrom </verb></tscreen> <tt>/mnt/a</tt>, <tt>/mnt/a:</tt>, och <tt>/mnt/cdrom</tt> kan nu användas av alla användare. Kom ihåg att det är en stor säkerhets-risk att låta vem som helst montera enheter, om det nu är något du bryr dig om. Två användbara kommandon är <tt/df/, vilket ger information om de monterade filsystemen, och <tt/du katnamn/, vilket rapporterar hur mycket ytrymme som tas upp av varje katalog. <sect1> Ta säkerhets-kopior <label id="Backing Up"> <p> Det finns flera paket som kan hjälpa dig med detta, men det absolut minsta du kan göra för att ta en säkerhetskopia på flera volymer är (som root): <tscreen><verb> # tar -M -cvf /dev/fd0H1440 kat_att_kopiera/ </verb></tscreen> Se till att du har en formatterad diskett i stationen och flera andra redo. För att få tillbaks grejerna, sätt i den första disketten i stationen och skriv: <tscreen><verb> # tar -M -xpvf /dev/fd0H1440 </verb></tscreen> <sect> Windows då? <p> "Motsvarigheten" till Windows är det grafiska systemet X11. I motsats till Windows och Mac, så skapades inte X11 för att vara enkelt att använda eller för att se snyggt ut, utan bara för att erbjuda grafiska möjligheter på UNIX arbetsstationer. Det finns några huvudsakliga skillnader: <itemize> <item> Medan Windows ser ut och känns på samma sätt över hela världen, så gör inte X11 det: det finns mycket mer du kan ställa in i det. X11s utseende och känsla kommer av en huvudkomponent som kallas "fönster- hanterare"; det finns många att välja mellan. Den vanligaste är <tt/fvwm/, grundläggande men trevlig och minnessnål, <tt/fvwm2-95/ och <tt/The Next Level/, plus flera andra. Fönster-hanteraren anropas vanligtvis från en bil som heter <tt/.xinitrc/; <item>din fönster-hanterare kan konfigureras så att ett fönster beter sig som i, öh, Windows: du klickar på det och det hamnar i förgrunden. En annan möjlighet är att det hamnar i förgrunden när muspekaren befinner sig i det ("fokus"). Placeringen av fönster på skärmen kan också vara antingen automatisk eller interaktiv: om en konstig ram dyker upp, istället för ditt program, vänster-klicka där du vill att det ska dyka upp; <item> de flesta saker kan skräddassys, genom att modifiera en eller flera konfigurerings-filer. Läs dokumentation om din fönster-hanterare: konfigureringsfilen kan vara <tt/.fvwmrc/, <tt/.fvwm2rc95/, <tt/.steprc/ osv. Ett exempel på en konfigureringsfil hittar du i typfallet i <tt>/etc/X11/fönster-hanterar-namnet/system.fönster-hantera-namnet</tt>; <item> X-applikationer är skrivna med hjälp av speciella bibliotek ("widget sets"); eftersom flera olika är tillgängliga, så ser applikationerna olika ut. Det mest grundläggande av dessa är Athena widgets (2-D- utseende; <tt/xdvi/, <tt/xman/, <tt/xcalc/); andra använder Motif (<tt/netscape/), ytterligare andra använder Tcl/Tk, XForms, Qt och allt vad det nu är. Vissa, inte alla, av dessa bibliotek ger ungefär samma utseende och känsla som Windows; <item> hm, inte riktigt. Känslan kan, olyckligtvis, vara inkonsekvent. Om du t.ex. markerar en textrad, genom att använda musen, och trycker <BACKSPACE>, så räknar du med att raden ska försvinna, eller hur? Så fungerar det inte med Athena--baserade applikationer, men det gör det med Motif, Qt, Gtk och Tcl/Tk; <item> hur scrollnings-listerna och storleksförändringarna fungerar beror på förnster-hanterare och "widget set". Tips: om du upptäcker att scrollnings-listerna inte uppträder som du förväntat dig, prova att använda den mittersta mus-knappen, eller de två knapparna tillsammans, för att flytta dem; <item> applikationer har inte en ikon som standard, men de kan ha många. De flesta fönster-hanterar har en meny, som du kommer åt genom att tryck på bakgrunden ("rot-fönstret"); denna meny kan naturligtvis skräddarsys. För att byta ut rot-fönstrets utseende kan du använda <tt/xsetroot/ eller <tt/xloadimage/; <item> urklippsarean kan endast innehålla text, och uppträder konstigt. Så fort du har markerat text, så finns den i urklippsarean: flytta någon annanstans och tryck ned mittenknappen, för att klistra in den. Det finns ett program, <tt/xclipboard/, som ger dig flera urklipps-buffrar; <item> dra och släpp är ett alternativ, och är bara tillgängligt om du använder X11-applikationer som stödjer det. </itemize> För att spara minne ska man använda applikationer som använder samma bibliotek, men det kan vara svårt att göra detta i praktiken. K Desktop Enviroment är ett projekt som siktar på att få X11 att se ut och uppföra sig konsekvent, som Windows; det är fortfarande på tidig beta-nivå, men tro mig, det är suveränt. Rikta din webb-läsare mot <tt><url url="http://www.kde.org"></tt>. <sect> Skräddarsy systemet <p> <sect1> Systemets initierings-filer <label id="System Initialisation"> <p> Två viktiga filer under DOS är <tt/AUTOEXEC.BAT/ och <tt/CONFIG.SYS/, vilka används för att initiera systemet, ange några miljö-variabler, såsom PATH och FILES, och eventuellt köra igång några program eller batch- filer, då du startar systemet. Under Linux finns det ett flertal initierings-filer, av vilka vissa är sådana som du nog inte ska ge dig på, innan du vet exakt vad du sysslar med. Jag ska berätta vilka de viktigaste är, i alla fall: <tscreen><verb> FILES NOTES /etc/inittab rör inte den nu! /etc/rc.d/* dito </verb></tscreen> Om allt du behöver göra är att ange <verb/$$PATH/ <verb/[sökväg]/ och andra miljö- variabler, eller om du vill byta ut login-meddelandet, eller automatiskt köra igång ett program efter inloggningen, kan du ta en titt på följande filer: <tscreen><verb> FILER ANMÄRKNINGAR /etc/issue anger pre-login-meddelandet /etc/motd anger post-login-meddelandet /etc/profile anger $PATH och andra variabler osv. /etc/bashrc anger alias och funktioner osv. /home/your_home/.bashrc anger dina alias + funktioner /home/your_home/.bash_profile eller /home/your_home/.profile anger miljö + startar dina program </verb></tscreen> Om de senare filerna existerar (observera att de är dolda filer), så kommer de att läsas in efter att du loggat in, och kommandona i dem kommer att utföras. Exempel---titta på denna <tt/.bash_profile/: <code> # Jag är en kommentar echo Miljö: printenv | less # ekvivalent med SET-kommandot under DOS alias d='ls -l' # lätt att förstå vad ett alias är alias up='cd ..' echo "Påminner dig om att sökvägen är "$PATH echo "Idag är det `date`" # använder utdatan från kommandot 'date' echo "Ha det så trevligt, "$LOGNAME # Det följande är en "skal-funktion" ctgz() # Lista innehållet i ett .tar.gz-arkiv { for file in $* do gzip -dc ${file} | tar tf - done } # slut på .profile </code> <tt/$PATH/ och <tt/$LOGNAME/ är, ja, du gissade rätt, miljö-variabler. Det finns många andra att leka med; LMS för applikationer som <tt/less/ och <tt/bash/. <sect1> Programs initierings-filer <p> Under Linux kan i stort sett allt skräddarsys, så att det passar dig. De flesta program har en eller flera initierings-filer som du kan fippla med, ofta i stil med <tt/.programnamnrc/, i din hemkatalog. De första du kommer vilja modifiera är: <itemize> <item> <tt/ .inputrc/: används av <tt/bash/ för att definiera tangent-bindningar; <item> <tt/ .xinitrc/: används av <tt/startx/ för att initialisera X-Window-systemet; <item> <tt/ .fvwmrc/: används av fönster-hanteraren <tt/fvwm/. <item> <tt/ .joerc/: används av editorn <tt/joe/; <item> <tt/ .jedrc/: används av editorn <tt/jed/; <item> <tt/ .pinerc/: används av e-postprogrammet <tt/pine/; <item> <tt/ .Xdefault/: används av många X-program. </itemize> För alla dessa och andra du stöter på senare, LMS. Som en avslutande anmärkning, låt mig rekommendera att du tar en titt på Configuration HOWTO på <tt> <url url="http://sunsite.unc.edu/mdw/HOWTO/Config-HOWTO.html"> </tt>. <sect> Lite programmering <p> <sect1> Skal-program: .BAT-filer på anabola <label id="Shell Scripts"> <p> Om du använde .BAT-filer för att skapa genvägar till långa kommando- rader (jag gjorde det en massa), så kan du göra detta genom att ange lämpliga alias-rader (se exempel ovan) i <tt/profile/ eller <tt/.profile/. Men om dina .BAT-filer var mera komplicerade så kommer du älska skal- programmerings-språken som finns i varje skal: de är kraftfulla som QBasic, om inte kraftfullare. De har variabler, konstruktioner som while, for, case, if... then... else och en massa andra egenskaper: de kan vara bra alternativ till "riktiga" programmerings-språk. För att skriva ett skal-program, motsvarigheten till .BAT-filer under DOS, så är allt du behöver göra att skriva en vanlig ASCII-fil, som innehåller instruktioner, spara den och göra den körbar, med kommandot <tt/chmod +x <skal-program-fil>/. För att köra den, skriv dess namn. Ett varningens ord är här på sin plats. System-editorn heter <tt/vi/, och enligt mina erfarenheter så finner de flesta nybörjare den väldigt svår att använda. Jag tänker inte förklara hur du ska använda den, för jag gillar den inte och använder den inte, så nu vet du det. Det räcker med att jag säger följande här: <itemize> <item> för att infoga text, skriv "i", sen texten; <item> för att ta bort tecken, skriv <ESC>; sen "x"; <item> för att avsluta <tt/vi/ utan att spara, skriva <ESC>; sen <tt/:q!/ <item> för att spara och avsluta, skriv <ESC>, sen <tt/:wq/. </itemize> En bra editor för nybörjare är <tt>joe</tt>: anropar du den genom att skriva <tt/jstar/, så får du samma tangent-kombinationer som DOS-editorn. <tt>jed</tt> i WordStar- eller IDE-läge är annu bättre. Se avsnittet <ref id="Programs" name="Var du får tag på program"> för att få reda på var du kan få tag på dessa editorer. Att skriva skal-program under <tt/bash/ är ett så stort ämne att det tar en bok själv, och jag tänker inte gå djupare in på ämnet. Jag ger bara ett exempel på ett skal-program, från vilket du kan lära dig vissa grundläggande regler: <code> #!/bin/sh # sample.sh # jag är en kommentar # ändra inte första raden; den måste vara där echo "Systemet är: `uname -a`" # använd utdatan från kommandot echo "Mitt namn är $0" # inbyggda variabler echo "Du gav mig följande $# parametrar: "$* echo "Den första parametern är: "$1 echo -n "Vad heter du? " ; read ditt_namn echo observera skillnaden: "hej $ditt_namn" # citerar med " echo observera skillnaden: 'hej $ditt_namn' # citerar med ' DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # om filen är en katalog DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: grafik-fil" ;; *.txt|*.tex) echo "${file}: text-fil" ;; *.c|*.f|*.for) echo "${file}: källkods-fil" ;; *) echo "${file}: vanlig fil" ;; esac done echo "det finns ${DIRS} kataloger och ${FILES} filer" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # sista kommandots exit-kod echo "ZxY--!!!WKW inte funnen" fi echo "det räcker... skriv 'man bash' för mer info." </code> <sect1> C själv <p> Under UNIX är C system-språket, vare sig du gillar det eller ej. Massor av andra språk (FORTRAN, Pascal, Lisp, Basic, Perl, awk...) finns också tillgängliga. Om vi förutsätter att du kan lite om C, så kommer här några regler för de av er som har blivit bortskämda med Turbo C++ eller någon av dess släktingar under DOS. Linux C-kompilator heter <tt/gcc/ och saknar alla de "flashiga" egenskaper som vanligtvis finns med i DOS motsvarigheter: ingen IDE, on-line hjälp, integrerad avlusare osv. Det är bara en rå kommando-rads-kompilator, som är väldigt kraftfull och effektiv. För att kompilera det gamla goda <tt/hello.c/, skriver du: <tscreen><verb> $ gcc hello.c </verb></tscreen> vilket skapar en körbar fil som heter <tt/a.out/. För att ge det körbara programmet ett annat namn skriver vi <tscreen><verb> $ gcc -o hola hello.c </verb></tscreen> För att länka in ett bibliotek i programmet, lägg till switchen -l<biblioteksnamn>. T.ex., för att länk in matematik-biblioteket, skriv: <tscreen><verb> $ gcc -o mathprog mathprog.c -lm </verb></tscreen> (<tt>--l<biblioteksnamn></tt>-switchen tvingar <tt/gcc/ att länka in biblioteket <tt>/usr/lib/lib<bibltioteksnamn>.a</tt>, så <tt/-lm/ änkar in <tt>/usr/lib/libm.a</tt>). Så långt är allt gott. Men när du har ett program som består av flera källkods-filer, så kommer du att behöva använda <tt/make/-verktyget. Låt oss förutsätta att du har skrivit en uttrycks-tolkare: dess källkods- fil heter <tt/tolkare.c/ och #inkluderar två "header"-filer, <tt/tolkare.h/ och <tt/xy.h/. Sen vill du använda rutinen <tt/tolkare.c/ i ett program, säg <tt/kalk.c/, vilket i sin tur #inkluderar <tt/tolkare.h/. Vilken röra! Vad måste du nu göra för att kompilera <tt/kalk.c/? Du blir tvungen att skriva en så kallad <tt/makefile/, vilken talar om för kompilatorn vilka "beroenden" som finns mellan källkod och objekt-filer. I vårt exempel: <code> # Det här är en makefile, vilken används för att kompilera kalk.c # Använd TAB-tangenten där det är lämpligt! kalk: kalk.o tolkare.o <TAB>gcc -o kalk kalk.o tolkare.o -lm # kalk beror av två objekt-filer: kalk.o och tolkare.o kalk.o: kalk.c tolkare.h <TAB>gcc -c kalk.c # kalk.o beror av två källkods-filer tolkare.o: tolkare.c tolkare.h xy.h <TAB>gcc -c tolkare.c # tolkare.o beror av tre källkods-filer # slut på makefile. </code> Spara denna fil som <tt/Makefile/ och skriv <tt/make/ för att kompilera ditt program; som alternativ kan du spara den som <tt/kalk.mak/ och skriva <tt/make -f kalk.mak/, och naturligtvis ska du LMS. Du kan anropa hjälp om C-funktionerna, som avhandlas av man-sidorna, sektion 3, t.ex.: <tscreen><verb> $ man 3 printf </verb></tscreen> För att avlusa dina program, använd <tt>gdb</tt>. <tt>info gdb</tt> lär dig hur du ska använda det. Det finns en massa bibliotek tillgängliga där ute; bland de första du kommer vilja använda finns <tt/ncurses/, som tar hand om olika effekter i text-läge, och <tt/svgalib/, som kan fixa grafik. Om du känner dig till- räckligt tuff för att tackla X-programmering, finns det bibliotek som de ovan nämnda XForms, Qt, Gtk och många andra, med vilka du lätt kan skriva X11-program. Ta en titt på <tt> <url url="http://www.xnet.com/~blatura/linapp6.html"> </tt>. Många editorer kan fungera som ett IDE; <tt/emacs/ och <tt/jed/, t.ex., och även ge sådana funktioner som syntax-markering, automatisk indentering osv. Alternativet är att skaffa <tt/rhide/-paketet från <tt> <url url="ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/" </tt>. Det är en kopia av Borlands IDE, och det finns vissa möjligheter att du kommer att gilla det. <sect> Den återstående 1% <p> Mer än 1%, faktiskt... <sect1> Använda tar & gzip <p> Under UNIX finns det vissa, väldigt ofta använda, applikationer för att arkivera och komprimera filer. <tt/tar/ används för att arkivera: det är som <tt/PKZIP/, men utför ingen komprimering, det bara arkiverar. För att skapa ett nytt arkiv, skriv: <tscreen><verb> $ tar -cvf <arkiv_namn.tar> <fil> [fil...] </verb></tscreen> För att packa upp filer från ett arkiv: <tscreen><verb> $ tar -xpvf <arkiv_namn.tar> [fil...] </verb></tscreen> För att lista innehållet i ett arkiv: <tscreen><verb> $ tar -tf <arkiv_namn.tar> | less </verb></tscreen> Du kan komprimera filer med <tt/compress/, men det är gammalt och bör inte användas längre, eller <tt/gzip/: <tscreen><verb> $ compress <fil> $ gzip <fil> </verb></tscreen> som skapar en komprimerad fil med ändelsen .> (<tt/compress/) eller .gz (<tt/gzip/). Dessa program kan bara komprimera en fil i taget. För att packa upp, skriv: <tscreen><verb> $ compress -d <fil.Z> $ gzip -d <fil.gz> </verb></tscreen> LMS. Verktygen <tt/unarj/, <tt/zip/ och <tt/unzip/ (PK??ZIP-kompatibla) finns också tillgängliga. Filer med ändelsen <tt/.tar.gz/ eller <tt/.tgz/ (arkiverade med <tt/tar/ och sedan komprimerade med <tt/gzip/) är lika vanlig i UNIX-världen, som .ZIP-filer är under DOS. Så här listar du innehållet i ett <tt/.tar.gz/- arkiv: <tscreen><verb> $ tar -ztf <file.tar.gz> | less </verb></tscreen> <sect1> Installera program <label id="Install"> <p> Först av allt måste jag påpeka att det är roots jobb att installera applikationer. Vissa Linux-applikationer distribueras som <tt/.tar.gz/-arkiv, vilka i typfallet innehåller en katalog som heter <tt>paketnamn/</tt>, och innehåller filer och/eller underkataloger. En bra regel är att installera dessa paket från <tt>/usr/local</tt> med kommandot <tscreen><verb> # tar -zxf <arkiv.tar.gz> </verb></tscreen> och sedan läsa README- eller INSTALL-filen. I många fall distribueras paketet som källkod, vilket innebär att du måste kompilera det för att skapa binärfilerna; ofta räcker det att skriva <tt/make/ och sedan <tt>make install</tt>. Du behöver naturligtvis <tt/gcc/- eller <tt/g++/-kompilatorerna. Andra arkiv kan du bli tvungen att packa upp från <tt>/</tt>; det är fallet med Slackwares <tt/.tgz/-arkiv. Andra arkiv innehåller filerna, men ingen underkatalog. Lista alltid innehållet i en katalog, innan du installerar det. Debian- och Red Hat-distributionerna har sina egna arkiv-format: <tt/.deb/ och <tt/.rpm/ respektive. Det senare börjar bli vitt accepterat: för att installera ett <tt/.rpm/-paket, skriv <tscreen><verb> # rpm -i paket.rpm </verb></tscreen> <sect1> Tips du inte klarar dig utan <p> <bf/Kommando-komplettering/: tryck <TAB> när du skriver ett kommando, för att komplettera kommando-raden. Exempel: du är tvungen att skriva <tt>gcc this_is_a_long_name.c</tt>; att skriva <tt>gcc thi<TAB></tt> räcker. (Om du har andra filer som börjar med samma tecken, skriv tillräckligt många för att göra namnet unikt.) <bf/Bakåtscrollning/: om du trycker <SHIFT + PAGE UP> (den gråa knappen) så kan du scrolla bakåt ett par sidor, beroende på hur mycket grafik-minne du har. <bf/Återställa skärmen/: om du råkar köra <tt/more/ eller <tt/cat/ på en binär-fil, så fylls skärmen upp av skräp. För att fixa det, skriv (utan att se) <tt/reset/, eller följande tecken-sekvens: <tt/echo CTRL-V ESC c RETURN/. <bf/Klistra in text/: i konsollen, se nedan; i X, klicka och dra för att markera texten i en <tt/xterm/, klicka sedan med mitten-knappen (eller båda knapparna tillsammans, om du har en mus med två knappar) för att klistra in. <tt/xclipboard/ (endast för text) finns också; bli inte förvirrad av dess långsamma reaktioner. <bf/Använda musen/: Om du har installerat <tt/gpm/, en musdrivrutin för konsollen, så kan du klicka och dra för att markera text, sedan högerklicka för att klistra in markerad text. Fungerar även över olika virtuella terminaler. <bf/Meddelanden från kärnan/: ta en titt på <tt>/var/adm/messages</tt> eller <tt>/var/log/messages</tt>, som root, för att se vad kärnan har att säga dig, inklusive uppstarts-meddelanden. Kommandot <tt/dmesg/ är också praktiskt. <sect1> Var du kan hitta program <label id="Programs"> <p> Om du undrar om det finns program som kan ersätta dina gamla för DOS/Win, så förslår jag att du kollar igenom de Linux-resurser som finns: <tt> <url url="ftp://sunsite.unc.edu/pub/Linux"> </tt>, <tt><url url="ftp://tsx-11.mit.edu/pub/linux"> </tt>, and <tt><url url="ftp://ftp.funet.fi/pub/Linux"> </tt>. Ett annat suveränt ställer är "Linux applications and utilities page", på <tt> <url url="http://www.xnet.com/~blatura/linapps.shtml"> </tt>. <sect1> Några saker du inte kunde göra <p> Linux kan göra en himla massa saker som var krångliga, svåra eller omöjlig att göra med DOS/Win. Här kommer en kort lista, för att reta din aptit: <itemize> <item> <tt/at/ låter dig köra program vid en angiven tidpunkt; <item> <tt/awk/ är ett enkelt men kraftfullt språk för att manipulera datafiler (och inte bara det). T.ex., om <tt/data.dat/ är en datafil med flera fält, så skriver <tscreen><verb> $ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat </verb></tscreen> ut fälten 1 och 4 i varje rad i <tt/data.dat/, vars andra fält innehåller "abc". <item> <tt/cron/ är användbart för att utföra vissa saker med jämna mellanrum, på speciella datum och tidpunkter. Skriv <tt/man 5 crontab/. <item> <tt/file <filnamn>/ talar om vilken sort fil <tt/filnamn/ är (ASCII-text, körbar, arkiv osv.); <item> <tt/find/ (se även avsnittet <ref id="Directories: Trans" name="Kataloger: att översätta kommandon från DOS/Win till Linux">) är ett av de mest kraftfulla och användbara kommandona. Det används för att hitta filer som matchar flera beskrivningar och utför vissa saker med dem. Ett gerenellt sätt att använda det är: <tscreen><verb> $ find <katalog> <uttryck> </verb></tscreen> där <uttryck> innehåller sökningskriterier och åtgärder. Exempel: <tscreen><verb> $ find . -type l -exec ls -l {} \; </verb></tscreen> hittar alla filer som är symboliska länkar och visar vart de pekar. <tscreen><verb> $ find / -name "*.old" -ok rm {} \; </verb></tscreen> hittar alla filer som matchar mönstret och tar bort dem, efter att ha frågat om lov först. <tscreen><verb> $ find . -perm +111 </verb></tscreen> hittar alla filer vars rättigheter matchar 111 (körbara). <tscreen><verb> $ find . -user root </verb></tscreen> hittar alla filer som tillhör root. Massor av möjligheter här---LMS. <item> <tt/grep/ hittar text-mönster i filer. T.ex. så listar <tscreen><verb> $ grep -l "geology" *.tex </verb></tscreen> filerna *.tex som innehåller ordet "geology". Varianten <tt/zgrep/ fungerar på gzippade filer. LMS; <item> <bf/reguljära mönster/ är ett komplicerat men väldigt kraftfullt sätt att utföra säknings-operationer på text. T.ex. så matchar <verb>^a[^a-m]X{4,}txt$</verb> en rad som börjar med "a", följt av vilket tecken som helst, utom någon i intervallet a-m, följt av fyra eller flera "X" och slutar med ".txt". Du använder reguljära mönster med avancerade editorer, <tt/less/ och många andra program. <tt>man grep</tt> för en introduktion. <item> <tt/script <skal-programs-fil>/ skickar skärm-innehållet till <tt/skal-programs-fil/, tills du ger kommandot <tt/exit/. Användbart för avlusning; <item> <tt/sudo/ tillåter användare att utföra vissa av roots uppgifter (t.ex. att formattera och montera diskar; LMS); <item> <tt/uname -a/ ger dig information om ditt system; <item> Följande kommandon kan vara praktiska: <tt>bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew.</tt> LMS. </itemize> <sect1> Vanliga filändelser och relaterade program <p> Du kommer att stöta på massor av filändelser. Bortsett från några av de mer ovanliga (d.v.s. typsnitt osv.), så kommer här en lista på vad som är vad: <itemize> <item> <tt/1 ... 8/: man-sidor. Om du är från Mars, och alltså inte har det, skaffa <tt/man/. <item> <tt/arj/: arkiv gjorda med <tt/arj/. <item> <tt/dvi/: utdata-filer från TeX (se nedan). <tt/xdvi/ för att titta på dem; <tt/dvips/ för att omvandla dem till PostScript (<tt/.ps/). <item> <tt/gz/: arkiv gjorda med <tt/gzip/. <item> <tt/info/: info-fil (typ som ett alternativ till man-sidor). Skaffa <tt/info/. <item> <tt/lsm/: Linux Software Map-fil. Det är en ren ASCII-fil som innehåller en beskrivning av paketet. <item> <tt/ps/: PostScript-fil. För att titta på den, eller skriva ut den, skaffa <tt/gs/ och, valfritt, <tt/ghostview/ eller <tt/gv/. <item> <tt/rpm/: Red Hat-paket. Du kan installera det på ditt system med hjälp av paket-hanteraren <tt/rpm/. <item> <tt/taz, tar.Z/: arkiv skapade med <tt/tar/ och komprimerade med <tt/compress/. <item> <tt/tgz, tar.gz/: arkiv skapade med <tt/tar/ och komprimerade med <tt/gzip/. <item> <tt/tex/: text-fil som ska skickas vidare till TeX, ett kraftfullt typsättnings-system. skaffa paketet <tt/tex/, vilket kommer med de flesta distributioner: men akta dig för NTeX, vilken har korrupta typsnitt, och kommer med vissa versioner av Slackware. <item> <tt/texi/: texinfo-fil, kan producera både TeX- och info-filer (cp. <tt/info/). Skaffa <tt/texinfo/. <item> <tt/xbm, xpm, xwd/: Grafik-filer. Skaffa <tt/xpaint/. <item> <tt/Z/: arkiv skapade med <tt/compress/. </itemize> <sect1> Konvertera filer <p> Om du behöver skicka text-filer mellan DOS/Win och Linux, så se upp med "slut-på-raden"-problemet. Under DOS avslutas varje text rad med CR/LF (vagnretur och ny rad), medan det under Linux endast är LF. Om du vill försöka editera en DOS-text under Linux, så kommer antagligen varje rad sluta med ett konstigt "M"-tecken; en Linux-textfil under DOS, kommer var en enda lång rad, utan stycken. Det finns några verktyg, <tt/dos2unix/ och <tt/unix2dos/, för att konvertera filerna. Om dina filer innehåller accenterade tecken, se till så att de är skapade under Winders (med t.ex. Write eller Notepad) och inte under DOS; annars komer alla accenterade tecken att bli förstörda. För att konvertera Word- och WordPerfect-filer till ren text, så är det lite krångligare, men möjligt. Du behöver ett av verktygen som finns på CTAN-sajten: ett är <tt> <url url="ftp://ftp.tex.ac.uk"> </tt>. Skaffa paketet <tt/word2x/ från katalogen <tt>/pub/tex/tools</tt>, eller testa ett av paketen i katalogen <tt>/pub/tex/support</tt>. Jag har bara testat <tt>word2x</tt>, ocoh det fungerar ganska bra. <sect> Slutet, för tillfället <label id="The End"> <p> Gratulerar! Du har nu greppat en liten del av UNIX och är redo att börja jobba. Kom ihåg att din kunskap om systemet fortfarande är begränsad, och att du förväntas träna mera med Linux, för att kunna använda det utan alltför stora problem. Men om allt du behöver göra är att skaffa en bunt applikationer och börja jobba med dem, så är jag säker på att det jag har tagit med här räcker till. Jag är säker på att du kommer att trivas med Linux och fortsätta lära dig mer om det, det gör alla. Jag är också säker på att du aldrig kommer vilja gå tillbaks till DOS! Jag hoppas att jag har gjort mig förstådd och gjort mina 3-4 läsare en tjänst. <sect1> Upphovsrätt <p> Om inget annat anges så tillhör upphovsrätten för Linux HOWTO-dokument sina respektive författare. Linux HOWTO-dokument får reproduceras och distribueras hela eller i delar, på vilket som helst medium, fysiskt eller elektroniskt, så länge upphovsrätts-avsnittet finns kvar i alla kopior. Kommersiell distribution är tillåten och uppmuntras; författaren vill dock få veta om eventuella sådana distributioner. Alla översättningar, härledda arbeten eller sammanplockade arbeten, vilka innehåller Linux HOWTO-dokument, måste täckas av denna upphovs- rätt. Alltså, du får producera ett härlett arbete från en HOWTO och lägga till ytterligare begränsningar på dess distribution. Undantag från dessa regler kan tillåtas under vissa förhållanden; var vänlig kontakta Linux HOWTO-samordnaren, på adressen nedan. Kort sagt, vi vill bidra till spridningen av denna information genom så många kanaler som möjligt. Vi önskar dock behålla upphovsrätten till HOWTO-dokumenten och vill bli underrättade om alla planer på vidare- distribution av HOWTOna. Om du har några frågor, var vänlig kontakta Tim Bynum, Linux HOWTO- samordnare, på linux-howto@sunsite.unc.edu, via e-post. <sect1> Tillkännagivanden <p> "From DOS to Linux HOWTO" är skriven av Guido Gonzato, <tt><htmlurl url="mailto:guido@ibogfs.cineca.it" name="guido@ibogfs.cineca.it"></tt>. Många tack till Matt Welsh, författaren till "Linux installation and getting started", till Ian Jackson, författaren till "Linux frequently asked questions with answers", till Giuseppe Zanetti, författaren till "Linux", till alla människor som skickat mig e-post med förslag, och speciellt till Linus Torvalds och GNU som gav oss Linux. Det här dokumentet levereras som det är. Jag har lagt ner mycket ansträngningar på att skriva det så att det stämmer så bra som möjligt, men du får använda informationen i det på egen risk. Under inga omständigheter skall jag hållas ansvarig för några skador, som resulterar ur användningen av detta arbete. All respons är välkommen. Känn dig välkommen att kontakta mig med frågor, förslag, "flames" osv. Ha det kul i Linux och livet, Guido =8-) </article>