home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd2.bin / docu / ascii / suselxen / slxen-19.txt < prev    next >
Text File  |  2000-03-11  |  60KB  |  1,292 lines

  1.                                                                                             Chapter 19
  2.                                               First Steps with Linux
  3.  
  4. Since UNIX is such a complex system, we can only cover the most important
  5. aspects here. This book is not aimed at replacing the existing literature on
  6. Linux (or UNIX)-this would be an impossible task.
  7. We recommend that former DOS users consider buying a few good books
  8. You can find examples in the literature recommendations in the appendix. If
  9. you already have some non-Linux, Unix literature, this may be sufficient, as
  10. a large proportion of information is relevant beyond system borders.
  11. Some books, or extracts from them, which are part of the GPL, can be found
  12. as .dvi or PostScript files in package doc, series books. They can be
  13. viewed in X11 with xdvi or gv (Ghostview) and printed out in full, or by
  14. page, with lpr.
  15. Until you have obtained these books, this chapter should give you a short
  16. overview and, as well, help you while "experimenting" with Linux for the
  17. first time.
  18. Being a UNIX novice, once you have successfully installed the system, you
  19. should log in with your `user name' ¡ the one you specified during the
  20. installation ¡ (not as root!), firstly, because there are a lot of settings that
  21. have already been dealt with for you and secondly, you will then only be
  22. responsible for your private home directory. This is also for security reasons
  23. ¡ to avoid deleting or changing system-relevant data.
  24.  
  25.  There is no undelete in Linux (yet) as there is in DOS. So, if you delete
  26.  system files by accident, you will probably have to reinstall the entire
  27.  system.
  28.  
  29. The first steps in Linux are somewhat complicated, since you are the system
  30. administrator as well, not an easy task for a novice user.
  31.  
  32. 19.1 Logging in, the User "root", Adding Users
  33. The multi-user capabilities of Linux mean that whenever you want to use
  34. the system, you have to log in on the  console (see Section 19.4 page 430)
  35. each time you want to use the system. 1 This procedure, an essential part
  36. of the security system of a modern multi-user system, is called logging in;
  37. 1 If you have configured a graphical login (cf. Section 3.6.6 page 98), then this is also valid for
  38. the procedure described below!
  39.  
  40.                                                                                                        427
  41.  
  42.  
  43.  
  44. 19. First Steps with Linux
  45.  
  46.                 this ensures that each user is allocated his own working environment and
  47.                 can only access his own files. You enter your user name (e. g., `newbie')
  48.                 and your password (e. g. xxxxxx); you must of course replace the characters
  49.                 xxxxxx with the password you chose yourself! The characters xxxxxx are not
  50.                                                                                          
  51.                 displayed on the monitor; just type in the characters and then press      2:
  52.                                                
  53.                      login: newbie      
  54.                 If you have successfully "logged in", you will find yourself in the home direc-
  55.                 tory of the corresponding user (e. g., /home/newbie for the user `new-
  56.                 bie').
  57.                 If you want to leave the console, you can log out using the command
  58.                 logout.
  59.                 The user `root' is the  system administrator and is allowed to do every-
  60.                 thing. All critical system information files can only be changed by `root'.
  61.                 Therefore you should only log in as `root' if you plan to configure some-
  62.                 thing or execute system specific tasks. Never log in as `root' if it is not
  63.                 necessary (most beginners forget this!) Then you will protect your system
  64.                 against inadvertent changes, which in certain cases might mean having to
  65.                 re-install the whole system.
  66.                 Some things that only `root' can do:
  67.                   *  mounting filesystems (such as CD's, floppies, installing software). This
  68.                      right can be given to selected users by adding the option user to the
  69.                      corresponding device in /etc/fstab(cf. Section 19.11.2 page 444).
  70.                   * adding and deleting users (cf. Section 3.6.7 page 99)
  71.                   * installing a new kernel (cf. Chapter 13 page 317).
  72.                   * configuring the system
  73.                   * shutting down the system (cf. Section 19.2).
  74.                   * starting yast (cf. Chapter 3 page 71).
  75.  
  76.                 19.2 Shutting Down and Booting the System
  77.  
  78.                   IMPORTANT! You should never turn off the machine while it is running,
  79.                   nor press the reset button ( reset)! If you switch it off without shutting it
  80.                   down properly, you risk loss of data and damage to your  filesystem.
  81.  
  82.                 The commands for shutting down your system properly are shown in Ta-
  83.                 ble 19.1 on the facing page.
  84.                 The shutdown command can only be invoked by `root'.
  85.                 To shut down your system, log in as `root' and enter the commands
  86.                 shutdown -h now or shutdown -r now.
  87.                                                                  
  88.                 Alternatively, you can use  Ctrl  +  Alt  + Del  ,which you might already
  89.                 know from booting DOS. This combination does not work if you are currently
  90.                 running X11. Nevertheless, this method can be used by any user on any
  91.                 virtual console.
  92.                                                                      
  93.                  2 In case you haven't yet set a password, just press      
  94.  
  95. 428
  96.  
  97.  
  98.  
  99.                                                       19.3. Commands ¡ Entries on the Command Line
  100.  
  101.  
  102.   shutdown -h now halts the system; when you see the out-
  103.                                    put: "the system is halted" you can
  104.                                    switch off your machine
  105.  
  106.   shutdown -r now reboots the system immediately
  107.  
  108.            Table 19.1: Commands for shutting down your Linux system
  109.  
  110. 19.3 Commands ¡ Entries on the Command Line
  111. Even though the Linux world is becoming more and more colorful and user-
  112. friendly ¡ menu-driven programs, for example ¡ there will still be situations
  113. ¡ in an emergency, or when a menu-driven program for a specific task is not
  114. available ¡ where you need to enter a UNIX-"command".
  115.  
  116. What is a UNIX Command?
  117. The following are all UNIX commands:
  118.  
  119.  * executable programs
  120.  * Shell scripts
  121.  * Scripts using scripting languages (Perl, Tcl, etc).
  122.  * Shell aliases (such as shell macros).
  123.  
  124. They have one thing in common: they are all files. If you launch such a
  125. command in Linux, you tell the shell to find the file with that name (you need
  126. the search path, which is set in PATH, to find the file, and when it has been
  127. found, to run it, if it has the correct user permissions (executable).
  128. But what happens if the program (for example, the copy command) needs
  129. additional parameters or file names?
  130. This is fairly straightforward. Parameters are additional arguments for a
  131. command. They might tell the command optional items, such as file names,
  132. etc. The parameters directly follow the command, separated by at least one
  133. blank3.
  134. In addition it can be useful to control the behavior of the command, (if you
  135. want a long list of file names instead of a short one, for example). This is
  136. achieved by means of "options". Options always follow the actual command,
  137. before any parameters. There are a few rare exceptions where commands
  138. have been "messily" programmed. In general, options are preceded by a dash
  139. (e. g. -la) and follow one of two patterns (see Table 19.2 on the next page):
  140. If you want to set multiple options you can "cumulate", or add them all
  141. together behind one dash (lots of Linux programs understand this rule, but
  142. not all of them). For example:
  143. 3 This also implies that a blank can never be part of the command itself, as it serves as a separator
  144. between parameters; you may add blanks for a command if you enclose them in quotation marks
  145. ("" or '')
  146.  
  147.                                                                                                          429
  148.  
  149.  
  150.  
  151. 19. First Steps with Linux
  152.  
  153.  
  154.                   -a                             short version, UNIX typical
  155.                   --all                          long version, the so-called GNU notation
  156.  
  157.                                            Table 19.2: Command options
  158.  
  159.  
  160.                     -a -f -r -u            or
  161.                     -afru                  or
  162.                     -frua
  163.                 This example also shows that the order is irrelevant. Well, even here there are
  164.                 exceptions to the rule.
  165.                 To slightly complicate the issue, some options themselves understand op-
  166.                 tional parameters. For example:
  167.                     -f <myfile> or
  168.                         -f<myfile>
  169.                 In some (very) rare cases, there has to be a blank between the option and its
  170.                 parameter. Normally you should use a blank.
  171.  
  172.                 Examples
  173.  
  174.                 To summarize, this is what commands look like in Linux:
  175.                 (Examples)4
  176.                     earth: # fdisk
  177.                     earth: # lsmod
  178.                     earth: # ls
  179.                 With options, they look like this:
  180.                     earth: # fdisk -l
  181.                     earth: # ls -l -a
  182.                     earth: # ls -la
  183.                 With parameters:
  184.                     earth: # fdisk /dev/hda
  185.                     earth: # ls /tmp
  186.                 And using both options and parameters:
  187.                     earth: # ls -la /tmp
  188.                     earth: # rpm -qpl <meinpaket>.rpm
  189.                     earth: # gcc -o <optionenparameter> <parameter>
  190.                 It is essential that the blank separates the different parts of the command from
  191.                 each other, which is why it is a special character for Linux commands.
  192.  
  193.                 19.4 Virtual Consoles
  194.  
  195.                 Linux is a multi-user and  multi-tasking system. You will learn to appreciate
  196.                 the advantages of these features, even on a standalone PC system.
  197.  
  198.                  4 Remember: "earth: # " shows the prompt, you don't have to enter earth: and `#'
  199.                 yourself.
  200.  
  201. 430
  202.  
  203.  
  204.  
  205.                                                                  19.5. Directories and Filenames
  206.  
  207. In text mode, there are six virtual  consoles available. You can switch be-
  208.                                       
  209. tween them by using  Alt  + F1  to  Alt  +  F6  
  210.                                                     . The seventh console is re-
  211. served for X11.5
  212. If you want to switch to a console from X11 without leaving X11, you should
  213.                                                     
  214. use  Ctrl  +  Alt  +  F1  to  Ctrl  +  Alt  +  F6  
  215.                                                     .  Alt  +  F7  brings you back
  216. to X11.
  217.  
  218. 19.5 Directories and Filenames
  219. All information ¡ whether it is text, images, database files or information on
  220. system configuration ¡ is stored in "files", which in turn are stored in pre-
  221. determined "directories" (cf. Appendix D page 469). With various tools and
  222. programs you can access these files in different directories, in order to look
  223. at the contents of these files or change them where necessary.
  224. The character for separating directories (`\' in DOS) is a `/' on UNIX.
  225. Thus, a path is a string in which all directories are separated by `/'. A
  226. single `/' represents the topmost directory, the  "root directory".
  227. UNIX distinguishes between upper- and lower case names, i.e. Emil refers
  228. to a different filename than emil. Separating a filename into its name and
  229. extension is usually not necessary, but there are some programs that require a
  230. specific extension (such as .dvi in LATEX).
  231.  
  232.  A nice little feature when entering file or directory names is the function
  233.               
  234.  of the  Tab  (tabulator key). Just enter the first few letters of the desired
  235.                           
  236.  file name and press  Tab  .The  Shell will now complete the file name for
  237.  you (insofar as it is clearly distinguishable by these letters). Pressing the
  238.  tab key twice will display all available possibilities. This feature is called
  239.  "globbing" in Unix.
  240.  
  241. 19.6 Working with Directories
  242. After logging in (cf. Section 19.1 page 427), you will be in your home direc-
  243. tory. The name of the current directory can be checked by typing pwd (print
  244. working directory):
  245.    newbie@earth:/home/newbie > pwd
  246.          /home/newbie
  247. To change to another directory, use the cd command (the same as in DOS).
  248. Typing:
  249.    newbie@earth:/home/newbie > cd /usr/bin
  250.    newbie@earth:/usr/bin >
  251. changes to the directory /usr/bin.
  252.    newbie@earth:/home/newbie > cd latex
  253.    newbie@earth:/home/newbie/latex >
  254. changes to latex, provided the directory /home/newbie/latex exists.
  255. If you invoke cd without any argument, you will be brought back to your
  256. home directory. This can be reached by typing a tilde (` ') as well.
  257. 5 You can assign more consoles via /etc/inittab.
  258.  
  259.                                                                                             431
  260.  
  261.  
  262.  
  263. 19. First Steps with Linux
  264.  
  265.                 So typing:
  266.                     newbie@earth:/home/newbie > cd  /latex
  267.                 changes to the directory latex in your home directory. As with DOS, `.'
  268.                 signifies the current directory, whereas `..' stands for the parent directory.
  269.                 You can create new directories with mkdir (make directory). The command:
  270.                     newbie@earth:/home/newbie > mkdir texts
  271.                 creates the directory text directly underneath the current directory. Empty
  272.                 directories can be removed using the command rmdir (remove directory).
  273.  
  274.                 19.7 Working with Files
  275.                 Until they are (perhaps) one day replaced by objects or symbols, files will
  276.                 continue to play a central role while working with the computer. Therefore a
  277.                 huge variety of file-related commands exist in Linux.
  278.  
  279.                 19.7.1 Information on Files
  280.                 The command ls (list) outputs the contents of your current directory. A
  281.                 list of all filenames and directories is shown. Directory names in the list
  282.                 are marked with a `/'. By adding a parameter, the contents of a different
  283.                 directory can be displayed:
  284.                     newbie@earth: > ls /usr/bin
  285.                 Extensions are not required in order to run programs, as is the case in DOS
  286.                 (.exe or .com). Instead, execution of programs is controlled by one of three
  287.                 permissions which may be set for each file by its owner. See Section 19.8
  288.                 page 437 for more information on file permissions.
  289.                 A useful option to ls is -l. This gives you a more detailed list of filenames,
  290.                 including the permissions, owner, group and size of the file:
  291.                     newbie@earth: > ls -l
  292.                 This will create an output such as screen output 19.7.1.
  293.  
  294.  
  295.                    drwxr-xr-x 6 newbie users               1024 Mar 21 12:39 ./
  296.                    drwxr-xr-x 4 newbie users               1024 Mar 21 17:13 ../
  297.                    drwxr-xr-x 2 newbie users               1024 Nov 6            16:19 bin/
  298.                    -rwxr-xr-x 1 newbie users               4160 Mar 21 12:38 check*
  299.                    drwxr-xr-x 2 newbie users               1024 Nov 6            16:23 etc/
  300.                    drwxr-xr-x 2 newbie users               1024 Nov 6            16:19 sbin/
  301.                    drwxr-xr-x 12 newbie users              1024 Nov 6            18:20 usr/
  302.                    -rw-r--r-- 1 newbie users 185050 Mar 15 12:33 xvi.tgz
  303.                    -rw-r--r-- 1 newbie users 98444 Mar 14 12:30 xvnews.tgz
  304.  
  305.                                      Screen output 19.7.1: Output of ls -l
  306.  
  307.                 The meaning of the entries in screen output 19.7.1 is explained in Table 19.3
  308.                 on the next page.
  309.  
  310.  
  311.  
  312. 432
  313.  
  314.  
  315.  
  316.                                                                          19.7. Working with Files
  317.  
  318.  
  319.   Permissions          The first character indicates the file type. `d' stands
  320.                        for directory, `l' for link and `-' for a normal file.
  321.                        The next nine characters indicate permissions for the
  322.                        user, the group and all other users (in groups of three).
  323.                        `r' stands for read, `w' for write, and `x' for ex-
  324.                        ecutable. For example, `-rw-r--r--' refers to a
  325.                        file which can be read by the owner, the group and all
  326.                        others, but it can only be changed by the owner. See
  327.                        the manpage for chmod (man chmod).
  328.   Owner                The owner of the file. See the manpage for chown
  329.                        (man chown).
  330.   Group                The group the file belongs to. See the manpage for
  331.                        chgrp (man chgrp).
  332.   Size                 The file's size in bytes.
  333.   Last change          Date when the file was last changed. Files that were
  334.                        changed more than a year ago are marked with the
  335.                        year instead of hours:minutes.
  336.   Name                 The file or directory name.
  337.  
  338.  
  339.                  Table 19.3: Explanation of UNIX file attributes
  340.  
  341.  
  342. 19.7.2 Wildcards
  343. Compared to DOS, the  wildcard interpreting options of the shell (e. g.,
  344. bash) are much more powerful.
  345. For example:
  346.    ls *a???.?
  347. returns all files in the current directory which have an `a' as the sixth letter
  348. from the end and a `.' as the last but one character. Instead of a single
  349. character, you can give a whole range of different characters. For example,
  350. the letters `a', `b', `c', `d', `e', `f'. This would be written like this:
  351.    ls *[a-f]???.?
  352. You can even search in non-alphabetical order:
  353.    ls *[1,3-5,M-P,a,k]???.?
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.                                                                                              433
  367.  
  368.  
  369.  
  370. 19. First Steps with Linux
  371.  
  372.                 19.7.3 Contents of Files
  373.                 You can view the contents of a file with less and more, a page at a time.
  374.                                                                             
  375.                 With more, you can scroll forwards with                     (space) and backwards
  376.                            
  377.                 with  b  (see Table 19.4). However, less is considerably more comfortable,
  378.                 which is why it is generally preferred.
  379.                 With
  380.                        newbie@earth: > less /etc/login.defs
  381.                 the file /etc/login.defs is loaded into the "viewer" less; the first page
  382.                 of the file is displayed, together with an inverse status line on the bottom edge
  383.                                                       
  384.                 of the screen. With  space bar  you can scroll forwards a page at a time, with
  385.                    
  386.                  b  backwards; see also the list in Table 19.4.
  387.  
  388.  
  389.                   h             Help
  390.                   q             Quit
  391.                   e             One line forwards
  392.                   y             One line backwards
  393.                   f             One page forwards
  394.                   b             One page backwards
  395.                   d             Half a page forwards
  396.                   u             Half a page backwards
  397.                   g             Go to beginning of file
  398.                   G             Go to end of file
  399.                   /             Start search
  400.                   n             Jump to next marker
  401.                   v             Load file into the  editor
  402.                   F             View a "growing" (log )file
  403.                    c            Switch from F mode to "normal"
  404.  
  405.  
  406.                                Table 19.4: Keys used for the "viewer" less (Selection)
  407.  
  408.  
  409.                                                                                       
  410.                 With the  /  key you can enter a search item (e. g. yes).      starts your
  411.                             
  412.                 search.  n  jumps to the next occurrence of the item.
  413.                                                    
  414.                 Of special interest is the key  F  
  415.                                                      . It allows you to view a log file, for example,
  416.                                                                 
  417.                 as entries are added to it. With  Ctrl  +  c  you can leave this mode.
  418.                                                                                     
  419.                 With the  h  key, all the features of less are displayed.  q  leaves the help
  420.                                     
  421.                 mode. Press  q  again to quit the program.
  422.                 To modify files you should start an  editor; The standard UNIX editor is vi,
  423.                 and it is well worth spending some time becoming familiar with some of its
  424.                 basic commands.
  425.  
  426.                 19.7.4 Hidden Files
  427.                 Hidden files are a special kind of file. The filenames for these files begin
  428.                 with a dot and are only seen if you use ls with the option -a. In your home
  429.  
  430. 434
  431.  
  432.  
  433.  
  434.                                                                       19.7. Working with Files
  435.  
  436. directory, just enter ls -a. Now, you should see all files, even the hidden
  437. ones (like .profile or .xinitrc). Hidden files are protected from any
  438. unintentional deletion using rm * (see Section 19.7.5). These files have to
  439. be deleted separately, using rm <.filename>.
  440.  
  441.  If you enter rm .*, all hidden files from the current directory will be
  442.  deleted! If the option -r is added (recursive; rm -r .*), all files of the
  443.  parent directory are deleted as well (they are named `../bla', which is
  444.  covered by `.*' as well)!
  445.  So be extremely careful with -r!
  446.  
  447. 19.7.5 Copying, Renaming and Deleting Files
  448. The command for copying files in Linux is cp:
  449.     newbie@earth: > cp source target
  450. To copy the file /etc/XF86Config into your home directory, you would
  451. use:
  452.     newbie@earth: > cp /etc/XF86Config  
  453. Files can be removed using the rm command. A very handy option is -r
  454. which deletes recursively (removing all subdirectories and their files as well;
  455. this is comparable to deltree in DOS). Entering:
  456.     newbie@earth: > rm -r bin
  457. deletes the directory bin and all files and subdirectories within it. Please
  458. use this option with extreme caution, since there is absolutely no means of
  459. recovering (restoring) deleted files!
  460. You can move files by typing mv. The syntax is identical to cp:
  461.     newbie@earth: > mv xvnews.tgz XVNEWS.tgz
  462. This moves the file xvnews.tgz to XVNEWS.tgz, which is just the same
  463. as renaming it. It gets more interesting when you move whole directory trees:
  464.     newbie@earth: > mv bin  /latex
  465. This moves the directory bin (if there is one) to  /latex. All the files that
  466. were in bin will now be found in  /latex. Even this command should be
  467. used with care, since it is very easy to move whole directory trees to places
  468. that you do not remember afterwards.
  469. Moving a complete directory tree is only possible within the same filesystem
  470. (or partition).
  471.  
  472. 19.7.6 Searching for Files and for Strings Within Files
  473. This leads to another useful command: find. To search all subdirectories of
  474. the current directory for the file emil, you should enter:
  475.     newbie@earth: > find . -name "emil"
  476. The first argument gives the directory where the search should commence.
  477. The option name expects a search string (wildcards are allowed). Thus, to
  478. search for all files containing the string `emil' in their names, you would
  479. have to change the line to:
  480.  
  481.                                                                                           435
  482.  
  483.  
  484.  
  485. 19. First Steps with Linux
  486.  
  487.                         newbie@earth: > find . -name "*emil*"
  488.                 As with all commands, we suggest you look at the manpages for more infor-
  489.                 mation.
  490.                 A very fast way to find files is with the locate command. Look at the
  491.                 corresponding manpage as well.
  492.                 If you do not want to search for a file but for a string inside a file instead,
  493.                 you should use the grep command (= get regular expression pattern). This
  494.                 command line searches for the string `detective' in the file emil:
  495.                         newbie@earth: > grep "detective" emil
  496.                 With grep, you can search vast amounts of data for certain strings very
  497.                 quickly. Any number of filenames can be entered. Even searching using
  498.                 wildcards and regular expressions can be used. grep outputs every location
  499.                 where the string was found. grep has a large number of options. Please
  500.                 consult the manpage for grep (man grep).
  501.  
  502.                 19.7.7 Symbolic Links
  503.                 By the use of symbolic links, you can give a file an additional name. This
  504.                 name then points to the corresponding file. Imagine that you want to keep
  505.                 different versions of a file, but the version actually used should always be
  506.                 obtainable by the same name. The solution is to use symbolic linking, which
  507.                 points to the version currently in use. Symbolic links behave just like the file
  508.                 they link, thus being executable if the "source" file is executable. The entry:
  509.                         newbie@earth: > ln -s check.2.4 check
  510.                 creates a symbolic link check which points to check.2.4. In your direc-
  511.                 tory, this looks like Figure 19.7.2:
  512.  
  513.                    lrwxrwxrwx 1 newbie users 1024 Mar 21 17:13 check -> check.2.4*
  514.  
  515.  
  516.                                 Screen output 19.7.2: A symbolic link using ls -l
  517.  
  518.                 Links can be removed with the command rm.
  519.  
  520.                   Here only the link is removed, not the file it points to!
  521.  
  522.                 19.7.8 Archiving and Saving Data
  523.                 To create and unpack archives, the command tar (tape archive) is used. Nor-
  524.                 mally compressed archives have the extension .tgz or tar.gz. Uncom-
  525.                 pressed archives have the extension .tar. The most important uses of tar
  526.                 are:
  527.                  1. Unpacking archives (e. g., from CD's)
  528.                            newbie@earth: > tar xvfz archive-file.tgz
  529.  
  530.                         tar unpacks (x) the compressed (z) archive archiv-file.tgz (f)
  531.                         and creates subdirectories as well, if necessary. Each file that is extracted
  532.                         is sent to the standard output (v).
  533.  
  534. 436
  535.  
  536.  
  537.  
  538.                                                                                      19.8. Permissions
  539.  
  540. 2. Creating archives
  541.         newbie@earth: > tar cvfz archive-
  542.         file.tgz file1 dir1
  543.  
  544.     tar creates (c) the compressed (z) archive archive-file.tgz (f),
  545.     where file1 and all files in dir1 are included as well. Each file that is
  546.     packed is sent to the standard output (v).
  547. 3. Viewing the archive contents
  548.         newbie@earth: > tar tfz archive-file.tgz
  549.  
  550.     tar shows a table of contents (t) of the compressed (z) archive archiv-
  551.     file.tgz (f).
  552. The z flag tells tar to create/unpack compressed archives using GNU zip
  553. (gzip).
  554.     newbie@earth: > tar xvf archive-file.tar
  555. unpacks the uncompressed archive-file.tar. More information can
  556. be found by typing
  557.     newbie@earth: > info tar
  558.  
  559. 19.8 Permissions
  560. Only the user `root', as the system administrator, has unrestricted access
  561. to all files. Permissions are structured into three categories:
  562.  * Owner permissions
  563.  * Group permissions
  564.  * "All others" permissions
  565. Each of these categories is represented by three characters. Together with the
  566. first character (file type: d, l, or -), this results in a total length of ten for the
  567. permission flags field. Each flag is represented by a certain character. The
  568. possible flags for all three categories are the same: `r' for reading, `w' for
  569. writing and `x' for executing. If a flag is not set, this is represented by a
  570. `-' character instead of the flag. As an example, let"s look at the directory
  571. entry for the imaginary file linux.info:
  572.     -rw-r-xr--          1 newbie users 29524 Jun 29 13:11 linux.info
  573.  
  574.               - r w - r - x r - -
  575.               Type    Owner                 Group            Others
  576.  
  577.                  Figure 19.1: How file permissions are displayed
  578.  
  579. This means that the file linux.info can be read and written by the owner
  580. (newbie). All members of the group users are allowed to read and execute
  581. it. All other users are allowed only to read it. A `-' character in the first
  582. position indicates that this is a "normal"  file.
  583. The same applies to directories. If the file in question is a directory, there is a
  584. `d' in front of the nine characters (`d' stands for directory). It might look
  585. like this:
  586.  
  587.                                                                                                   437
  588.  
  589.  
  590.  
  591. 19. First Steps with Linux
  592.  
  593.                     drwxr-xr--         3 newbie users 1024 Jun 29 13:11 info/
  594.                 If the flag `x' is set for a directory, then you can change to (cd) this directory.
  595.                 This means that users who do not belong to the group users cannot change
  596.                 to this directory.
  597.  
  598.                 Changing Permissions
  599.                 You can change permissions with the chmod command (change mode). Gen-
  600.                 erally, chmod needs two arguments:
  601.                   * the permissions to be changed, and
  602.                   * a file name.
  603.                 The categories of the three possible groups are represented here by `u', for
  604.                 the owner or user, `g', for the group, and `o', for others, followed by the
  605.                 corresponding permissions to be changed. A `+' or a `-' sign will add
  606.                 or remove the corresponding permissions flag. The following command, for
  607.                 example, sets permissions of the file linux.info to readable, writeable
  608.                 (changeable) and executable for group members:
  609.                     newbie@earth: > chmod g+rwx linux.info
  610.                 If permissions for all categories are to be set, it is sufficient just to specify
  611.                 the permissions to be changed. The following command sets permissions to
  612.                 linux.info so that nobody has write permissions:
  613.                     newbie@earth: > chmod -w linux.info
  614.                 The permissions concerning reading and executing are not affected.
  615.  
  616.                 You can give permissions and remove them within a single command line.
  617.                 The following command sets the permissions of linux.info to executable,
  618.                 not readable, and not writeable:
  619.                     newbie@earth: > chmod u+x-rw linux.info
  620.                 If you the look at the result of this, you will see:
  621.                     newbie@earth: > ls -l linux.info
  622.                        ---xr-xr--        1 newbie users 29524 Jun 29 13:11 linux.info
  623.  
  624.                 Two interesting commands related to chmod are chgrp (change group) and
  625.                 chown (change owner). See the respective manpages for more information
  626.                 on these commands.
  627.  
  628.                 19.9 Man Pages
  629.                 Information about commands, configuration files, and C-libraries can always
  630.                 be found by using the corresponding manual pages (more often referred to as
  631.                 "manpages"). See Table 19.5 on the facing page. Here, "keyword" is usually
  632.                 the command name or filename about which you need information.
  633.  
  634.  
  635.  
  636.  
  637.  
  638. 438
  639.  
  640.  
  641.  
  642.                                                                                   19.9. Man Pages
  643.  
  644.  
  645.   man <keyword>                            Invokes    the    manpage       for
  646.                                            <keyword>.
  647.   man -f <keyword>                         Searches for <keyword> and
  648.                                            lists the manpage found.
  649.  
  650.   man -k <keyword>                         Searches for <keyword> in all
  651.                                            manpage sections and lists the
  652.                                            manpages found (including other
  653.                                            manpages where it is relevant).
  654.  
  655.   man <section> <keyword> Invokes                     the    manpage       for
  656.                                            <keyword> from <section>
  657.                                            (e. g., man from section 1).
  658.  
  659.  
  660.                    Table 19.5: Using the man command
  661.  
  662.  
  663. If you are using the X Window System, you may find the program xman of
  664. some use, but man is much faster. The man command uses the tool less;
  665. see also Section 19.7.3 page 434 on how to use this. If you have SuSE help
  666. installed, all manpages are available here as well, and can be comfortably
  667. read using a web browser.
  668. In Table 19.6, you can see the how the manpages are divided into different
  669. sections.
  670.  
  671.  
  672.   1 Describes user commands. Some of these are built-in commands.
  673.   2 System calls of libraries.
  674.   3 C library functions.
  675.   4 Description of configuration files.
  676.   5 Syntax of important files.
  677.   6 Description of games.
  678.   7 Anything that covers text, text formats, etc.
  679.   8 System administration commands.
  680.   9 Description of Linux kernel routines.
  681.   n n is supposed to represent "new" programs. Here, other manpages
  682.       are listed that really belong to another section, but have been placed
  683.       here for reasons of convention, or because they don't quite belong in
  684.       one of the other sections.
  685.  
  686.  
  687.                        Table 19.6: Manpage sections
  688.  
  689.  
  690. Please note that there is not a manpage for every command. If you do not
  691. find the information you are looking for in the manpages, look in the sub-
  692.  
  693.                                                                                              439
  694.  
  695.  
  696.  
  697. 19. First Steps with Linux
  698.  
  699.                 directories of /usr/doc (for example, /usr/doc/howto, /usr/doc/
  700.                 howto/mini, or /usr/doc/packages).
  701.  
  702.                 19.10 System Information
  703.                 Sometimes it is necessary to gather information about the state of the system.
  704.                 The commands df, free, top, ps are useful for this purpose.
  705.  
  706.                 19.10.1 The df Command
  707.                 df outputs information on the hard disk space currently used. An example of
  708.                 the output is shown in Output 19.10.1.
  709.  
  710.  
  711.                    Filesystem 1024-blocks               Used Available Capacity Mounted on
  712.  
  713.                    /dev/sda4             699392 659258                 5165              99% /home
  714.                    /dev/sda1             102384       23955          73310               25% /
  715.                    /dev/sdb1            2097136 2070485              26651               99% /usr
  716.                    /dev/sda3             126976 106908               20068               84% /opt
  717.  
  718.                                Screen output 19.10.1: Output of the df command
  719.  
  720.  
  721.                 19.10.2 The free Command
  722.                 free gives information on RAM and swap usage.
  723.  
  724.  
  725.                                      total used free shared buffers cached
  726.                    Mem:              30900 29272 1628 25608                      1012     6412
  727.                    -/+ buffers:               28260 2640
  728.                    Swap:             66524       176 66348
  729.  
  730.                               Screen output 19.10.2: Output of the free command
  731.  
  732.  
  733.                 19.10.3 The Command ulimit
  734.                 With the ulimit (user limits) command it is possible to set limits for the
  735.                 use of system resources, and to have these displayed. ulimit is especially
  736.                 useful for limiting the  memory available for applications. Through this an
  737.                 application can be prevented from using up too much (all) memory on its
  738.                 own; this could bring the system to a standstill.
  739.                 ulimit can be used with various options. To limit memory usage, you can
  740.                 use the options listed in Table 19.7 on the facing page.
  741.  
  742.  
  743.                   -m        max. size of physical memory
  744.  
  745.  
  746.                                       Table 19.7: continued overleaf. . . ...
  747. 440
  748.  
  749.  
  750.  
  751.                                                                   19.10. System Information
  752.  
  753.  
  754.   -v     max. size of vitual memory (swap)
  755.   -s     max. size of the stack
  756.   -c     max. size of the core files
  757.   -a     display of limits set
  758.  
  759.  
  760.  
  761.             Table 19.7: ulimit: Setting resources for the user
  762.  
  763.  
  764. System-wide settings can be made in /etc/profile; there, creating core
  765. files must be enabled, which is needed by programmers for "debugging".
  766. A normal user cannot increase the values specified in /etc/profile by
  767. the  system administrator, but he can make special entries in his own  /
  768. .bashrc; see also File 19.10.1.
  769.  
  770.  
  771.   # Limits of physical memory:
  772.   ulimit -m 98304
  773.  
  774.   # Limits of virtual memory:
  775.   ulimit -v 98304
  776.  
  777.          File contents 19.10.1: ulimit: Settings in  /.bashrc
  778.  
  779. Details of memory must be specified in KB.
  780. For more detailed information take a look at manpage for bash (man bash).
  781.  
  782. 19.10.4 The w Command
  783. The command w shows all currently active users on your system. This com-
  784. mand outputs an informative list showing you all users, how long the system
  785. has been running, its load and what applications each user is currently using
  786. (cf. Output 19.10.3 on the following page).
  787.  
  788. 19.10.5 The du Command
  789. The command du (disk usage) provides information on the space used by
  790. subdirectories and individual files. Further information can be found in the
  791. manpage for du (man du).
  792.  
  793. 19.10.6 The kill Command
  794. sends signals to currently active processes ( process). It requires a process
  795. number (process ID, or PID) as an argument. This PID can be seen by using
  796. the command ps (see Section 19.10.7 on the next page). The kill command
  797. is invoked in the following way:
  798.    earth: # kill <pid>
  799.  
  800.                                                                                        441
  801.  
  802.  
  803.  
  804. 19. First Steps with Linux
  805.  
  806.  
  807.                    11:19pm up 9 days, 11:13, 13 users, load average: 3.26, 2.80, 2.67
  808.                    User       tty     from                login@ idle JCPU PCPU what
  809.                    root       tty2                        2:09pm 9:10                           -bash
  810.                    root       ttyp1 :0.0                  2:11pm           2      4        2 xdvi -s 3 Li
  811.                    root       ttypa :0.0                 11:19pm                                w
  812.                    root       tty1                        2:07pm 9:08            50            (startx)
  813.                    newbie ttyp0 earth.cosmos.com 11:37am              11              2    2 -bash
  814.                    root       ttyp3 :0.0                  3:24pm                  4            rlogin helios
  815.                    newbie ttyp2 earth.cosmos.com 3:22pm                    1     46        2 -bash
  816.                    root       ttyp4 :0.0                  3:27pm 1:48                 8        bash
  817.                    root       ttyp5 :0.0                  5:40pm           5      1        1 telnet earth
  818.                    newbie ttyp6 venus.cosmos.com 3:53pm               3          5         5 -bash
  819.                    root       ttyp7 :0.0                  4:25pm 6:05                           bash
  820.                    newbie ttyp8 helios.cosmos.com 9:37pm 1:30                         1        telnet earth
  821.                    newbie ttyp9 helios.cosmos.com 9:50pm 1:27                                  -bash
  822.  
  823.  
  824.                                Screen output 19.10.3: Output of the w command
  825.  
  826.                 If the corresponding process fails to catch the signal, it can be killed by giving
  827.                 the optional parameter -9. Entering:
  828.                     earth: # kill -9 <pid>
  829.                 will definitely kill the PID <pid>.
  830.  
  831.                 19.10.7 The ps Command
  832.                 ps (process status) shows the processes started by the user. More information
  833.                 on this command can be obtained in the manpage for ps (man ps). ps
  834.                 shows information on processes run by other users as well. Using the process
  835.                 ID (displayed by ps in the first column), it is possible to kill specific processes
  836.                 that are running (see Section 19.10.6 on the preceding page).
  837.  
  838.                 19.10.8 The pstree Command
  839.                 pstree illustrates the whole process tree graphically. This is shown in
  840.                 Output 19.10.4 on the next page.
  841.  
  842.                 19.10.9 The top Command
  843.                 This outputs all running processes and their loads, and much more besides.
  844.                                                                                    
  845.                 This list is updated periodically. You can stop it using  q  
  846.                                                                                  .
  847.  
  848.                 19.11 Filesystem Types in Linux ¡ mount and umount
  849.  
  850.                 19.11.1 Overview
  851.                 There are a a number of  filesystems available in Linux. These are shown in
  852.                 Table 19.8 page 444.
  853.  
  854.  
  855.  
  856.  
  857.  
  858. 442
  859.  
  860.  
  861.  
  862.                                    19.11. Filesystem Types in Linux ¡ mount and umount
  863.  
  864.  
  865. init-+-bash---startx---xinit-+-X
  866.         |                                 `-sh---fvwm-+-FvwmPager
  867.         |                                                      |-FvwmWinList
  868.         |                                                      |-GoodStuff
  869.         |                                                      |-xclock
  870.         |                                                      `-xeyes
  871.         |-color_xterm---bash---xdvi.bin---gs
  872.         |-2*[color_xterm---bash---vi]
  873.         |-color_xterm---bash---pstree
  874.         |-coolmail---coolmail---xterm---pine
  875.         |-cron
  876.         |-gpm
  877.         |-inetd
  878.         |-kflushd
  879.         |-klogd
  880.         |-kswapd
  881.         |-5*[mingetty]
  882.         |-4*[nfsiod]
  883.         |-sh---master---slipto
  884.         |-syslogd
  885.         |-update
  886.         |-xload
  887.         `-xosview
  888.  
  889.                  Screen output 19.10.4: Output of pstree
  890.  
  891.  
  892. affs         Fast Filesystem: a filesystem used on Amiga computers.
  893. ext          Extended Filesystem: ancestor of the ext2 filesystem and
  894.              without any significant meaning nowadays.
  895. ext2         Second extended Filesystem: standard Linux filesystem.
  896. hpfs         High Performance Filesystem: the IBM OS/2 standard
  897.              filesystem ¡ only supported in read-only mode.
  898. iso9660 Standard filesystem on CD-ROMs.
  899. minix        This filesystem originates from academic projects on oper-
  900.              ating systems and was the first filesystem used for Linux.
  901.              Nowadays it is used as a filesystem for floppy disks.
  902. msdos        The filesystem originally used DOS, used today by various
  903.              operating systems.
  904. ncpfs        Filesystem for mounting Novell volumes.
  905. nfs          Network Filesystem: Here, data can be stored on any ma-
  906.              chine in a network and access may be granted via a network.
  907. proc         Process filesystem (virtual).
  908. smb          Server Message Block: used by products such as WfW,
  909.              Windows NT and Lan Manager to enable files to be ac-
  910.              cessed over a network.
  911.  
  912.  
  913.                     Table 19.8: continued overleaf. . . ...
  914.  
  915.                                                                                   443
  916.  
  917.  
  918.  
  919. 19. First Steps with Linux
  920.  
  921.  
  922.                    sysv           Used on SCO UNIX, Xenix and Coherent (commercial
  923.                                   UNIX systems for PC's).
  924.                    ufs            Used by BSD, SunOS and NeXTstep. Only supported in
  925.                                   read-only mode.
  926.                    umsdos         UNIX on MSDOS: applied on top of a normal fat filesys-
  927.                                   tem. Achieves UNIX functionality (permissions, links, long
  928.                                   filenames) by creating special files. It is very slow, however.
  929.                    vfat           Virtual FAT: extension of the fat filesystem (supports long
  930.                                   filenames).
  931.                    xiafs          An old filesystem that is hardly used any more.
  932.  
  933.  
  934.  
  935.                                        Table 19.8: Filesystem types in Linux
  936.  
  937.  
  938.                 19.11.2 Mounting and Unmounting Filesystems
  939.                 By means of the command mount (which can only be invoked by `root'),
  940.                 a storage medium can be linked into the Linux filesystem tree. Two arguments
  941.                 are required by mount:
  942.                   * name of the storage medium (corresponds to the device's name, for ex-
  943.                      ample, /dev/hda3)
  944.                   * a location (directory) where it should be attached (mounted); the directory
  945.                      must already exist.
  946.                 Option -t <filesystem type> specifies the type of filesystem to be
  947.                 mounted (see Table 19.8).
  948.                 For example, entering:
  949.                      earth:/ # mount -t msdos /dev/hda2 /dosa
  950.                 makes the DOS partition /dev/hda2 available on /dosa; the directory
  951.                 /dosa must first be created (cf. Section 19.6 page 431). If specific devices
  952.                 often need to be attached to the filesystem at the same location, (e. g. the
  953.                 floppy disk drive or additional CD-ROM drives), we suggest you write an
  954.                 entry in /etc/fstab; see the manpage for mount (man 8 mount).
  955.                 Adding the -r option mounts it as read-only. Now, writing on this filesystem
  956.                 is not permitted. Further options are documented in the manpage for mount
  957.                 (man 8 mount).
  958.                 Invoking mount gives a list of the mounted partitions. This same list can
  959.                 also be seen in /etc/mtab. If mount is invoked without any argument,
  960.                 the contents of this list are displayed on the screen, showing all filesystems
  961.                 which are currently mounted.
  962.  
  963.                 umount
  964.                 umount removes a partition from the available filesystems.6
  965.                  6 This command used to be called unmount, but the `n' got lost somewhere in UNIX history.
  966.  
  967. 444
  968.  
  969.  
  970.  
  971.                                                     19.12. DOS Commands in Unix with mtools
  972.  
  973. As an argument to umount, you can specify either the name of the device or
  974. the name of the directory where it is mounted. So to remove /dev/hda2,
  975. which is mounted in /dosa, you can enter either:
  976.        earth: # umount /dosa
  977. or:
  978.        earth: # umount /dev/hda2
  979.  
  980.  If you have mounted a (floppy) disk, it is important to execute the com-
  981.  mand umount before you remove the disk, since not all files may have
  982.  been written to disk, thus resulting in a loss of data.
  983.  If there are files still open on this device, umount will try to write them
  984.  back to the disk first, if this is not possible there will be a corresponding
  985.  error message.
  986.  
  987.  If you want to "unmount" a filesystem, there should be no users working
  988.  (e. g., in a shell) in directories which lie beneath the mountpoint to be
  989.  unmounted; otherwise the filesystem cannot be unmounted.
  990.  
  991. 19.12 DOS Commands in Unix with mtools
  992. To use MS-DOS filesystems either on floppy disk or hard disk, mtools (in
  993. package mtools, series ap ) are available. Each one of these small programs
  994. tries to emulate the corresponding DOS command as well as the original.
  995. All mtools commands are named after their DOS equivalents, prefixed with
  996. an `m', for example, mcopy.
  997.  
  998.  You can only use mtools commands if the disk (or hard drive) is not
  999.  mounted!
  1000.  
  1001. DOS filenames are normally formed by a device letter followed by a colon,
  1002. a subdirectory, and the respective filename. To separate directories and files
  1003. on DOS, only the `\' is used. With mtools, you can use either the `/' or
  1004. the `\'. If you use `\' or  wildcards, they have to be put into quotation
  1005. marks, because otherwise they will be misinterpreted by the command line
  1006. interpreter (e. g., bash).
  1007. A single asterisk `*' in mtools corresponds to `*.*' in DOS. Instead of
  1008. using a `/' to specify parameters, you must use the `-' sign.
  1009. The standard device for mtools is `A:'. If a different one needs to be used,
  1010. you must change to it by typing mcd. Don't forget to go back to the "root"
  1011. directory of the device before you insert another floppy disk, otherwise no
  1012. new directory tree can be read.
  1013. The following (DOS) commands are currently supported by mtools:
  1014.  
  1015.  
  1016.   mattrib Change DOS file attributes (hidden, system, etc.).
  1017.  
  1018.  
  1019.                       Table 19.9: continued overleaf. . . ...
  1020.                                                                                        445
  1021.  
  1022.  
  1023.  
  1024. 19. First Steps with Linux
  1025.  
  1026.  
  1027.                   mcd           Change to another directory.
  1028.                   mcopy         Copy from DOS to UNIX. Always remember to specify the
  1029.                                 target.
  1030.                   mdel          Delete a DOS file.
  1031.                   mdir          List a DOS directory.
  1032.                   mformat Assign a DOS filesystem to a low-level formatted disk.
  1033.                                 (Low-level formatting is done via the command fdformat).
  1034.                   mlabel        Rename a DOS device.
  1035.                   mmd           Create a DOS subdirectory.
  1036.                   mrd           Delete a DOS subdirectory.
  1037.                   mread         Read (low-level) a DOS file into UNIX.
  1038.                   mren          Rename an existing DOS file.
  1039.                   mtype         Show contents of a DOS file.
  1040.                   mwrite        Low-level copy a UNIX file to a DOS filesystem.
  1041.  
  1042.  
  1043.                                 Table 19.9: commands in the package mtools
  1044.  
  1045.  
  1046.                 Disk formats that are supported are: 720 KB, 1.44 MB, or 360 KB, and
  1047.                 1.2 MB. Device A: is set to a 3.5" device, and device B: to 5.25".
  1048.                 These default settings can be changed in /etc/mtools. Each entry is
  1049.                 written in one line, as follows:
  1050.  
  1051.                   * name of the drive (in DOS), e. g., a:
  1052.                   * device file (Linux), e. g., /dev/fd0
  1053.                   * fat bits (12 for floppy disk drives)
  1054.                   * number of tracks, heads and sectors
  1055.  
  1056.                 By changing these parameters, you can use two 5.25" disk devices, for exam-
  1057.                 ple. You should not enter the same DOS device letter or device name twice,
  1058.                 however. See the manpage for mtools (man mtools) for more informa-
  1059.                 tion.
  1060.  
  1061.                 19.13 Summary of Commands in Unix
  1062.                 A summary of the most important commands (optional commands are given
  1063.                 in `[]' brackets):
  1064.  
  1065.  
  1066.                   cd directory                 changes to the subdirectory directory
  1067.                   cd ..                        changes to parent directory
  1068.                   cd /directory                changes to the directory /directory
  1069.                   cd                           changes to user's home directory
  1070.                   cp file from file to
  1071.  
  1072.  
  1073.                                       Table 19.10: continued overleaf. . . ...
  1074. 446
  1075.  
  1076.  
  1077.  
  1078.                                                    19.13. Summary of Commands in Unix
  1079.  
  1080.  
  1081.                         copies sourcefile to targetfile.
  1082. ln [-s] source linkname
  1083.                         creates the [symbolic link] linkname in the
  1084.                         current directory to source. linkname de-
  1085.                         fines the path where the file can be found.
  1086.                         name specifies the path where the file being
  1087.                         sought (a kernel, for example) can be found.
  1088.                         Only symbolic links can be created across dif-
  1089.                         ferent filesystems. Directories can be also be
  1090.                         linked via "symbolic links".
  1091. ls [directory]          lists contents of directory (brief)
  1092. ls -l [directory] lists contents of directory (detailed)
  1093. ls -a [directory] also lists hidden files (e. g., .xinitrc in
  1094.                         your home directory)
  1095. mkdir new directorycreates a newdirectory
  1096. more file               pages through a file (page down using
  1097.                                                        
  1098.                                    ,page up using  b  
  1099.                                                         )
  1100. mv file from file to
  1101.                         moves or renames a file
  1102. rm file                 deletes file
  1103. rm -r directory         recursively deletes directory.
  1104. rmdir directory         deletes directory (but only if it is empty)
  1105.  
  1106.  
  1107.    Table 19.10: Overview of the most important Linux commands
  1108.  
  1109.  
  1110.  
  1111.  
  1112. `find . -name' "file"             searches all subdirectories of the cur-
  1113.                                   rent directory for file.
  1114. `find . -name'                    searches for all files containing the
  1115. "*emil*"                          string `emil'.
  1116. `man command'                     gives you the manpage for
  1117.                                   command.
  1118. `grep string files'               searches all files for the given
  1119.                                   `string' which can contain
  1120.                                   "regular expressions" as well
  1121.                                   (see Section 19.7.2 page 433 or
  1122.                                   man regexp).
  1123.  
  1124.  
  1125.              Table 19.11: Overview of search commands
  1126.  
  1127.  
  1128.  
  1129.  
  1130.                                                                                  447
  1131.  
  1132.  
  1133.  
  1134. 19. First Steps with Linux
  1135.  
  1136.                 19.14 What Next?
  1137.                 The usual directories where most Linux programs are stored are:
  1138.                   * /bin
  1139.                   * /sbin
  1140.                   * /usr/bin
  1141.                   * /usr/sbin
  1142.                   * /usr/X11R6/bin
  1143.                 The command man <command> gives you detailed information about the
  1144.                 command entered (see Section 19.9 page 438) and programs (provided a man
  1145.                 page exists). Output is directed to standard output (which is normally your
  1146.                 screen).
  1147.                 By means of so-called pipes in the command line of the shell, symbolised by
  1148.                 the sign `|', this output can be re-directed to a printer, or if needed, a file.
  1149.                 For example, you want to print out the manpages for the command ls.
  1150.                 To do this, type:
  1151.                     newbie@earth: > man -t ls | lpr
  1152.                 Introductions to manpages, sorted by subject, can be found in the hypertext
  1153.                 help system of your SuSE Linux system. Just enter help. Here, other
  1154.                 hypertext links to manpages can also be found.
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180. 448
  1181.  
  1182.  
  1183.  
  1184.                                                                                19.15. The vi editor
  1185.  
  1186. 19.15 The vi editor
  1187. vi is preferred to other editors by system administrators because it is small
  1188. and fast, will run on any kind of terminal, yet is very powerful, efficient
  1189. and flexible. Its commands enable you to perform any editing task quickly
  1190. without having to leave the main keyboard. It is the one editor you will find
  1191. on every UNIX installation. vi comes as a standard in Linux.
  1192. For those trained on other editors, vi takes a little getting used to. This chapter
  1193. will enable you to do basic editing using vi. See [Lam90].
  1194. There are three modes available in vi:
  1195.  * Command mode. Every pressed key is interpreted as part of a command.
  1196.  * Input mode. Pressed keys are input as text.
  1197.  * ex mode. Enables vi to interact with the shell in very powerful and
  1198.     sophisticated ways. We will discuss only a few elementary commands.
  1199. vi starts in Command mode. You can change from Command to Input mode
  1200. by pressing one of the editing mode keys shown in Table 19.12 on the next
  1201.                                                                               
  1202. page. To change from Input mode back to Command mode, just press  Esc  .
  1203. The basic commands of Command mode are:
  1204.  
  1205.  
  1206.   `j'                    moves cursor down one line
  1207.   `k'                    moves cursor up one line
  1208.   `h'                    moves cursor left one column
  1209.   `l'                    moves cursor right one column
  1210.   `CTRL-f'               moves cursor down one screen
  1211.   `CTRL-b'               moves cursor up one screen
  1212.   `G'                    moves cursor to end of document
  1213.   `nG'                   moves cursor to line n
  1214.   `w'                    move cursor forward one word
  1215.   `b'                    move cursor back one word
  1216.   `0'                    move cursor to start of line
  1217.   `$'                    move cursor to end of line
  1218.   `i'                    changes to input mode (characters are inserted at
  1219.                          the current cursor position)
  1220.   `a'                    changes to input mode (characters are inserted after
  1221.                          the current cursor position)
  1222.   `A'                    changes to input mode (characters are appended at
  1223.                          the end of the current line)
  1224.   `R'                    changes to input mode (replaces and overwrites old
  1225.                          text)
  1226.   `r'                    changes to input mode (overwrites the one character
  1227.                          currently under the cursor
  1228.   `C'                    changes to input mode (rest of line is replaced by
  1229.                          the new text)
  1230.  
  1231.  
  1232.                      Table 19.12: continued overleaf. . . ...
  1233.  
  1234.                                                                                                449
  1235.  
  1236.  
  1237.  
  1238. 19. First Steps with Linux
  1239.  
  1240.  
  1241.                   `o'                  changes to input mode (after the current line a new
  1242.                                        line is added for text insertion)
  1243.                   `O'                  changes to input mode (before the current line a new
  1244.                                        line is added for text insertion)
  1245.                   `x'                  deletes the current character (and puts in buffer)
  1246.                   `dd'                 deletes the current line (and puts in buffer)
  1247.                   `dw'                 deletes to the end of the current word (and puts in
  1248.                                        buffer)
  1249.                   `cw'                 changes to input mode (rest of the current word is
  1250.                                        overwritten by the input)
  1251.                   `yy'                 copy current line into buffer
  1252.                   `p'                  paste text in buffer after cursor position
  1253.                   `P'                  paste text in buffer before cursor position
  1254.                   `u'                  undoes the last command
  1255.                   `J'                  appends following line to current line
  1256.                   `.'                  repeats the last command
  1257.                   `:'                  changes to ex mode
  1258.  
  1259.  
  1260.                                     Table 19.12: Basic commands of vi
  1261.  
  1262.  
  1263.                 All commands can be preceded by a number. This number sets how many
  1264.                 times the given command should be executed. Thus, entering `3dw' deletes
  1265.                 three words at once and `10x' deletes 10 characters. `20dd' deletes 20
  1266.                 lines.
  1267.                 The most important commands in ex mode are:
  1268.  
  1269.  
  1270.                   `:q!'                      quits vi without saving changes
  1271.                   `:w [file]'                saves in [file]
  1272.                   `:x'                       saves changed file and quits
  1273.                   `:e [file]'                edits [file]
  1274.  
  1275.  
  1276.                               Table 19.13: Elementary ex mode commands of vi
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288. 450
  1289.  
  1290.  
  1291.  
  1292.