LINUX的安装
   由于Linux发行版本的公司太多了,有名的RedHat,Mandriva,Debian,SuSE等。
   Linux安装可以从光盘启动也可以从网络启动(PXE服务器)。
Linux有四种形式的虚拟网络,他们分别是:桥接(Bridge),仅主机(Host-only),NAT,和自定义等四种形式。
当你在VMware中安装完成Linux后,在你的物理机的网上邻居中会有两个虚拟网卡。在通常情况下,VMware1是被定义为仅主机,仅主机指虚拟机通过VMware1与物理机进行连接,物理机还有一个物理网卡。外网通过此网卡和物理机进行通信,但是此虚拟机是不能够和物理机及以外的网络进行通信的;VMware8则被定义为NAT,NAT和仅主机类似,只是在VMware1和物理网卡间做了NAT转换,此时虚拟机就能和外网进行通信;桥接(Bridge)是虚拟机直接与物理机的网卡进行连接的,所以这种形式能够和物理机,外网进行通信。最后一种是自定义模式,这种形式是虚拟机之间进行通信的,通常这种通信方式称为虚拟通道。
下面我们就可以在虚拟机上安装Linux了,详细步骤我们不做过多介绍。
当系统已经安装完毕后,登录系统后有两种不同的用户界面:X Windows和命令行模式。 
切换X Window与命令行模式
* [ctrl]+[alt]+[F1]-[F6]:命令行登入tty1~tty6终端。
* [ctrl]+[alt]+[F7]:图形化界面桌面。
   在Linux系统中,我们怎么变换身份呢?一般而言,我们都不希望以root身份登录主机,以避免被不法入侵。但主机又不可能不完全不进行修补或设置,这个时候要如何将一般用户的身份变成root呢?主要有两种方式,分别是:
用su直接将身份变成root,但这个命令需要root命令;当有很多人同时管理一台主机的时候,root的密码不就有很多人知道了?所,如果不想将密码外传,可以用sudo。
如用一般用户登录时:$su -  这时要输入root密码。
sudo   当用户执行sudo时,系统会主动去寻找/etc/sudoers文件,判断该用户是否有执行的权限;确认用户有可执行sudo的权限后便让用户“输入用户自己的密码”来确认。
sudo  -u  username
编辑文本文件:
在Linux中最强大,同时也最普遍的编辑器要算vi和vim了,但这对初学者很难掌握,因此,有种简单的容易学习的编辑器是nano,它是一个纯文本编辑器,一旦处于编辑器中,只需键入要添加的文本即可。Nano的其他命令需使用ctrl键。屏幕最后两行会显示要运行的命令菜单,如图:
如使用ctrl+x退出,这里忽略大小写。
一些简单的命令和帮助;
命令的一般格式:命令   选项   参数
每一项都以空格隔开,单字母选项的前面通常缀一个破折号 -
    可以用-a -b 也可用 -ab
若是整个单词前面通常用 --   如  -- help
参数是文件名或命令所需的其他数据。多个命令可以用分号(;)间隔。
date   -  显示日期和时间;    cal   显示日历
date  +“%s” 显示时间戳;   date  月日时分年.秒
当我们用日期作为一个文件的名字时用: touch  a-`date  +"%y-%m-%d-%H-%M-%S"`
Linux中有两个时间,一个系统时间,一个是硬件时间。
   #clock  看硬件时间
   我们可以用命令hwclock  -w   以系统时间为准,修改硬件时间。
                          -s    以硬件时间为准,修改系统时间。
     由于Linux中命令和参数不胜枚举,我们有时很难记住一些命令和参数。这时我们就可以使用以下命令来帮助我们获得帮助信息。
     whatis :显示命令的简短描述,使用每晚更新的数据库,通常不是安装后就立即可用的。这就意味着新装的系统中,由于数据库不存在,whatis就不能运行,若等不及它自动更新的话,这时就要以根用户的身份运行“makewhatis”命令来立即生成数据库。
   如  whatis   date
     date        (1)   - print or  set  the  system date  and  time
       其中这个括号内的数字代表Linux 中man  pages 的章节号码,可以从中获得更详细的文档。
     --help : 显示用法摘要和参数列表。
     如  $date --help
     man :  man  [章] 命令  提供命令的文档。  如   man  1  date
     搜索man pages  
         man  -k  关键字  列举所以匹配的pages,它使用的是whatis数据库。
              -K  关键字  它使用的是man pages 文档中的内容,查询慢。
Info和man命令相似,但它所提供的信息更深入,介绍了命令的背景,发展等。不带任何参数运行info会列举所有项目。它的信息页的结构和网页相似。
     Info  [command]
Linux 文件结构
   在linux中一切皆文件,文件和目录 被组织成一个倒转的单根系的树形结构。文件系统是从根目录开始,根目录使用单个正斜线字符(/)代表。名称区分大小写;路径使用/分隔。
系统中每个进程都有一个明确的当前(current)或工作(working)目录。
..代表父目录;— 在上一个的工作目录; . 指代当前目录;
某些重要的目录:
主目录: /root /home/用户名   每个用户都有个主目录,所有用户的个人文件(配置,数据,应用程序)都应该放这里。根用户的主目录是/root,多数非根用户的主目录位于/home目录下,通常以用户名命名。
用户可执行文件目录:/bin、/usr/bin、/usr/local/bin   除了/bin之外,/usr/bin、/usr/local/bin 也是放置“用户可执行的二进制文件的目录”如ls,mv,rm等命令都放在这个目录中
系统可执行文件目录:/sbin、/usr/sbin、/usr/local/sbin   放一些系统管理员才会用到的执行命令,如:fdisk,mount等。与/bin不一样的是,这几个目录是给root系统管理用的。但目录下的文件可以让用户查看而不能设置。
其他挂载点: /media、/mnt  这是介质被挂载(mount)到/media的子目录中。如光盘通常被挂载到/media/cdrom目录中,是挂载移动性设备;而挂载非易移动性设备通常被挂载到/mnt目录中。
配置文件:/etc   系统主要的配置文件被保存在/etc目录和他的子目录中。
临时文件:/tmp  通常被保存正在执行的程序临时放置文件的地方。系统每天都检查一次/tmp中的文件,并自动删除任何存在时间超过十天的文件。
内核和引导载入程序: /boot   引导载入程序负责把系统的核心程序载入到内存,这个核心被称为“内核”,引导载入程序,内核,以及载入程序的配置文件,都保存在/boot目录中。
服务器数据:/var、/srv   它主要放置系统执行过程中经常变化的文件,例如日志,print spools,email spools。/srv目录包含服务器数据,例如数据库和网页
系统信息:/proc,/sys  /proc 自身是个“伪文件系统”。它放置的数据都在内存中,提供了有关运行着的Linux系统的信息。/src目录与硬件有关。
共享库:/lib  /usr/lib  /usr/local/lib    系统使用的函数库的目录。
我们可以访问文件系统的结构标准(FHS)来了解更多。
我们可以用命令“pwd”来显示当前的工作目录。
     #pwd
切换目录:  cd
  cd   /home   绝对路径;     cd   ..home   相对路径; 
列举目录内容: ls
   ls  -a (包括隐藏文件) -l(显示额外信息)  -ld (目录和符合链接的信息)
       ls  -d  列举目录名,而不是其中的内容。
复制文件和目录:  cp
   cp   -i(交互,在覆盖文件前询问)  -r(递归,递归复制整个目录和子目录)
        -p (保留权限,所有者,和时间戳) -a (递归复制,同时保留权限)
       如 cp   -r  /etc/  /tmp 
          cp    -a   /etc/passwd   ~/aa/bb  则passwd中的内容全部复制到了bb中
          前提是~/aa已经创建好了
          cp    -a    /etc/sysconfig  ~/aa/bb   若第一次运行时目标目录bb会被
          创建,sysconfig目录中的文件会被复制到其中;当第二次运行会复制
          到--bb/sysconfig中,当第三次运行时则会确认是否覆盖。
       如果目标是目录,就会复制不止一个文件。  如   cp  file3.txt  /home/student
移动文件与目录,或重命名   mv
mv   -f (强制直接移动不询问)  -i (在覆盖文件前询问)
  如果目标是目录,就可以移动多个文件: 如  mv  bashr1  bashr2  mvtest2  
  则最后一个mvtest为目录 
mv mvtest1  mvtest2  这样就重命名了
创建和删除文件
   touch  -  创建空文件或更新文件时间戳;
      如   touch   {report,graph}_{jan,feb}  创建了report_jan,report_feb等四个   
           文件;
   rm     -  删除文件    -i 文件 (交互式)  -r 目录(递归式) -f 文件 (强制)
     rm  -i bashrc
创建和删除目录
   mkdir    创建目录   -p (递归建立目录)   -v  (显示创建过程)
     如   mkdir  -p  /test/test1/test2
          命令行展开  {}     mkdir   x/{y1,y2}/z  -p    
                             此创建了目录  x/y1/z和x/y2/z
   rmdir    删除空目录    -p   与上层空目录也删除
     如  rmdir   -p   /test/test1/test2    这样就将/test/test1/test2 一起删除。 
判断文件内容: file
   如  file    test.txt  
常见的文件类型: 普通文件  f  ;   目录文件  d  ;   链接文件  l ->(字符设备 c        
                  块设备 b)    管道文件  p   ; socket文件    s  ;
用户: 
每个用户都被分配了一个独特的用户ID号码(UID)
UID 0 代表根用户  ;  普通用户(500-60000) ; 系统用户(1-499)
用户名和UID被保存在/etc/passwd这个文件中。
用户对他们的主目录有完全的存取权限,这就是说,他们可以随意地创建和删除文件和目录,可以随意的组织文件。
对于/etc/passwd/这个文件,我们可以用 man 5 passwd 来查看更多的详细信息。
在/etc/passwd/这个文件中,每一行都代表一个账号。每一行都用“:”分隔开,共有7部分内容,分别是:
account(账号名称)用户名;   passwd(密码)在此文件中用x表示,是占位符,表示密码已经移到shadow这个加密后的文件中了;   UID   ;   GID   ;   
GECOS(用户信息说明栏,没什么意义,只是解释这个账号的意义)  ;
directory(家目录) ;  shell  ; 
在/etc/shadow这个文件中,也是以“:”隔开,共有9个字段,分别是:
 账号名称   :    密码   :   最近更改密码的日期   :   密码不可更改的天数  :
 密码需要重新更改的天数  :  密码更改期限前的警告期限   :  密码的过期宽限期 
 限时间    :    账号失效日期  : 保留
添加一个用户 :  useradd
useradd  -u(后面接UID,是一组数字)  -g(后面接的用户组的名称,基本组)
         -G(用户的附加组,相关数据在/etc/group中)  -M(强制,不要建立用户    
         的家目录)   -m(强制,要建立用户的家目录)  -c(这就是/etc/passwd
         中第5栏的说明内容,可以随意设置)    -d(指定用户的家目录)
          -s(后面接一个shell)   -p(指定密码)  -e (过期时间)
         -f (非活动时间)
passwd    (修改密码)   passwd   [username]
修改账号的相关数据(就是/etc/passwd中的字段数据)
usermod  -u(改UID)  -g(后面接组名) -G(附加组)后面跟个-a (追加附加组
        ,若没则覆盖)   -d(改家目录)后跟-m(表示新建个家目录)
         -s(改shell如/bin/bash)   -l(改账号名称)   -L(暂时把用户的密码
         冻结了,让他无法登陆)  -U(将/etc/shadow密码栏的!去掉,解冻)
       如  usermod   -G  mygrp   -a  oracle(用户)
           usermod   -d   /home/donne2    -m   donne 
           若是仅-d仅会修改/etc/passwd第六栏的内容,加上-m会将原来
           的/home/donne更名为/home/donne2
删除用户 :  userdel 
userdel  [-r]  username   -r (连同家目录也一起删除)
  如   userdel  -r   donne
我们可以用finger,id来查看用户的信息
finger   donne  
Id       donne 
组群
用户被分配给组群,每个组群都被分配一个独特的组群ID号码(gid),组群中的所有   
用户都可以共享属于该组群的文件。主要组群可以运行“newgrp 组群名”这一命令来    
临时改变,组群名可以是用户的次要组群之一,用户可以通过exit来返回到他们原
来的组群设置。其中组群名和GID被保存在/etc/group这个文件中。
这个文件也是以冒号“:”隔开字段的,共4栏:
用户组名称(gaccount)  :  用户组密码  :   GID  :   user_list
如  #newgrp  users
    #exit
添加用户组 :  groupadd
   groupadd   -g(后面跟个gid)    如   groupadd  -g   1000  dba
删除用户组 :  groupdel
            如   groupdel   dba
权限
每个文件都属于一个UID和一个GID,每个进程都使用一个UID和一个或多个GID运行。
三种存取权限类型:
    1)进程使用和文件相同的UID来运行(用户,user)
    2)进程使用和文件相同的GID来运行(用户组,group)
    3)所以其他进程(其他,other)
如果UID匹配,就应用用户(user)权限,否则,如果GID匹配,就应用用户组(group)   
权限。如果都不匹配,就应用其他(other)权限。如果某个进程UID和GID都匹配
,那么用户权限有优先使用权。
权限类型
在显示权限时,使用了四种符号:
 1)r:读取文件或者列举目录内容的权限
 2)w:写入文件或者在目录中创建,删除文件的权限
 3)x:执行程序或者转入目录
 4)-:无权限
改变文件所有者:
     只有根用户才能改变文件的所有者,只有根用户或所有者才能改变文件的用户组。
     chown  改变所属用户    如   chown  -R   student  chfile
           -R选项能够改变整个目录树的所属用户
     chgrp  改变所属用户组    如   chgrp   [-R]   grouper  gfile
改变权限 -  符号式方法:
     chmod  [-R]  模式   文件
     这里的模式是:
      1)u,g,o,分别代表用户,用户组和其他用户
      2) +或- ,= 代表授予或拒绝,设置
      3)r,w,或x,分别代表读取,写入,和执行
      如   chmod   u+w,go-w  。Bashrc  给所属用户以写入权限,但是拒绝用户组合
      其他用户的写入权限 
改变权限 -  数字式方法
      4(代表读取)   2(代表写入)   1(代表执行)
      如   chmod   640  myfile
                           使用Bash shell
命令行简化操作、文件匹配
通配符:*  -   匹配0个或多个字符;  ? -  匹配任何字符;  
        [0-9] - 匹配一个数字范围;   [abc]  -  匹配列表中的任何字符
        [^abc]  -   匹配列表以外的字符   
 字符类的语法是[:关键字:],关键字可以是:alpha(a-zA-Z),upper(A-Z),
  Lower(a-z),digit(0-9),alnum(a-zA-Z0-9),punct(标点符号),space(空白字符)
例如:如果你想匹配数字,可以用:[[:digit:]] 若是匹配数字以外的字符
 [^[:digit:]]
我们也可以使用Tab键来完成命令行,连按两下Tab键会显示你未输完的所有命令的
名称。
history
   Bash保存你输入的命令历史,你可以用它来输入重复的命令。使用history命令来查
   看历史命令。
history  n (数字,列出最近的n行命令)  -c(将当前所有history内容全部清除)
         -a(将当前新增的history命令加入histfiles中,若没有加入histfiles
         ,则默认写入~/.bash_history)
还可以用:  !! (重复前一个命令);  !字符(重复一个一字符开头的命令)
            !号码(按照history输出的号码来重复相应的命令)
            !?abc (重复前一个包含【而不是开头是】abc的命令)
            !-n (重复n个命令之前的那个命令)
            !$ (重复前一个命令)
             使用^old^new 来重复前个命令,把旧参数(old)换成新参数(new)  
在.bashrc文件中添加以下内容可以忽略重复输入的相同命令:
    #export  HISTCONTROL=ignoreboth   ;  ignorespace(忽略空格)
                                          ignoredups(去除连续重复的命令)
                                          erasedups(去除不是连续重复的命令)
    若重启后此设置就失效了,若永久有效则须在环境变量中修改。
命令扩展: $()或``
   把一个命令的输出打印给另一个命令的参数
      #echo "my $(hostname)"  my  station46.example.com
括号扩展:{}
打印重复字符串的简化形式:
    #echo file{1,3,5}  file1  file3   file5