linux入门

/ns/wz/sys/data/20010610032227.htm

1. Linux系统特征

  Linux系统有文本编辑界面和图形用户界面(GUI)。其特征包括:多用户、多任务、多平台、可编程SHELL、提供源代码、仿真终端、支持多种文件系统及强大的网络功能等。

  多用户:多个用户(六个)能同时从相同或不同的终端(终端号:tty1~tty6)上用同一个应用程序的副本进行工作。在控制台,切换终端的命令是:ALT+F1~F6;在仿真终端窗口(ps/0~n)是:SHIFT+ALT+F1~F6。

  多任务:可同时执行多个程序,程序之间互不妨碍。与WINDOWS的多任务不同,Linux将系统没有用到的剩余物理内存全部用来做硬盘的高速缓存。笔者曾经打开三个xterm,分别用于查找文件、调试程序、发邮件。而且还可以指定某一个程序在后台运行,指定某一些程序在特定的时间内运行(at命令)。

  多平台:Linux能在X86平台上运行,也能移植到其他平台。

  可编程SHELL:SHELL是解释并执行命令的系统外壳程序。通过编写SHELL程序,使得系统更加个性化;而且在一些程序中具有C语言的功能。

  提供源代码:Linux是自由软件,源代码完全公开,可以自行编译内核,修改和扩充操作系统,进行二次开发。

  Linux支持的文件系统很多,例如:EXT2、NFS、VFS、ISO9660、MSDOS等等。

  网络功能:较全面的实现了TCP/IP、SLIP、PPP、PLIP协议,功能强大。
  
  2. Linux与其它系统比较

  Linux可以和PC机上的其他操作系统共存,但还是有差别的。

  Linux与MSDOS

  DOS在PC机上普及最广,价格低。Linux是免费软件,不用考虑价格。Linux有些命令与M S- DOS相同或相似,如cp----copy、cd(..)---cd(..)、telnet---telnet等;要在Linux下用DOS命令,要在命令前加m;Linux还可以充分发挥微处理器的功能,其多用户、多任务、网络等功能是MSDOS所不能比的。常见的是,LI N U X和DOS装在同机器上。
  
  Linux与WINDOWS

  两者都是多任务的操作系统,都支持同样的用户接口、网络和安全性。但是,WINDOWS是专用系统,由开发的公司控制接口和设计,并建立了严格的标准,而且购买的价格高。而Linux是自由软件,其开发采用开放和协作的模式,因而有利于充分程序人员的集体智慧,大量减少不必要的重复劳动,并使得自由软件的弱点能及时发现和得到克服,具有强大的生命力。Linux正在竞争UNIX和WINDOWS NT的市场份额。它是目前唯一可以与MICROSOFT WINDOWS抗衡的操作系统;盖茨也承认Linux是微软的竞争对手。

  Linux与UNIX

  实质上,Linux是UNIX的一种版本。UNIX支持的硬件要多一些,Linux支持的硬件也在不断扩大。很突出的一点是,Linux至少和商用UNIX一样稳定。对于许多用户来说,最重要的因素是价格;显然,在这一点上Linux要占优势。Linux使得用户在PC机上运行完整的UNIX。所以,Linux为笔者们学习UNIX提供了廉价的机会。
  
  3. Linux的缺点

  使用Linux的最大缺点是没有一个实体对它的发展负责。Linux的开发人员分散在世界各地,他们可以随意发表自己的程序,没有正式的质量保证程序。

 (1)由于分散性的开发,Linux缺乏技术支持,笔者就常遇到很多问题,根本不懂如何解决,查资料又找不到----这就是笔者多次安装的主要原因。

 (2)并不能安装和运行在所有硬件平台上。Linux所支持的硬件取决于每个开发者编写代码时所用的硬件。

 (3)一些应用软件,尤其是for WINDOWS、DOS的,不能在Linux上使用。目前解决的办法是,与其它操作系统共存于一台机器上。

 (4)另外,笔者感觉安装软件还不够智能,有时需要重新编译内核,还要修改Makefile等文件,费时费力,还常常安装不上----可能是没有优化、配置好内核。


在这里,配置的对象并非内核,而是软件。至于网络的配置,主要在安装系统是已经基本完成;也可以进入GUI界面从菜单选择liloconf来配置。

  与WINDOWS一样,在Linux系统可以从光盘、软盘安装应用软件;但不同的是,它需要用命令mount来登录光驱、软驱。而且,软件大多是经过压缩的,所以还需要懂得如何解压。最后必须配置、编译才能运行。下面分四个方面进行介绍:

  一、mount登录

  Linux的软驱设备用特殊文件/dev/fd0,文件系统是msdos,因此用以下命令登录,读取软盘内容:

  # mount -t msdos /dev/fd0 /mnt/floppy
  # cd /mnt/floppy
  同理,键入以下命令读光盘:
  # mount -t iso9660 /dev/hdb /mnt/cdrom
  # cd /mnt/cdrom
  然后,用cp命令将所需的软件拷贝到系统中。
  退出软驱、光驱用umount命令。注意,不能在其目录中使用此命令,而应先cd到其他目录,再使用:umount /mnt/cdrom。
  
  二、安装软件

  for Linux的软件一般是以.gz或.tar或者.tar.gz结尾的。前者是由gzip压缩的,后者是先用tar归档,在用gzip压缩而成的。

  1、以.gz结尾的为压缩文件,用命令:gzip -d filename来解压,得到的文件在当前目录中,但已没有了.gz。

  2、以.tar结尾的为归档文件,用命令:tar -xvf filename来展开,生成的文件与源文件在同一目录中,只是少了.tar。

  3、以.tar.gz结尾的文件最常见,可直接用命令:gzip -cd filename | tar xfv -来安装。

  一般情况下,这类文件的第一项是一个目录,所以用上面的命令时会创建出这一个目录,并把所有的文件都存在此目录之下。如果是特殊情况,可先用命令:tar -tvf filename | more 来查看文件的第一项。倘若它并不是目录,则先创建一个目录,把文件放在此目录之下,在用命令:tar -xvf filename来安装。

  经过以上步骤,会生成README及INSTALL等文件。用vi来仔细阅读这些文件造处于Linux有关的部分,更具体是进行配置。一般的步骤是:(1)./config,(2)make install,(3)make。主要的变化在第一步,其后面需要参数,可见入命令来选择:./config --help。
  
  三、举例配置apache(阿帕其服务器)、php3两个软件

  先从网上下载for Linux的软件apache.tar.gz、php3.tar.gz。

  1、由于apache.tar.gz大于1.44M,所以笔者在center_5的MSDOS上用telnet命令登录Linux,通过put将其上传。

  2、笔者将这两个软件放在/usr/src目录之下,用命令gzip -cd apache.tar.gz(php3.tar.gz)| tar xfv -来安装。这样会看到两个目录:apache_1.3.6和php-3.0.7。

  3、在第一个目录之下,会看到非常重要的文件:README、INSTALL。如果此时是在GUI界面,则可以打开两个xterm,一个用于仔细阅读,一个则用于根据文件的提示进行配置。

  4、在第二个目录中,也会很快的找到文件:INSTALL、INSTALL.DSO、README.QNX。步骤与3相似。由于这两个文件相互关联,必须先配置前者。

  5、配置完后,进入/apache_1.3.6/conf/httpd.conf。在文件里面,理解其注释,删除或增加一些选项前的"#"。保存文件后,执行命令/usr/src/apache_1.3.6/bin/apachectl start,即打开http,然后可以在Netscape Communication来浏览网页。


  一. 文件系统

  LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。

  普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。

  目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。

  连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"-〉"指向所连接的文件。

  特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/had来自第一硬盘。

  LINUX的文件有不同的权限,用ls -l [filename]来列出。例如:

  $ ls -l aa?
  $ lrwxr-x--x 1 aa 460 Dec 3 14:35 aa ->aa.c

  二. 目录系统

  LINUX的目录系统可以点击X-WINDOWS菜单的File Manager窗口中看到。其目录结构如下:

  /
  /bin
  /dev
  /home
  /
  /etc
  /passwd
  /rc.d
  /mnt
  /root
  /sbin
  /tmp
  /usr
  /var

  一些常用的目录是:
  /etc--包括大多数引导系统或激活系统所需的系统专用熟据,如:host.conf、httpd等。
  /lib--包含c编译程序需要的函数库,是二进制文件,如:cpp。
  /usr--包括所有其他内容,如:src,local。LINUX的内核就在/usr/src中。其下有子目录/bin,存放有所安装的语言的命令,如:javac,java,gcc,perl等。
  /var--包含系统定义表、以便在系统运行改变是可以只备份该目录,如cache。
  /tmp--用于临时性的存储。
  /bin--大多数命令存放在这里。
  /home--主要存放用户账号;另外还有ftp。
  系统管理员增加用户时,系统会在这里自动增加与用户同名的目录,此目录下一般默认有Desktop目录。
  /dev--包含称为设备文件的特殊文件,如fd0、had等。
  /mnt--在LINUX中系统中,它是专门给外挂的文件系统使用的,里面有两个文件:cdrom,floopy,登录光驱、软驱时要用到。


一. 文本编辑

  LINUX系统标准的文本编辑程序是vi,它提供了编写命令、程序的环境。可见,vi与编程息息相关,因此很有必要在此次先介绍vi的运用。

  vi有命令及文本输入模式,通过按<Esc>来切换。

  (1)在命令模式下:

  i--在光标前添加文本,与按<Insert>相同;
  a--在光标后添加文本;
  r--替换文本,与按两次<Insert>相同;
  x--删除光标处初的字符;
  :u--取消最后一次操作;
  :wq/:x/:ZZ--保存文本退出;
  :q!--防弃修改退出;
  :w--将缓冲区写入文件;
  :w filename--将缓冲区写入filename(相当于另存为:filename);
  :w!Filename2--强迫vi重写名为filename2的文件;j--移动光标到下一行当前位置,与k相反;
  h--将光标左移至下一字符,与l相反;
  dd--删除一行,<n>dd删除n行;
  dw--删除一个词,<n>dw删除n个词;
  o--在当前行下添加一行,与O相反;^--行首;$--行尾;:%d--全部删除文件内容;
  /string:--在缓冲区向前查找字符串string,与?String相反。按<n>表示继续查找下一个;
  set number--显示行号,便于查找错误;

  (二)在文本输入模式下,主要进行文本的输入。<Alt>+x可删除光标前的一个字符;还可以通过鼠标进行快捷的拷贝。

  LINUX的文本编辑环境还有emacs、ex等,与vi相似。
  
  二. SHELL编程

  bash shell有一组可以从键盘使用的强有力的交互功能:输入/输出重定向,作业控制,历史命令表以及命令行编辑。另外,shell还提供完整的程序语言节是程序及读取和执行用户自己编写的shell的手段。这些shell程序成为shell script。编写shell程序,能配置自己的登录环境,进行交互输入,编辑和别名shell命令,控制流程等。

  由于笔者对LINUX操作系统的学习还不够,所以暂时不能进行深层次的编程,只是了解SHELL的语法结构:if命令,test命令,while命令,for循环,until命令,case选择。况且,笔者的学习目的并不在于此,因而没有花太多的时间,而是应能熟练的运用SHELL命令。
  
  三. 高级语言编程

  在LINUX上编写以上程序用到glibc/c++,jdk。步骤如下:

  1 # vi xxx.c(/cpp/.java)进入vi编辑界面进行编辑。

  2 编译过程
  (1)对于C程序:# cc -o exe-filename(可执行文件名)xxx.c
  # ./exe-filename
  (2)对于C++程序:# c++ -o exe-filename xxx.cpp
  # ./exe-filename
  (3)对于JAVA程序:# javac xxx.java
  # java xxx
  可以用gdb来调试程序:gdb exe-filename。其命令通过help来查看。
  此外,进行系统程序设计时,使用C语言并调用内部函数,例如用fork创建进程等。