当前位置:Linux教程 - Linux - linux入门

linux入门



        

    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有命令及文本输入模式,通过按来切换。

      (1)在命令模式下:

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

      (二)在文本输入模式下,主要进行文本的输入。+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创建进程等。




    发布人:netbull 来自:20cn网络安全小组