Linux常用命令简介

发 布 时 间 : 2008-11-18 来 源 : 来自网络 作 者 : 匿名 浏 览 :
su
su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换为user2,只要用如下命令:
$su user2
然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。
su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示输入根口令,输入之后则可切换为根用户。
如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。

pwd
pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。

cd
cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。
cd ..可进入上一层目录
cd -可进入上一个进入的目录
cd ~可进入用户的home目录

ls
ls命令跟dos下的dir命令一样,用于显示当前目录的内容。
如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。
如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。

find
find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。
find命令的基本结构如下:
$find
其中指定从哪个目录开始搜索。指定搜索条件。表示找到文件怎么处理。一般来说,要用-print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而不显示结果,等于白费劲。
例如,要搜索系统上所有名称为ye的文件,可用如下命令:
$find / -name ye -print
这样就可以显示出系统上所有名称为ye的文件。

tar
tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar档案:
$tar cvf
例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令:
$tar cvf ye.tar *.*
要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令:
$tar tvf ye.tar
要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令:
$tar xvf ye.tar

gzip
gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令:
$gzip ye.txt
这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。
解压缩文件可用gzip -d命令实现:
$gzip -d ye.txt.gz
这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效果跟用gzip -d命令一样。
旧版的tar命令不压缩档案,可用gzip压缩。例如:
$tar cvf ye.tar *.txt
$gzip ye.tar
则可建立压缩档案ye.tar.gz。
新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了。例如:
$tar czvf ye.tar *.txt
生成压缩档案ye.tar.gz,
$tar tzvf ye.tar *.txt
显示压缩档案ye.tar.gz的内容,而
$tar xzvf ye.tar *.txt
取出压缩档案ye.tar.gz的内容。

mkdir
这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。

cp
cp命令用于复制文件或目录。
cp命令可以一次复制多个文件,例如:
$cp *.txt *.doc *.bak /home
将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。
如果要复制整个目录及其所有子目录,可以用cp -R命令。

rm
rm命令用于删除文件或目录。
rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。
如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录,这样即使用了-i标志也当无效处理。

mv
mv命令用于移动文件和更名文件。例如:
$mv ye.txt /home
将当前目录下的ye.txt文件移动到/home目录下,
$mv ye.txt ye1.txt
将ye.txt文件改名为ye1.txt。
类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。

reboot
重启命令,不必多说。

halt
关机命令,不必多说。

扫盲行动之二:轻松安装、卸载Linux软件

以下三篇文单大部分内容是雷同的,懒得整理,所以全放上来了!!
第一篇:

Linux下软件的安装与卸载

在Windows下安装软件时,只需运行软件的安装程序(setup、install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall、unware、“卸载”等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击“下一步”就可以了。而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观。其实在Linux下安装和卸载软件也非常简单,同样也有安装向导或解压安装的方式,不相同的只不过是除了二进制形式的软件分发外,还有许许多多以源代码形式分发的软件包,下面就来详细地讲一讲这些软件的安装与卸载:

一、二进制分发软件包的安装与卸载
Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。
1、*.rpm形式的二进制软件包
安装:rpm -ivh *.rpm
卸载:rpm -e packgename
说明:RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作,安装简单,而卸载时也可以将软件安装在多处目录中的文件删除干净,因此推荐初学者尽可能使用rpm形式的软件包。rpm的参数中-i是安装,-v是校验,-h是用散列符显示安装进度,*.rpm是软件包的文件名(这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件);参数-e是删除软件包,packgename是软件包名,与软件包的文件名有所区别,它往往是文件名中位于版本号前面的字符串,例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是软件包文件名,它们的软件包名称分别是apache和apache-devel。更多的rpm参数请自行参看手册页:man rpm。
如果你不喜欢在字符界面下安装或卸载这些软件包,完全可以在X-Window下使用图形界面的软件包管理程序,如glint、xrpm这样的图形接口,或者是KDE的kpackge等,这样对软件包的安装、升级、卸载、验证和查询就可以通过点击鼠标来轻松完成。
2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2
卸载:手动删除
说明:*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除(稍麻烦),想知道解压时向系统中安装了哪些文件,可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压,x是解包,v是校验,f是显示结果,y是调用bzip2解压,t是列出包的文件清单。更多的参数请参看手册页:man tar。
如果你更喜欢图形界面的操作,可以在X-Window下使用KDE的ArK压缩档案管理工具。
3、提供安装程序的软件包
这类软件包已经提供了安装脚本或二进制的安装向导程序(setup、install、install.sh等),只需运行它就可以完成软件的安装;而卸载时也相应地提供了反安装的脚本或程序。例如SUN公司的StarOffice办公软件套件就使用名为setup的安装程序,而且在软件安装后提供反安装的功能,目前这种类型的软件包还比较少,因其安装与卸载的方式与Windows软件一样,所以就无需多讲了。

二、源代码分发软件包的安装与卸载
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。
1、*.src.rpm形式的源代码软件包
安装:rpm -rebuild *.src.rpm
cd /usr/src/dist/RPMS
rpm -ivh *.rpm
卸载:rpm -e packgename
说明:rpm --rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包,然后再安装该二进制包即可。packgename如前所述。
2、*.tar.gz/*.tgz、*.bz2形式的源代码软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解压
然后进入解压后的目录:
./configure 配置
make 编译
make install 安装
卸载:make uninstall 或 手动删除
说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure --prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最难的,它适合于使用Linux已有一定经验的人,一般不推荐初学者使用。

关于Linux下软件的安装与卸载lanche已经讲了这么多,但可能还会有人问怎么知道一个tar.gz/bz2包是二进制文件包呢还是源代码包?如果你用过压缩工具就会明白,压缩包未必就是软件,它也可能是备份的许多图片,也可能是打包在一起的普通资料,要分辨它到底是什么最好的办法就是查看包里的文件清单,使用命令tar ztvf *.tar.gz / tar ytvf *.bz2或者在X-Window下使用图形化的ArK压缩档案管理工具都可以,源代码包里的文件往往会含有种种源代码文件,头文件*.h、c代码源文件*.c、C 代码源文件*.cc/*.cpp等;而二进制包里的文件则会有可执行文件(与软件同名的往往是主执行文件),标志是其所在路径含有名为bin的目录(仅有少数例外)。原来这么简单呀,还不快点自己试试!

第二篇:

如何安装Linux的软件

在windows下安装软件大家都觉得很容易,只要双击setup或是install的图标,然后跟着向导一步一步的按提示做就可以了,但是在linux下安装软件就不像windows下那样容易了,有时你找到的是没有编译过的软件源码,那就更加的麻烦了,这里就介绍一下如何安装linux的软件啦!
linux下的软件一般都是经过压缩的,主要的格式有这几种:rpm、tar、tar.gz、tgz等。所以首先拿到软件后第一件事就是解压缩。
一、在xwindow下以rpm格式的软件安装比较容易,只要在把鼠标移到文件上单击右键,在弹出的菜单里会有专门的三项(只有在右键单击rpm文件才会出现)show info,upgrade和install,这三项的意思大家都很清楚了,我就不多说了。rpm格式说了,接着就是tar,tar.gz,tgz等,在xwindow下双击这些格式的文件就会自动解压缩的,是解压缩而不是像rpm那样有install选项的,install文件会在你解压缩后才出现,不过这里我要先说一下,在你双击install前建议先好好看一下readme,因为你所要安装这些软件可能是没有编译的,所以看一下会比较好。
二、说完了xwindow下的安装和解压缩,接着说在文本模式下如何解压缩和安装,还有编译源码了。首先说rpm的,以root身份登陆后(用其他的身份登陆也可以但有些软件就不能被安装)键入rpm -i你所要解压缩的文件+扩展名(当然是rpm)也不是很难吧,这里我要说的是“-i”意思是install,如果你想要卸载或是要执行其他的指令就打rpm --help,看电脑给你的提示吧,为了照顾那些E文不太好的人我这里就写几个常用的参数:-e:卸载相关的应用程序,-U(注意是大写):升级软件包,-pql:列出rpm软件包的相关信息,-qf:查找指定文件属于哪个软件包。至于那些其他格式的软件则可以用gunzip,gzip,tar和unzip等指令来解压缩,然后再运行install。通过解包后会得到一些文件,然后进入刚才解压缩后文件目录用“ls -F -color”指令看一下所得到的文件,一般有两种情况:第一种是文件为已经编译好的程序(无须再编译了)用上面的察看文件命令会以带“*”标记的亮绿色显示;第二种则是需要由你自己编译的源代码。得到的是源代码的话,就需要我们自己编译来得到可运行的程序。编译源代码听到编译是不是就吓到你了呢,其实说穿了也就加上几句话而已,对初学者是有些困难想用好的操作系统就需要学习嘛,等你学会了在MM前露一手的时候想想吧……,在编译之前先要认真的阅读一下readme文档,老鸟们就不需要了吧,等你阅读完了以后就执行
./configure
make
make install(只有Root身份才能执行此命令),编译完成之后便会在当前目录或src子目录下得到软件的可执行程序。
介绍完了,大家是不是觉的RPM的软件安装比较容易一点呢,但我个人意见初学者还是多选择RPM格式以外的软件,因为通过编译软件的源码可以为你以后编译内核打下一定的基础。(上海 张国荣)

第三篇:

轻松安装、卸载Linux软件

Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。

软件的安装
Linux下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz;另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发送的;第二种方式则是直接以二进制形式发送的。

对于第一种,安装方法如下:

1.首先,将安装文件拷贝至你的目录中。例如,如果你是以root身份登录上的,就将软件拷贝至/root中。

#cp xxx.tar.gz /root

2.由于该文件是被压缩并打包的,应对其解压缩。命令为:

#tar xvzf filename.tar.gz

3.执行该命令后,安装文件按路径,解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,有“Install”的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。

4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为:#./configure。

5.检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。命令为:#make。

6.成功编译后,键入如下的命令开始安装:

#make install

7.安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:

#make clean
#make distclean

至此,软件的安装结束。

对于第二种,其安装方法要简单得多。

同第一种方式一样,将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下:

#rpm -i filename.i386.rpm

rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。

软件的卸载
1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令:

#rpm -q -a

即可查询到当前系统中安装的所有的软件包。

2.确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入如下命令即可卸载软件:

#rpm -e [package name]

参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载:

#rpm -e [package name] -nodeps

忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用。

补充:

如果是以.bin结尾的二进制软件,可以用以下方法安装(以so-6_0-beta-bin-linux-zh-Tw1.bin为例):

在so-6_0-beta-bin-linux-zh-Tw1.bin所在文件夹下运行模拟终端
输入:
./so-6_0-beta-bin-linux-zh-Tw1.bin
并按回车!

当然也可以输入:
./so 再用[Tab]键补全

(./表示当前目录,如果终端不在该软件所在目录下打开,则在软件名前尚需输入相应的路径。)

如果在图形界面,也可直接单击(或双击,视具体的鼠标设置而定)进行安装!


扫盲行动之三:LINUX的目录树

/bin bin是binary的缩写。这个目录是对UNIX系统习惯的沿袭,存放着使用者最经常使用的命令。例如:cp,ls,cat。
/boot 这里存放的是启动LINUX时使用的一些核心文件。
/dev dev是device(设备)的缩写。这个目录下是所有LINUX的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在LINUX中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。
/etc 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home 用户的主目录,比如说有个用户叫wang,那他的主目录就是/home/wang也可以用~wang表示,说到这里,打个岔,你现应该明白在我们访问一些个人网页的时候,~zhangjia就是表示访问www.netease.net站点中的用户zhangjia的用户主目录。
如果这个网站的操作系统是LINUX,那就是表示/home/zhangjia。
/lib 这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都需要用到这些共享库。
/lost found 这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。
/mnt 这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。
/proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里啊!?
/root 系统管理员,也叫作超级权限者的用户主目录。当然系统的拥有者,总要有些特权啊!
/sbin s就是Super User的意思,也就是说这里存放的是一些系统管理员使用的系统管理程序。
/tmp 这个目录不用说,一定是用来存放一些临时文件的地方了。
/usr 这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。具体来说:
/usr/X11R6 存放X-Windows的目录;
/usr/bin 存放着许多应用程序;
/usr/sbin 给超级用户使用的一些管理程序就放在这;
/usr/doc 这就是LINUX文档的大本营;
/usr/include LINUX下开发和编译应用程序需要的头文件,在这找;
/usr/lib 存放一些常用的动态链接共享库和静态档案库;
/usr/local 这是提供给一般用户的/usr目录,在这安装软件最适合;
/usr/man man是什么,对了是帮助。这里就是帮助文档目录啊!
/usr/src LINUX开放的源代码,就存在这个目录,爱好者们别放过哦!
/var 这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中。
这里列出了最常见的目录,根据LINUX发行套件的不同,目录结构也是有一定差别的。还有你自己建立的目录,我当然不知是存什么的。希望上面的文字能使你在大脑里留下了LINUX的全景图,以便大家深入掌握LINUX的其它方方面面。


扫盲行动之四:GRUB三步通

朋友,你装好linux后是不是每次启动后系统就默认进入到linux,想让它变成windows吗?请修改你的引导装入器吧(当然它不止这个功能)!由于现在的linux都喜欢用GRUB来引导,LILO已越来越少用了,所以我在这里主要给大家讲讲GRUB这个东东!!

##################
# GRUB的优点 #
##################
GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。
GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单。

更令人惊讶的是,这是一个自由软件!!!

##################
# GRUB菜单 #
##################
先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。
此文件将在开机是产生一个菜单,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个swap分区(0x82)。ntfs用来装win2000,三个ext2fs装了三个linux,c盘fat16分区没有装任何东西。
#例子由此开始

######################
# #
# 一个GRUB configure 的例子 #
# #
######################

timeout 10
default 2

# --> Debian linux <--

title Debian linux
root (hd0,2)
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
initrd /boot/initrd-2.2.18.gz

# --> Debian END <--

# --> Windows 菜单选项 <--

title Windows2000
root (hd0,0)
chainloader 1

# --> Winddows 结束 <--

# --> RedHat linux 菜单选项 <--

title RedHat linux
root (hd0,8)
chainloader 1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。

# --> RedHat linux 结束 <--

# --> Mandrake linux 菜单选项 <--

title Mandrake linux
root (hd0,5)
kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
initrd /boot/initrd-2.4.3-20mdk.img

# --> Mandrake linux 结束 <--

#例子到此结束

以符号井"#"开头的行表示被注释掉,没有任何意义。

timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root 于linux的root分区及其不同,此root非彼root也!

在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。

到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。

知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro说明/boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。
initrd用来初始的linux image,并设置相应的参数。

是不是感觉很简单啊!再来看一看windows的定义段吧。
这里,我添加了一项来引导 Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧!

######################
# GRUB的交互性 #
######################

GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub>

欢迎使用 GRUB 控制台。现在,再研究命令:
我将通过GRUB 控制台绕过lilo来启动RedHat linux,

grub> root (h

现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:

grub> root (hd0,

现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

grub> root (hd0, (tab,按tab一下键)
Possible partitions are:
Partition num: 0, Filesystem type is fat, partition type 0x6
Partition num: 2, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x7
Partition num: 5, Filesystem type is ext2fs, partition type 0x83
Partition num: 6, Filesystem type is fat, partition type 0xb
Partition num: 7, Filesystem type is fat, partition type 0xb
Partition num: 8, Filesystem type is ext2fs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82

如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了
grub> root (hd0,8)
现在已安装了 root 文件系统,到装入内核的时候了

grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
[Linux-bzImage, setup=0x1200, size=0xe1a30]

您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。

#####################
# GRUB启动盘 #
#####################
要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

将一张空盘插入 1.44MB 软驱,输入:

# mke2fs /dev/fd0
创建了 ext2 文件系统后,需要安装该文件系统:

# mount /dev/fd0 /mnt/floppy
现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一个步骤,就能得到可用的引导盘。

在linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。
在 grub> 提示符处,输入:

grub> root (fd0)
grub> setup (fd0)
grub> quit

现在,引导盘完成了。
如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的 GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):

grub> setup (hd0)

如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

grub> setup (hd0,4)

现在,已安装 GRUB。引导系统时,应该立即以 GRUB 的控制台方式结束(如果安装到 MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

小结:在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档


扫盲行动之五:在Linux中共享Windows系统资源

在一部电脑上装有Linux和Windows的用户,可能需要在Linux中用到包括软盘、光盘以及Windows分区中的文件,如当你在Windows操作系统中上网,却下载了Linux的应用软件的时候。下面我就向大家详细介绍这方面的知识和具体的应用。
  一、装载(mount)
  (一)准备知识
  在Linux系统中想要使用软驱的话,要先把它们装载到系统中,装载指令mount的格式如下:
  mount -t 文件系统类型 设备文件名 装载目录
  1.文件系统类型
  文件系统类型一般来说就是分区格式,依操作系统的不同而不同。下面将Linux系统支持的文件系统类型择要分列如表一:
  2.设备文件名
  在Linux系统中,各个驱动器设备的命名和Windows中的规则(如A:、C:等)有很大的区别。所有的系统硬件设备都可以在/dev目录下找到对应的设备文件名。例如/dev/mouse就用来表示系统中的鼠标。磁盘驱动器的各个不同分区所对应的设备文件名列表如表二:
  假设第一个IDE硬盘驱动器被分成数个分区,通常,第一个分区可以肯定其设备文件名为/dev/hda1,但其它分区的设备文件名就不是可以依次类推得到的(特别是当用户使用了诸如PTM之类的磁盘分区工具的时候)。如果你想要知道硬盘各分区所对应的设备文件名,可以在控制台下执行cfdisk的指令,则各分区对应的设备文件名就可以一目了然了。
  3.装载目录
  通常我们都会在/mnt目录下面为需要装载的磁盘驱动器创建一个目录,不过这并不意味着它们不可以被装载于其它未被使用的目录中。再者,所谓装载目录,并不是将被装载的磁盘驱动器整个复制到本地,而仅仅是在本地提供一个装载点用以联系其它需要装载的磁盘驱动器。
  Linux系统对字符的大小写是敏感的,但是在Windows中就不是这样。而当你装载一个Windows系统中的驱动器后,对其上的文件操作时,字符的大小写就变得不敏感了,这意味着用户不可以在装载的Windows驱动器的同一目录中建立这么两个文件:ABC.TXT和abc.txt,因为在Windows系统中,它们代表同一个文件。
  (二)装载实例
  1.装载软盘
  首先在/mnt目录下为软磁盘创建一个目录floppy(有时Linux系统在安装的时候已经为你做了这一步):
  mkdir /mnt/floppy
  接着用装载指令将软盘中的内容装载到这一目录中:
  mount -t msdos /dev/fd0 /mnt/floppy
  此后你就可以在/mnt/floppy下完全访问到软磁盘中的内容了。当然你亦可以用vfat这一文件系统类型代替msdos以使你能正确访问到软盘上的长文件名字,或者是用ext2代替它以使你可以访问到Linux文件格式的软盘。
  2.装载FAT 32格式的C盘
  在/mnt目录下为之创建一个目录winc(winc以及其他的装载目录是笔者的假设,你可以用自己喜欢的其他合法字符去命名这些目录):
  mkdir /mnt/winc
  用装载指令将C盘内容装载入该目录:
  mount -t vfat /dev/hda1 /mnt/winc
  3.装载光盘
  在/mnt目录下为你的光盘驱动器创建一个目录cdrom(有的Linux系统安装时已为你完成了这件事):
  mkdir /mnt/cdrom
  如果你的光盘驱动器安装在primary slave上,设备文件名就是/dev/hdb;如果安装在secondary master上,设备文件名就是/dev/hdc。假设你的光盘驱动器挂在secondary master,就用下面的装载指令:
  mount -t iso9600 /dev/hdc /mnt/cdrom
  由于Linux版本的不同,你所用的系统或者会使用这样的指令来装载光盘:
  mount /dev/cdrom
  或mount /mnt/cdrom
  二、卸载(umount)
  如果你已经用指令将软盘装载进相应目录,就不要直接将它们从软驱中取出来,否则可能会导致信息丢失;已经装载的光盘驱动器更是会令面板上的弹出键暂时失效以阻止你将光盘直接取出。
  在你取出它们之前,首先要确定已经没有用户对它们进行访问操作,包括没有工作窗口处在该磁盘驱动器被装载的目录。卸载指令的格式如下:
  umount 卸载目录名
  如用户想要卸载软盘,可以用如下指令:
  umount /mnt/floppy
  三、进阶使用
  (一)为装载指令增加简捷的形式
  用户可以在系统的配置文件/etc/fstab中指定一些常用的需要装载的驱动器,以便用更简捷的指令来装载它们,下面给出一个添加Windows系统的C盘进配置文件的例子:用文件编辑工具vi(也可以用其它你熟悉的文件编辑工具)打开/etc/fstab,我们会看到系统已经为根目录“/”、软磁盘驱动器、光盘驱动器等指定了文件系统类型和设备文件名以及装载目录(可能会因为所用的Linux版本不同,被指定的驱动器会有出入,不过用户可以参照下面的例子做出改动)。你既可以改变它们的预设值,也可以在其中添加新的驱动器。用箭头将光标移到最后一行,将下面一行加入文件:
  /dev/hda1 /mnt/winc vfat defaults 0 0
  如果还想装载硬盘内的其它分区,可以依次加入。完成后保存文件并退出。不要忘记相应的创建目录/mnt/winc。此后你就可以用如下指令装载Windows系统的C盘了:
  mount /mnt/winc
  (二)启动时自动装载磁盘驱动器
  用户可能会希望系统在启动时可以将你惯用的磁盘驱动器(如硬盘中的Windows分区或者是光盘驱动器)自动装载,以减轻每次启动后都要手动装载的麻烦。你可以用以下方法实现自动装载的功能:
  用文件编辑工具打开/etc/fstab,将刚才我们加入的那一行中的defaults改成auto,如:
  /dev/hda1 /mnt/winc vfat auto 0 0
  对于其它想在启动时就装载的磁盘驱动器,都可以将defaults改成auto。需要注意的是,对于硬盘上的Linux分区(包括ext2和swap)并不需要作出这样的改动。
  重新启动系统以后,在/mnt/winc目录下,你就可以看到系统在启动时就装载好的Windows系统的C盘了。
  四、使用Mtools
  在Linux中想要共享Windows系统资源,除了上面介绍的装载(mount)命令之外,还有一组名为Mtools的软件包可以实现这一功能。和大多数实用工具一样,Mtools软件包亦是Linux系统默认的安装套件。你可以在http:/mtools.ltnb.lu/下载到它的最新版本mtools-3.9.7.tar.gz。
  (一)Mtools命令
  对于熟悉DOS命令的用户来说,Mtools命令会让他们感觉到像回到了DOS的世界。在下面的表格中我们可以看出它们有多么相似:
  很显然,Mtools命令是简单地在DOS命令前加上了一个m前缀,功能还是和在DOS下一样的。须要注意的是,更改目录路径在DOS命令中可以有cd和chdir两种命令格式,但是在Mtools中只有mcd一种格式。类似的在Mtools中没有对应的命令还有mkdir、rmdir、rename等等。
  (二)mtools.conf文档的配置
  因为Mtools是一个仿真DOS命令的软件包,所以它也保存着DOS系统下的磁盘驱动器概念。Mtools不但可以实现A盘 、B盘、 C盘的概念,对于一些特殊驱动器(如ZIP驱动器)更有专门的命令(mzip)以让用户方便地进行操作。在默认的环境下,A盘和B盘分别对应着两个软盘驱动器(如果有的话),N盘则对应着DOSMU启动盘的镜像文件。
  我们可以通过修改/etc/mtools.conf文档来改变默认的配置,当然在做出修改之前你仍要对Linux下的设备文件名有相当的认识才行(请参考上一期本版有关设备及其文件名的介绍)。假设你的机器有一个1.44MB软驱(A),硬盘挂在第一个IDE接口的主位置上,在第一个分区(C盘)中安装有Windows操作系统,光驱挂在第二个IDE接口的主位置上(D盘),以及SCSI盘等,则可以对mtools.conf文档简单配置如下:
  mtools.conf
  drive a: file=″/dev/fd0″ exclusive 1.44m
  drive c: file=″/dev/hda1″
  drive d: file=″/dev/hdc″
  drive X: file=″/dev/rdsk/c0t5d0s2″ partition=4 scsi=1 nodelay
  (三)Mtools命令的使用
  Mtools的命令系统和DOS有很多相似之处,比如在命令后面可以加不同的参数以实现更为丰富的功能(Mtools命令的参数使用方法是在命令后面加“-<参数>”,你可以把它想象成用“-”代替了DOS命令使用的“/”),可以使用通配符“?”和“*”。更为方便的是,使用Mtools不需要事先装载(mount)和事后卸载(umount)。
  下面我们以目录列表命令mdir为例作说明(想知道其它命令的使用格式和更多的可用参数可以用man 命令查看相关帮助系统)。mdir的功能是对DOS目录和其中的文档进行列表操作。命令格式如下:
  mdir [-/] [-f] [-w] [-a] [-X] msdosfile [msdosfile]
  各命令参数的功能分述如下:
  /:输出当前路径下的所有目录和文档,相当于DOS命令dir中的“s”参数;
  f:列表时不尝试计算当前分区的自由空间,对于大硬盘来说,这样做可以节省一些读入和扫描分区表(FAT)的时间;
  w:列表时在一行中显示多个目录文档,这种输出格式将不显示文档的大小和创建时间,相当于DOS命令dir中的“w”参数;
  a:列出隐藏的目录文档;
  X:简要列表, 列出路径名而不列出其它附加的信息。
  一些具体的应用实例:
  1.列表A盘下的所有目录文档(不包括隐藏的目录文档)
  mdir -/ a:
  2.列表C盘Windows目录下含有“abc”的目录文档
  mdir c:/windows/*abc*
  或者mdir c:\windows\*Abc*
  注:在Mtools命令中,/和\是可以混用的。又因为列表的是DOS系统下的文档,对大小写并不敏感,所以“abc”和“Abc”在这里是等价的。而通配符“*”的用法和DOS命令亦有所不同。
  五、在Windows系统中共享Linux系统的文档
  无论对于刚接触Linux的新手还是对之已经熟悉的高手,恐怕都免不了想在Windows系统中调阅Linux系统的文档。这可以使用在Windows系统下观看Linux分区的小软件(如fsdext2等)。这里再向各位推荐两种可以实现这种功能的小软件。
  (一)Linuxindos
  Linuxindos是一个不到500KB的小程序,笔者找到的版本是Beta 0.9的DEMO版,用户可以在http:/best.163.com/~linux/soft/下载试用。程序不需安装就可以在Windows系统下运行,使用也非常简单。
  在Windows系统下将linuxindos.zip解压到硬盘目录,用户就会看到一个带着企鹅图标的可执行程序LiD95Demo.exe。启动程序后,会出现一个接口非常简单的窗口,当用户挑选一个含有Linux系统文档的磁盘驱动器以后,Linux分区中的所有文档就会显示出来,左边窗口列出的是Linux分区中的目录,而右窗口就列出了目录内的文档,感觉就像在Windows的资源管理器中一样。
  (二)Explore2fs
  这是一个更为小巧的自由软件,大小约308KB,用户也可以在http:/best.163.com/~linux/soft/下载使用。正如它的名字一样,这是一个有着类似资源管理器窗口的程序,通过它你可以读取Linux系统下的分区。和Linuxindos一样,Explore2fs的主视窗亦分为左右两个,左边显示的是Linux中的目录,而右边显示的就是目录中的文档了,可以简单地将右边视窗中的文档直接拖到Windows系统分区中。
  在右边视窗中选择好文档后,按下鼠标右键可以选择相应的操作,“Export file”是直接导出文档,而“Export to Text”则是除去文档的分隔符后导出和TEXT兼容的文本文档。


扫盲行动之六:Linux下其它格式文件系统的自动挂装

不同的操作系统使用不同的文件系统格式,MS-DOS支持FAT16文件系统,Windows98支持FAT16、FAT32文件系统,WindowsNT支持FAT16、NTFS文件系统,Windows2000则支持FAT16、FAT32、NTFS三种文件系统格式,而Linux差不多支持所有的文件系统格式,但一般使用ext2文件系统。
  对于普通的PC用户,使用的大多是Microsoft的windows98操作系统,如果想同时使用Linux操作系统的话,一般使用多重启动。这时,用户可能希望在Linux下访问Windows文件,比如原来Windows下的mp3、电影等等。通常,有多种方法实现Linux下对其它文件系统的访问,下面就以在Linux下对Windows98文件系统的访问为例进行介绍:
  (一)在安装Linux时进行设置。由于Linux和Windows98两种操作系统使用不同的文件格式,所以在Windows98下安装Linux必须为Linux建立单独的分区,安装过程中有设置分区的步骤,此时,不但可以建立Linux分区,还可以对原FAT文件系统进行挂装,因为Linux把磁盘设备也看成是特殊的文件,这时如果为Windows98操作系统的逻辑分区C、D分别设立如/DOSC、/DOSD的挂装点,那么在安装完Linux后就可以在/DOSC、/DOSD目录下访问原来C、D分区上的文件了。
  (二)如果在安装时没有为Windows98分区设立挂装点,也可以在安装完成后进入Linux运行mount命令(必须以root身份登录)挂装,mount命令的具体格式是:
mount〔-afFhnrvVm〕〔-l<标签>〕〔-o<选项>〕〔-t<文件系统>〕〔设备名称〕〔挂入点〕
比如,用户的Windows98在系统IDE设备上的第一个分区上,如果要将它挂装在/DOSC下,可以使用下面的命令:
mount -t vfat /dev/hda1 /dosc
使用mount挂装设备时会记录信息在/etc/mtab文件中,运行unmount命令时将记录清除。
  (三)手动修改/etc/fstab文件。/etc/fstab文件的内容被用来在Linux 下自动挂装各种文件系统,文件中的每一行都提供了一种设备的信息,这种设备可以被挂装在Linux文件系统下的一个目录中。在Linux启动过程中,init进程执行一个脚本文件,该脚本调用带有-a参数的mount命令,用mount来读/etc/fstab,并挂装所有列出的文件系统(带noauto选项的除外)。下面是一个典型的/etc/fstab文件(其中Windows98安装在第一块硬盘上,Linux安装在第二块硬盘上):
  ABEL=/ / ext2 defaults 1 1
  /dev/hda1 /dosc vfat defaults 0 0
  /dev/fd0 /mnt/floppy auto noauto,owner 0 0
  none /proc proc defaults 0 0
  none /devpts devpts sid=5,mode=620 0 0
  /dev/hdb5 swap swap defaults 0 0
  /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kud2ure 0/0
  /etc/fstab文件的第一列是设备名,第二列是挂装点,第三列表示在设备上的文件系统的类型,第四列是应用于特定设备的一组选项,通常为defaults,表示的含义有:这个设备在引导阶段被挂装、只有root用户可以挂装它、挂装后可以进行读或写操作,此选项如是noauto,则表示引导时该设备不会被自动挂装,而user选项表示任何用户都可以挂装该设备。以上面的etc/fstab文件为例,如果想在Linux下挂装Windows98操作系统的D分区(假设挂装点为/dosd),则可以在上文件中加入一行:
  /dev/hda5 /dosd vfat defaults 0 0
  然后存盘,重新启动后就可以访问Windows98操作系统的D分区了。

补充:fstab 栏位说明
第一栏(fs_spec): 实际的 device 名称
第二栏(fs_file): 对应到的目录结构(mount point)
第三栏(fs_vfstype):该 partition 的档案系统,常见的有:
minix、ext、ext2、msdos、iso9660、nfs、swap
第四栏(fs_mntops): 在 mount 时的参数
第五栏(fs_freq): 在使用 dump 时是否记录,不需要则输入0
第六栏(fs_passno): 决定在开机时执行 fsck 的先后顺序


扫盲行动之七:如何刻录ISO文件!

很多网友问我如何对ISO文件进行刻录,现以nero刻录软件为例就iso文件的刻录方法作如下介绍:
1、启动nero,左边选“CD-ROM(ISO)”,右边点“新建”。
2、进入窗口后,选“档案-烧录映像档”,然后找到所要刻录的ISO文件后点“打开”。
3、设置相应参数后,点“写入”,这样就开始刻录了。
这样刻录的ISO才是最完整的,如果是先将ISO文件解开后再刻录,则对于某些从光盘自启动的映像文件可能会导致刻录后无法从光盘自启动!

扫盲行动之八:Linux中文件的压缩与解压缩

请点击下面的附件—ysjy.txt,并将后缀修改为 html,就可以看了:

点击下载此文件


扫盲行动之九:Vi编辑器的基本使用方法!

 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode)

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

2、vi的基本操作
a) 进入vi

  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

   $ vi myfile


  不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件

  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) Insert 的切换

  您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

d) 退出vi及保存文件

  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

: w filename (输入 「w filename」将文章以指定的文件名filename保存)

: wq (输入「wq」,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)


3、命令行模式(command mode)功能键
1). 插入模式

  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式

  按「ESC」键。

3). 移动光标

  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

  按「ctrl」 「b」:屏幕往“后”移动一页。

  按「ctrl」 「f」:屏幕往“前”移动一页。

  按「ctrl」 「u」:屏幕往“后”移动半页。

  按「ctrl」 「d」:屏幕往“前”移动半页。

  按数字「0」:移到文章的开头。

  按「G」:移动到文章的最后。

  按「$」:移动到光标所在行的“行尾”。

  按「^」:移动到光标所在行的“行首”

  按「w」:光标跳到下个字的开头

  按「e」:光标跳到下个字的字尾

  按「b」:光标回到上个字的开头

  按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字

  「x」:每按一次,删除光标所在位置的“后面”一个字符。

  「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。

  「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。

  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。

  「dd」:删除光标所在行。

  「#dd」:从光标所在行开始删除#行

5). 复制

  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

  「#yw」:复制#个字到缓冲区

  「yy」:复制光标所在行到缓冲区。

  「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

6). 替换

  「r」:替换光标所在处的字符。

  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作

  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

8). 更改

  「cw」:更改光标所在处的字到字尾处

  「c#w」:例如,「c3w」表示更改3个字

9). 跳至指定的行

  「ctrl」 「g」列出光标所在行的行号。

  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

 「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表
1、下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字“0”,光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl f
向前翻屏

Ctrl b
向后翻屏

Ctrl d
向前翻半屏

Ctrl u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字


2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。


对于第一次用vi,有几点注意要提醒一下:
1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)


扫盲行动之十:设置和修改X-Window的显示模式

简短说明:

本文档的主要目的在于介绍手动配置 Linux 下 XF86 的配置方法, 主要是关于如何通过修改 XF86Config 文件调整显示器在图形模式下的显示分辨率和颜色深度, 以及如何通过建立符号连接修改 X Server. 另外提到一些跟图形界面有关的网友常问问题.

一. X Window 工作方式略谈

(如果你之关心如何对 X Widow 进行设置, 可以跳过这一节. 只是理解这一节所讲的知识对于理解下面的各设置步骤有一定帮助)

X Window 的工作方式跟 Microsoft Windows 有着本质的不同. MS Windows的图形用户界面 (GUI) 是跟系统紧密相联的. 而 X Window 则不是,它实际上是在系统核心 (kernel) 的上面运行的一个应用程序.

X Window 的运行分为四层. 最底层的是 X Server(服务器), 提供图形界面的驱动, 为 X Window 提供服务. 上面的一层是用于网上通信的网络协议 -- X 网络协议. 这部分使远程运行 X Window 成为可能. 只需要在服务器上运行一个 X Server, 而客户机 (Client) 上运行更上一层的程序, 则可以实现 X Widow 的远程运行. 再往上的一层是称作 Xlib 的低层函数接口, 介于网络和和基础系统于较高层的程序之间. 应用程序的实现是通过调用这一层的函数实现的. 最顶层就是管理窗口的窗口管理器了, 也就是一般所说的 WM (Window Manager). 在这一层的软件是用户都比较常接触的, 比如 fvwm, AfterStep, Enlightment 以及WindowMaker 等等.

从上面的介绍来看, X Window 的运行是一种客户机/服务器(Client/Server)的模式, 服务器用于显示客运的应用程序, 又被称为显示服务器(Display Server)显示服务器位于硬件和客户机之间, 它跟踪所有来自输入设备比如键盘, 鼠标的输入动作, 经过处理后将其送回客户机. 这样, 使用户甚至可以在 MS Windows 的机器上运行 X Client, 截取并传送用户的输入, 只是将 X Window 的屏幕输出显示在用户的屏幕上. 客户机的输入和输出系统跟 X 服务器之间的通信都是遵守 X 协议的.

由于本文档的主要目的在于介绍如何设置, 因此对 X Window 不再作进一步的介绍. 更详细的资料可以参考有关的 HOWTO, man 页等等.

二. 关于 X Window 的设置

1. X Server

在 Linux 下, 这些服务器的程序是存放在 /usr/X11R6/bin/ 下面, 并且都由XF86_ 打头, 一般来说, 会提供单显 Mono, 标准 VGA 和 SVGA 的驱动, 分别命名为: XF86_Mono, XF86_VGA16 和 XF86_SVGA, 另外可能还会有 S3 和其他一些带有图形加速功能的显卡的驱动. 下面是作者本人机器上运行的 RedHat Linux6.1 中所带有的 X Server 驱动:

XF86_3DLabs XF86_Mono XF86_I128 XF86_VGA16
XF86_P9000 XF86_8514 XF86_Mach32 XF86_S3
XF86_W32 XF86_AGX XF86_Mach64 XF86_S3V
XF86_FBDev XF86_Mach8 XF86_SVGA

如果你的 /usr/X11R6/bin 下面没有上面某个文件或者多了某个文件, 不必在意, 这主要决定于你的机器的硬件. 其实一般只需要跟自己硬件相配套的驱动即可.比如作者正在使用的机器上使用的是 3D Lab Permedia II 的芯片的显示卡, 因此只有 XF86_3DLabs 是有作用的.

如此之多种类的显示适配器驱动程序, 系统当然需要一个固定和统一的方法去访问它, 一般说来, 系统是使用一个名为 X 的符号连接去访问具体的 X Server 的.这个 X 也同样是存在于 /usr/X11R6/bin/ 目录中, 可以使用如下命令打印他的具体指向:

ls -l /usr/X11R6/bin/X

得到的结果如:

lrwxrwxrwx 1 root root 8 Dec 14 03:40
/usr/X11R6/bin/X -> XF86_3DLab

前面的属性 "lrwxrwxrwx" 中第一个字母 l 表示它是一个连接, 在最后由箭头指出它所指向的具体目标. (这里的换行是为了阅读的方便)

明白了这个, 在以后需要更换 X Server 的时候就可以通过改变这个联系来实现了, 具体命令如下:

ln -sf /usr/X11R6/bin/X??????? /usr/X11R6/bin/X

其中问号代表的字母根据具体情况决定. 有些时候, 由于这个连接不正确, 导致无法运行 X Window, 这时可以使它指向 XF86_VGA16, 使用 16 色的 VGA 模式进入X Window, 注意如果需要运行 XF86Setup 程序 (是个图形界面的 X Window 配置工具程序), 那么这个 XF86_VGA16 驱动一定要存在, 这是由于该驱动所提供的显示模式
是一般显示卡和显示器都支持的, 故该配置程序使用此 X Server 为驱动. 当用户的显卡是比较特殊的型号时, 需要装特定的驱动程序, 也需要作此工作.

驱动程序的获得有多种途径, 一般的 Linux 发行版本都提供了丰富的驱动程序,可以满足大部分要求, 比较特殊的驱动程序, 可以在网上获得. 当然现在 Linux 对硬件的支持还不是很完善, 但这已经超出了本文档的访问, 不在作更多的表述.

2. 显示模式

显示模式包括分辨率, 扫描频率, 色深等等. 这也是网友在显示方面提问最多的一个问题. 对于现在的显示卡和显示器, 一般都可以使用 1024 x 768 x 16 bit 色的显示模式. 当然保险起见, 在使用下面所叙述的方法设置您所使用的显示模式的时候,请确定您的显示卡和显示器能够达到该模式的要求, 否则可能会有损坏硬件的危险.

在各发行版本中, 都会提供一些设置 X Window 的工具软件, 如 Xconfigurator, XF86Setup, XF86Config 等等, 这些程序无一例外的是提供了一个修改 X Window 的配置文件 XF86Config 的简便方法. 当然使用起来比较方便, 但是对于一些需要灵活调整的场合就不是非常适合, 需要手动调整配置文件中的参数达到最好效果. 您不必一定这样做, 这里只是介绍这样一种方法, 使您可以在有疑问的时候方便地解决.

一般这个文件是存在于 /usr/X11R6/lib/X11/ 目录下, 在 /etc 或者 /etc/X11 目录中有它的一个符号连接. 它是一个文本文件, 可以使用 vi 对它进行修改. 下面对该文件中各部分的作用做个详细的介绍. (如有遗漏, 欢迎提出)

在这个文件中有这样几个概念: 段 (Section) 和子段 (Subsection). 每个段或子段分别给出了不同的参数, 格式分别为:

Section
......
Endsection

Section
Subsection
......
Endsubsection
Endsection

一个完整的配置文件中包含六个段, 分别是 File (文件), SeverFlag (服务器特殊标志), Keyboard (键盘), Pointer (指示设备, 一般是鼠标), Monitor (监视器), Device (显示适配器, 即显卡), Screen (屏幕设置信息).

File 段: 这一段指示出一些运行 X Window 所需要的文件的位置, 比如颜色的别名文件 rgb.txt (注意这里是不需要写出该文件的扩展名), 比如:

RgbPath "/usr/X11R6/lib/X11/rgb"

如果您看过 /usr/X11R6/lib/X11/rgb.txt 的内容, 你会很容易的知道它是干什么用的. 有了它, 你可以使用 red1 代表 RGB 颜色值 255 0 0 等等.

接下来是字体文件的路径, 这里的设置将影响到中文字体的输出. 这里对路径的设置可以是多个, 例如下面的这样:

FontPath "unix/:-1"
FontPath "/usr/share/zhfont/X11:unscaled"
FontPath "/usr/share/zhfont/TTF"
FontPath "/usr/X11R6/lib/X11/fonts/local"
FontPath "/usr/X11R6/lib/X11/fonts/chinese"
FontPath "/usr/X11R6/lib/X11/fonts/TTF"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"

在使用一个字体目录之前, 需要使用 mkfontdir 命令把一条路径中的字体作个列表, 在该目录中生成 font.dir 作为对字体的索引, 如:

mkfontdir /usr/X11Ry/lib/X11/fonts/100dpi

具体该命令的用法, 请使用 man 命令查看其 man page (手册页), 或者会在本文档的后续版本中提供详细的说明.

ServerFlag 段: 这个段指明了一些具体的参数, 如下:

NoTrapSignals 这个标志将使调试信号对 X Server 不起作用. 调试信号会使 X Server "转储核心", 把内存中有关的 X Server 的信息存储到硬盘上, 即所谓的 "Core dump". 这样的目的是便于对 X Server 进行调试.

DontZap 这个标志将使 X Server 收到 "Ctrl Alt Back Space" 键组合发出的信号时 *不* 停止工作. 当然一般是不建议使用的.

DontZoom 这个标志使 X Window 不能在各种图形模式之间进行切换. X Window 的缺省状态是在用户设定了多组分辨率, 刷新频率和颜色的组合的情况下, 运行 X Window 的过程中可以通过 Ctrl ' ' 和 Ctrl '-' 两组键的组合在多个图形模式之间进行动态切换.

Keyboard 段: 这个段指明了 X Window 环境中所使用的键盘映射以及其他一些参数. 如下是作者的键盘配置:

Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5 # 指定延迟 (delay) 和 速率 (rate)
# 这里的设定分别为 500 和 0
LeftAlt Meta
RightAlt Meta # 使用左右 Alt 键作 Meta 键.
# 关于 Meta 键, 希望以后能够补充完整
ScrollLock Compose
RightCtl Control
XkbKeycodes "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "us(pc101)"
XkbGeometry "pc"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "us"
EndSection

这段设置出了 XkbLayout 会影响键盘各按键的表现以外, 其他都只是一些功能上的设置, 没有太大影响. 在控制台模式下, 可以通过 Alt F? 在各虚拟终端间进行切换, 在 X Widow 环境下, 必须使用 Ctrl Alt F? 才能够达到这一效果.

对于本段以及下面的 Pointer 段, 由于本人经验和所知的限制不能完整地讲述, 会在不久以后作进一步补充. 并在此向各位表示歉意.

Pointer 段: 如前所述, 这个段是设置鼠标等设备的. 如下举例是作者的鼠标设置:

Section "Pointer"
Protocol "PS/2"
Device "/dev/mouse"
# 下面这两个参数是一些采用磁技术的鼠标所需要的, 一般注释掉或者删除
# BaudRate 9600
# SampleRate 150
# 下面的两个参数是为方便使用双键鼠标的用户使用三键鼠标而设置的
# 当选择了虚拟三键的时候, 可以通过同时点击鼠标左右键完成中键的功能
Emulate3Buttons
Emulate3Timeout 50
# 下面这个参数也是为磁金属鼠标所设定的
# ChordMiddle
EndSection

Mornitor 段: 这个段的设置需要参考显示器的用户手册, 以便获得相关的数据, 防止损坏显示器. 这个段是我改动最多的, 现举例描述如下:

Section "Monitor"
Identifier "Samsung SyncMaster 500s/500Ms"
# 监视器标示符, 在下面 Screen 段用作标示
# 这个参数的设置对显示器的模式没有直接影响, 只要保证跟后面
# Screen 段的引用保持一致
VendorName "Unknown"
# 生产厂家的名称
ModelName "Unknown"
# 制造和型号的标示, 并不重要
# 在使用 Xconfigurator 的时候, 如果不提供上述值, 则填写 "Unknown"

# 下面这两个参数在设置显示模式上来书哦是比较重要的.
# HorizSync 是水平扫描频率, kHz 为单位.
HorizSync 50-60
# VertRefresh 是垂直扫描频率, Hz 为单位
VertRefresh 80-100
# 上面这两个参数可以是列举的形式, 也可以是范围的形式. 比如: 列举: 75 85 100 范围: 如上所述

# 接下来是模式的描述了, 如果您使用的是 TurboLinux 或者是
# RedHat Linux, 下面的模式列表将会非常的完整. 但 Slackware 没有提供完整的列表, 这些数据可以在显示器的说明书上见到. 为节省空间, 这里仅列举一条
# 800x600 @ 85 Hz, 55.84 kHz hsync
Modeline "800x600" 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
# 或者写成以下形式, 为 Slackware 采用
# Mode "800x600"
# DotClock 45
# HTimings 1024 1048 1208 1264
# VTimings 768 776 784 817
# Flags "Interlace"
# EndMode
Endsection

这里来讲讲上面的 ModeLine 的涵义. 就象第二种形式所描述的那样, 这些参数是使用 "800x600x85Hz" 模式所需要的. 要设置显示为这种模式, 首先要保证水平扫描频率和垂直扫描频率要配合好, 即 VertRefresh 的范围或列举值中要包括 85 Hz, 而 HorizSync 的值需要包括 55.84 kHz. 这些都可以通过手工调整. 然后需要看看打点频率. 有些显示器有这个参数提供, 而另外一些可能检测不到, 这时需要查看手册. 打点频率的值可以不提供, 这点在下面会有讲述.

注意, 这里的 "800x600" 就是这种模式的标示. 等到下面谈到模式的设置顺序就会清楚 X Window 是如何设置的了.

Device 段: 这里主要记录了显卡的数据, 如下可以看到, 很简单, 只有显存的大小和显卡的时钟频率. 这个时钟频率是用来产生视频信号, 而显示器的扫描频率也是根据这个信号产生的. 所以不要为了追求高分辨率和高刷新频率把它调得太高, 否则可能会损伤显示器. 一般在显示器的说明书上会有这个值,如果没有, 建议不要超过 50.

Section "Device"
Identifier "Generic VGA"
VendorName "Unknown"
BoardName "Unknown"
Chipset "generic"
# VideoRam 256
# Clocks 25.2 28.3
EndSection

注意: 上面所说的两个段都可以对多个设备进行描述, 系统会用 Identifier 的值区分不同的设备.

Screen 段: X Window 的显示模式的选择就是记录在这个段中的. 如果是 RedHat 则会有所有四种 (Mono, VGA16, SVGA, Accelerate) X Server 的段, 如果是 Slackware, 则可能会只有一个段, 就是对应安装系统的时候指定的显示设备的.

下面以我使用的 accel X Server 说说各字段的涵义.

Section "Screen"
Driver "accel"
# 这个不用解释了吧, 是 Permedia II 显卡, 所以使用加速的驱动
# 这里的可能值是"vga2", "vga16", "svga", "accel", 根据自己的实际情况设定. 这里跟前面讲 X Server 时所说的 X 的连接目标有关系, 我想这不难连接吧.
Device&nbs, p;"3DLabs|Permedia II 2D 3D"
# 上面制定的显卡配制, 用 "3DLabs|Permedia II 2D 3D" 作为 Identifier 的. 当然我可以使用自己喜欢的名字, 实际这里只是个标记的作用
Monitor "Samsung SyncMaster 500s/500Ms"
# 这里的解释同 Device, 也是使用上面的 Identifier 的设定值
Subsection "Display"
# 显示子段, 可以有多个, 分别对应不同的色深, 即下面的 Depth
Depth 16
Modes "800x600"
# 所取的显示模式 这个值就是根据前面的 ModeLine 上面的注释写的, 可以有多个, 用空格分开
# 这里需要说明的是, X Server 先检查这里的分辨率设置, 然后根据这个设置和上面标示的垂直和水平刷新频率决定使用哪个 ModeLine, 如果在刷新频率的范围内有多种 Mode 可以选择, 那么可以通过使用 Ctrl ' '/'-'进行动态切换.
ViewPort 0 0
# 这个是视图的左上角坐标如果想用虚拟大小的屏幕, 可以在这里加上一句
#Virtual 1024 768
# 这样的话, 就可以使用大于当前实际屏幕的虚拟屏幕了, 屏幕会随这鼠标的移动而转换. 当然, 要保证有足够的显存才行,&


上一篇:μClinux嵌入系统中外部硬件设备的快速调试方法 下一篇:Linux经典实用的使用技巧33则