diff options
Diffstat (limited to 'en_US.ISO8859-1/books/handbook/basics/chapter.sgml')
-rw-r--r-- | en_US.ISO8859-1/books/handbook/basics/chapter.sgml | 543 |
1 files changed, 0 insertions, 543 deletions
diff --git a/en_US.ISO8859-1/books/handbook/basics/chapter.sgml b/en_US.ISO8859-1/books/handbook/basics/chapter.sgml deleted file mode 100644 index a2632f6562..0000000000 --- a/en_US.ISO8859-1/books/handbook/basics/chapter.sgml +++ /dev/null @@ -1,543 +0,0 @@ -<!-- - The FreeBSD Documentation Project - - $FreeBSD: doc/en_US.ISO_8859-1/books/handbook/basics/chapter.sgml,v 1.23 2000/12/15 21:52:34 jim Exp $ ---> - -<chapter id="basics"> - <title>Unix Basics</title> - - <sect1> - <title>Synopsis</title> - - <para><emphasis>Rewritten by Chris Shumway - <email>cshumway@osd.bsdi.com</email>, 10 Mar 2000.</emphasis></para> - - <para>The following chapter will cover the basic commands and - functionality of the FreeBSD operating system. If you are new to - FreeBSD, you will definitely want to read through this chapter before - asking for help.</para> - </sect1> - - <sect1 id="permissions"> - <title>Permissions</title> - - <para>FreeBSD, having its history rooted in BSD UNIX, has its - fundamentals based on several key UNIX concepts. The first, and - most pronounced, is that FreeBSD is a multi-user operating system. - The system can handle several users all working simultaneously on - completely unrelated tasks. The system is responsible for properly - sharing and managing requests for hardware devices, peripherals, - memory, and CPU time evenly to each user.</para> - - <para>Because the system is capable of supporting multiple users, - everything the system manages has a set of permissions governing who - can read, write, and execute the resource. These permissions are - stored as an octet broken into three pieces, one for the owner of - the file, one for the group that the file belongs to, and one for - everyone else. This numerical representation works like - this:</para> - - <informaltable frame="none"> - <tgroup cols="3"> - <thead> - <row> - <entry>Value</entry> - <entry>Permission</entry> - <entry>Directory Listing</entry> - </row> - </thead> - - <tbody> - <row> - <entry>0</entry> - <entry>No read, no write, no execute</entry> - <entry><literal>---</literal></entry> - </row> - - <row> - <entry>1</entry> - <entry>No read, no write, execute</entry> - <entry><literal>--x</literal></entry> - </row> - - <row> - <entry>2</entry> - <entry>No read, write, no execute</entry> - <entry><literal>-w-</literal></entry> - </row> - - <row> - <entry>3</entry> - <entry>No read, write, execute</entry> - <entry><literal>-wx</literal></entry> - </row> - - <row> - <entry>4</entry> - <entry>Read, no write, no execute</entry> - <entry><literal>r--</literal></entry> - </row> - - <row> - <entry>5</entry> - <entry>Read, no write, execute</entry> - <entry><literal>r-x</literal></entry> - </row> - - <row> - <entry>6</entry> - <entry>Read, write, no execute</entry> - <entry><literal>rw-</literal></entry> - </row> - - <row> - <entry>7</entry> - <entry>Read, write, execute</entry> - <entry><literal>rwx</literal></entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>For the long directory listing by <command>ls -l</command>, a - column will show a file's permissions for the owner, group, and - everyone else. Here's how it is broken up:</para> - - <screen>-rw-r--r--</screen> - - <para>The first character, from left to right, is a special character - that tells if this is a regular file, a directory, a special - character or block device, a socket, or any other special - pseudo-file device. The next three characters, designated as - <literal>rw-</literal> gives the permissions for the owner of the - file. The next three characters, <literal>r--</literal> gives the - permissions for the group that the file belongs to. The final three - characters, <literal>r--</literal>, gives the permissions for the - rest of the world. A dash means that the permission is turned off. - In the case of this file, the permissions are set so the owner can - read and write to the file, the group can read the file, and the - rest of the world can only read the file. According to the table - above, the permissions for this file would be - <literal>644</literal>, where each digit represents the three parts - of the file's permission.</para> - - <para>This is all well and good, but how does the system control - permissions on devices? FreeBSD actually treats most hardware - devices as a file that programs can open, read, and write data to - just like any other file. These special device files are stored on - the <filename>/dev</filename> directory.</para> - - <para>Directories are also treated as files. They have read, write, - and execute permissions. The executable bit for a directory has a - slightly different meaning than that of files. When a directory is - marked executable, it means it can be searched into, for example, a - directory listing can be done in that directory.</para> - - <para>There are more to permissions, but they are primarily used in - special circumstances such as setuid binaries and sticky - directories. If you want more information on file permissions and - how to set them, be sure to look at the &man.chmod.1; man - page.</para> - </sect1> - - <sect1 id="dirstructure"> - <title>Directory Structures</title> - - <para>Since FreeBSD uses its file systems to determine many - fundamental system operations, the hierarchy of the file system is - extremely important. Due to the fact that the &man.hier.7; man page - provides a complete description of the directory structure, it will - not be duplicated here. Please read &man.hier.7; for more - information.</para> - - <para>Of significant importance is the root of all directories, the / - directory. This directory is the first directory mounted at boot - time and it contains the base system necessary at boot time. The - root directory also contains mount points for every other file - system that you want to mount.</para> - - <para>A mount point is a directory where additional file systems can - be grafted onto the root file system. Standard mount points include - <filename>/usr</filename>, <filename>/var</filename>, - <filename>/mnt</filename>, and <filename>/cdrom</filename>. These - directories are usually referenced to entries in the file - <filename>/etc/fstab</filename>. <filename>/etc/fstab</filename> is - a table of various file systems and mount points for reference by the - system. Most of the file systems in <filename>/etc/fstab</filename> - are mounted automatically at boot time from the script &man.rc.8; - unless they contain the <option>noauto</option> option. Consult the - &man.fstab.5; manual page for more information on the format of the - <filename>/etc/fstab</filename> file and the options it - contains.</para> - </sect1> - - <sect1 id="shells"> - <title>Shells</title> - - <para>In FreeBSD, a lot of everyday work is done in a command line - interface called a shell. A shell's main job is to take commands - from the input channel and execute them. A lot of shells also have - built in functions to help everyday tasks such a file management, - file globing, command line editing, command macros, and environment - variables. FreeBSD comes with a set of shells, such as sh, the - Bourne Shell, and csh, the C-shell. Many other shells are available - from the FreeBSD Ports Collection that have much more power, such as - tcsh and bash.</para> - - <para>Which shell do you use? It is really a matter of taste. If you - are a C programmer you might feel more comfortable with a C-like shell - such as tcsh. If you've come from Linux or are new to a UNIX - command line interface you might try bash. The point is that each - shell has unique properties that may or may not work with your - preferred working environment, and that you have a choice of what - shell to use.</para> - - <para>One common feature in a shell is file-name completion. Given - the typing of the first few letters of a command or filename, you - can usually have the shell automatically complete the rest of the - command or filename by hitting the TAB key on the keyboard. Here is - an example. Suppose you have two files called - <filename>foobar</filename> and <filename>foo.bar</filename>. You - want to delete <filename>foo.bar</filename>. So what you would type - on the keyboard is: <command>rm fo[TAB].[TAB]</command>.</para> - - <para>The shell would print out <command>rm - foo[BEEP].bar</command>.</para> - - <para>The [BEEP] is the console bell, which is the shell telling me it - was unable to totally complete the filename because there is more - than one match. Both <filename>foobar</filename> and - <filename>foo.bar</filename> start with <literal>fo</literal>, but - it was able to complete to <literal>foo</literal>. If you type in - <literal>.</literal>, then hit TAB again, the shell would be able to - fill in the rest of the filename for you.</para> - - <para>Another function of the shell is environment variables. - Environment variables are a variable key pair stored in the shell's - environment space. This space can be read by any program invoked by - the shell, and thus contains a lot of program configuration. Here - is a list of common environment variables and what they mean:</para> - - <informaltable frame="none"> - <tgroup cols="2"> - <thead> - <row> - <entry>Variable</entry> - <entry>Description</entry> - </row> - </thead> - - <tbody> - <row> - <entry><envar>USER</envar></entry> - <entry>Current logged in user's name.</entry> - </row> - - <row> - <entry><envar>PATH</envar></entry> - <entry>Colon separated list of directories to search for - binaries.</entry> - </row> - - <row> - <entry><envar>DISPLAY</envar></entry> - <entry>Network name of the X11 display to connect to, if - available.</entry> - </row> - - <row> - <entry><envar>SHELL</envar></entry> - <entry>The current shell.</entry> - </row> - - <row> - <entry><envar>TERM</envar></entry> - <entry>The name of the user's terminal. Used to determine the - capabilities of the terminal.</entry> - </row> - - <row> - <entry><envar>TERMCAP</envar></entry> - <entry>Database entry of the terminal escape codes to perform - various terminal functions.</entry> - </row> - - <row> - <entry><envar>OSTYPE</envar></entry> - <entry>Type of operating system. E.g., FreeBSD.</entry> - </row> - - <row> - <entry><envar>MACHTYPE</envar></entry> - <entry>The CPU architecture that the system is running - on.</entry> - </row> - - <row> - <entry><envar>EDITOR</envar></entry> - <entry>The user's preferred text editor.</entry> - </row> - - <row> - <entry><envar>PAGER</envar></entry> - <entry>The user's preferred text pager.</entry> - </row> - - <row> - <entry><envar>MANPATH</envar></entry> - <entry>Colon separated list of directories to search for - manual pages.</entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>To view or set an environment variable differs somewhat from - shell to shell. For example, in the C-Style shells such as tcsh - and csh, you would use <command>setenv</command> to set and view - environment variables. Under Bourne shells such as sh and bash, you - would use <command>set</command> and <command>export</command> to - view and set your current environment variables. For example, to - set or modify the <envar>EDITOR</envar> environment variable, under - csh or tcsh a command like this would set <envar>EDITOR</envar> to - <filename>/usr/local/bin/emacs</filename>:</para> - - <screen>&prompt.user; <userinput>setenv EDITOR /usr/local/bin/emacs</userinput></screen> - - <para>Under Bourne shells:</para> - - <screen>&prompt.user; <userinput>export EDITOR="/usr/local/bin/emacs"</userinput></screen> - - <para>You can also make most shells expand the environment variable by - placing a <literal>$</literal> character in front of it on the - command line. For example, <command>echo $TERM</command> would - print out whatever <envar>$TERM</envar> is set to, because the shell - expands <envar>$TERM</envar> and passes it on to echo.</para> - - <para>Shells treat a lot of special characters, called meta-characters - as special representations of data. The most common one is the - <literal>*</literal> character, which represents any number of - characters in a filename. These special meta-characters can be used - to do file name globing. For example, typing in - <command>echo *</command> is almost the same as typing in - <command>ls</command> because the shell takes all the files that - match <command>*</command> and puts them on the command line for - echo to see.</para> - - <para>To prevent the shell from interpreting these special characters, - they can be escaped from the shell by putting a backslash - (<literal>\</literal>) character in front of them. <command>echo - $TERM</command> prints whatever your terminal is set to. - <command>echo \$TERM</command> prints <envar>$TERM</envar> as - is.</para> - - <sect2 id="changing-shells"> - <title>Changing your shell</title> - - <para>The easiest way to change your shell is to use the - <command>chsh</command> command. Running <command>chsh</command> will - place you into the editor that is in your <envar>EDITOR</envar> - environment variable; if it is not set, you will be placed in - <command>vi</command>. Change the <quote>Shell:</quote> line - accordingly.</para> - - <para>You can also give <command>chsh</command> the - <option>-s</option> option; this will set your shell for you, - without requiring you to enter an editor. - For example, if you wanted to - change your shell to bash, the following should do the - trick:</para> - - <screen>&prompt.user; <userinput>chsh -s /usr/local/bin/bash</userinput></screen> - - <para>Running <command>chsh</command> with no parameters and editing - the shell from there would work also.</para> - - <note> - <para>The shell that you wish to use <emphasis>must</emphasis> be - present in the <filename>/etc/shells</filename> file. If you - have installed a shell from the <link linkend="ports">ports - collection</link>, then this should have been done for you - already. If you installed the shell by hand, you must do - this.</para> - - <para>For example, if you installed <command>bash</command> by hand - and placed it into <filename>/usr/local/bin</filename>, you would - want to:</para> - - <screen>&prompt.root; <userinput>echo "/usr/local/bin/bash" >> /etc/shells</userinput></screen> - - <para>Then rerun <command>chsh</command>.</para> - </note> - </sect2> - </sect1> - - <sect1 id="editors"> - <title>Text Editors</title> - - <para>A lot of configuration in FreeBSD is done by editing a text - file. Because of this, it would be a good idea to become familiar - with a text editor. FreeBSD comes with a few as part of the base - system, and many more are available in the ports collection.</para> - - <para>The easiest and simplest editor to learn is an editor called - <application>ee</application>, which stands for easy editor. To - start <application>ee</application>, one would type at the command - line <command>ee filename</command> where - <literal>filename</literal> is the name of the file to be edited. - For example, to edit <filename>/etc/rc.conf</filename>, type in - <command>ee /etc/rc.conf</command>. Once inside of ee, all of the - commands for manipulating the editor's functions are listed at the - top of the display. The caret <literal>^</literal> character means - the control key on the keyboard, so ^e expands to pressing the - control key plus the letter <literal>e</literal>. To leave - <application>ee</application>, hit the escape key, then choose leave - editor. The editor will prompt you to save any changes if the file - has been modified.</para> - - <para>FreeBSD also comes with more powerful text editors such as - <application>vi</application> as part of the base system, and - <application>emacs</application> and <application>vim</application> - as part of the FreeBSD ports collection. These editors offer much - more functionality and power at the expense of being a little more - complicated to learn. However if you plan on doing a lot of text - editing, learning a more powerful editor such as - <application>vim</application> or <application>emacs</application> - will save you much more time in the long run.</para> - </sect1> - - <sect1> - <title>For More Information...</title> - - <sect2 id="basics-man"> - <title>Manual pages</title> - - <para>The most comprehensive documentation on FreeBSD is in the form - of man pages. Nearly every program on the system comes with a - short reference manual explaining the basic operation and various - arguments. These manuals can be viewed with the man command. Use - of the man command is simple:</para> - - <screen>&prompt.user; <userinput>man <replaceable>command</replaceable></userinput></screen> - - <para><literal>command</literal> is the name of the command you - wish to learn about. For example, to learn more about - <command>ls</command> command type:</para> - - <screen>&prompt.user; <userinput>man ls</userinput></screen> - - <para>The online manual is divided up into numbered sections:</para> - - <orderedlist> - <listitem> - <para>User commands.</para> - </listitem> - - <listitem> - <para>System calls and error numbers.</para> - </listitem> - - <listitem> - <para>Functions in the C libraries.</para> - </listitem> - - <listitem> - <para>Device drivers.</para> - </listitem> - - <listitem> - <para>File formats.</para> - </listitem> - - <listitem> - <para>Games and other diversions.</para> - </listitem> - - <listitem> - <para>Miscellaneous information.</para> - </listitem> - - <listitem> - <para>System maintenance and operation commands.</para> - </listitem> - - <listitem> - <para>Kernel developers.</para> - </listitem> - </orderedlist> - - <para>In some cases, the same topic may appear in more than one - section of the online manual. For example, there is a chmod user - command and a <literal>chmod()</literal> system call. In this - case, you can tell the man command which one you want by - specifying the section:</para> - - <screen>&prompt.user; <userinput>man 1 chmod</userinput></screen> - - <para>This will display the manual page for the user command - <command>chmod</command>. References to a particular section of - the online manual are traditionally placed in parenthesis in - written documentation, so &man.chmod.1; refers to the - <command>chmod</command> user command and &man.chmod.2; refers to - the system call.</para> - - <para>This is fine if you know the name of the command and simply - wish to know how to use it, but what if you cannot recall the - command name? You can use man to search for keywords in the - command descriptions by using the <option>-k</option> - switch:</para> - - <screen>&prompt.user; <userinput>man -k mail</userinput></screen> - - <para>With this command you will be presented with a list of - commands that have the keyword <quote>mail</quote> in their - descriptions. This is actually functionally equivalent to using - the apropos command.</para> - - <para>So, you are looking at all those fancy commands in - <filename>/usr/bin</filename> but do not have the faintest idea - what most of them actually do? Simply do:</para> - - <screen>&prompt.user; <userinput>cd /usr/bin</userinput> -&prompt.user; <userinput>man -f *</userinput></screen> - - <para>or</para> - - <screen>&prompt.user; <userinput>cd /usr/bin</userinput> -&prompt.user; <userinput>whatis *</userinput></screen> - - <para>which does the same thing.</para> - </sect2> - - <sect2 id="basics-info"> - <title>GNU Info Files</title> - - <para>FreeBSD includes many applications and utilities produced by - the Free Software Foundation (FSF). In addition to man pages, - these programs come with more extensive hypertext documents called - <literal>info</literal> files which can be viewed with the - <command>info</command> command or, if you installed - <application>emacs</application>, the info mode of - <application>emacs</application>.</para> - - <para>To use the &man.info.1; command, simply type:</para> - - <screen>&prompt.user; <userinput>info</userinput></screen> - - <para>For a brief introduction, type <literal>h</literal>. For a - quick command reference, type <literal>?</literal>.</para> - </sect2> - </sect1> -</chapter> -<!-- - Local Variables: - mode: sgml - sgml-declaration: "../chapter.decl" - sgml-indent-data: t - sgml-omittag: nil - sgml-always-quote-attributes: t - sgml-parent-document: ("../book.sgml" "part" "chapter") - End: ---> - |