LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 19774|回复: 12

Slackware官方文档翻译

 关闭 [复制链接]
发表于 2004-10-24 13:25:08 | 显示全部楼层 |阅读模式
第八章结果
我的linux,英语和语文都不是很牛,所以有错误的地方大家来一起修改,有些地方也没有翻译过来,大家一起翻译一下吧


第八章.Shell

目录
用户
命令行
Bourne Again Shell(bash)
虚拟终端
小节

    在一个图形界面环境下,接口是由一个可以创建窗口,滚动条,菜单等的程序提供的.而在一个命令行的环境下,用户接口是"shell"提供的,shell解释命令且通常使电脑上的东西可以运行.在登陆(本章将做说明)之后,用户会被立即放置到shell程序中,并通过shell来做他们想做的事情.本章将对shell--Bourne Again Shell(bash),Linux用户普遍使用的一种shell--做以介绍.如果想得到关于本章的更多详细的信息,请查阅帮助页bash(1).

用户

登陆

当你的电脑启动之后,你会看到类似如下的字符提示:

   Welcome to Linux 2.2.14
   darkstar login:


##这一段有关什么四维通道的翻译不是很准确
##Hmm.. nobody said anything about a login. And what's a darkstar? Don't worry; you probably didn't accidentally fire up a hyperspace comm-link to the Empire's artificial moon. (I'm afraid the hyperspace comm-link protocol isn't currently supported by the Linux kernel.) No, darkstar is just the name of one of our computers, and its name gets stamped on as the default. If you specified a name for your computer during setup, you should see it instead of darkstar.
恩..没有人提起过关于登陆的任何事情.那么这里的darkstar是什么意思?不必担心,你根本没有偶然的打开一个通向帝国人造月球的四维通道.(恐怕目前linux的内核还不支持多位空间连接协议),darkstart只是你的计算机名字而已,而且他是默认的计算机名字,如果在安装过程中你给你计算机起了一个名字,那么darkstart将被你起的名字替代掉.


对于登陆么...如果这是你的第一次登陆,你将会以root用户的身份登陆,然后系统会提示你输入密码.密码一般在安装时候设定,如果你没有设定密码那么只要按enter键就可以了.好了--你已经登陆成功了!

Root:超级用户

root是什么,又在你的系统上做些什么?
恩,在Unix和类Unix(如linux)的操作系统里,有很多使用者所以有了用户的概念.本章的后面部分将对此做详细的介绍,你现在仅仅需要知道的是root是高于其他用户的一个用户,root是无所不能,无所不知的,没有人可以不服从root.所以我们不得不正确的称root用户为"超级用户".更好的是你现在就是root.

是不是很酷?

如果你不确定:是的,那样的确很酷.但是我们忽略了一些问题,root可以随心所欲的破坏任何东西.你可以先跳到12章去看看如何添加一个用户,然后我们以一个普通用户登陆,回到这里,继续我们的学习.为了减小root的破坏力,只有在必要的时候才使用root用户是一个明智的办法.

顺便一提,你可以很轻易的从任何一个用户变为root用户,只需使用su(1)命令.输入密码后你将获得root身份,直到你使用命令exit或者logout.只要你知道其他用户的密码你也可以使用su命令变成其他用户的身份,比如:su logan,你将使用我的帐号登陆.

命令行

运行程序

##这一段实在翻译不出来
##It's hard to get much accomplished without running a program; you might be able to prop something up with your computer or hold a door open, and some will make the most lovely humming noise when running, but that's really about it. And I think we can all agree that its use as a humming doorstop isn't what brought the personal computer the popularity it now enjoys.


还记得linux下所有东西都是文件么?程序也是如此.你运行(不是shell的内部程序)的每一个程序都是你电脑上某个地方的一个文件.你可以通过指明程序的详细路径来运行它.

举个例子,还记得上一节我们使用过的su命令么?实际上它位于目录/bin下:/bin/su也可以让su运行起来.你可能会问为什么只输入su也可以运行?我并没有指明su是在/bin这个目录下啊?su也有可能在/usr/local/bin这个目录下,不是么?shell是怎么知道su到底在哪里的呢?答案是"ATH环境变量".大多数shell都会有PATH这个变量,或与之类似的变量.PATH主要由一系列包含可执行文件的路径组成,当你运行run的时候,shell会自动到PATH的目录去寻找那些名字为su的可执行文件,而且只运行它第一个查找的文件.如果你不表明路径,程序就会按如上的方法运行,如果你的到了一个"Command not found error(无法找到该命令)"的错误提示,就意味着你的命令不再PATH的目录列表里.(当然了,也可能那个程序根本就不存在).我们将在Bourne Again Shell(bash)一节中更深的讨论有关环境变量的问题.

你要记住,符号"."是一个你所在目录的缩略表示方法,如果你在/bin下,./su也就是一个完整的路径:/bin/su

通配符匹配

几乎任何一种shell都存在这样一种替代或缩写用的字符,这些字符表示他们所在的位置可以是任何东西字符串.这样的字符被称为通配符,最长使用的是'*'和'?'.一般来说,'?'通常匹配任何单个字符.举个例子,假如你所在的文件夹里面有这样三个文件:ex1.txt,ex2.txt,和ex3.txt.你想同时把这三个文件(使用cp命令,第十章将做介绍)拷贝到另外一个文件夹,如,/tmp文件夹.如说使用:cp ex1.txt ex2.txt ex3.txt /tmp 这样拷贝的话好像有些太麻烦.如果这样的话:cp ex?.txt /tmp就简单多了,这里的'?'匹配所有字符,如'1','2','3'或其他的字符.
什么?你还是觉的这样很麻烦?你是对的.那样太骇人听闻了,我们有劳动法保护我们免做那样的事情.幸运的是,我们还有'*'.就像我们上面提过的,'*'可以匹配任意数量的字符,包括没有任何字符的情况.所以像上面的例子,如果你的文件下面只有那三个文件,那么可以使用cp * /tmp,一步到位!假如文件下面还有一个叫example.txt和hejaz.txt的文件.我们想拷贝example.txt文件,但是不想拷贝hejaz.txt文件,这样可以使用cp example* /tmp.
cp example?.txt /tmp这个命令将只能得到原来的三个文件,因为文件下面没有匹配'?',所以example.txt将不会被拷贝.

输入输出重定向和管道

(下面要讲的东西很酷了!)

$ ps > blargh

你知道上面的命令是什么意思么?我使用ps命令来查看当前运行的程序,ps命令在第十一章介绍.这个命令没有什么酷的地方,酷的是后面的部分" > blargh",这个部分的意思是将ps命令的输出写到一个名字为blargh的文件中.但是等等,下面的更酷

  $ ps | less

这个命令将ps的输出通过"管道"传给less命令,这样我就可以使用滚屏来看.

$ ps > > blargh

这是第三个最常使用的重定向命令,这个命令中的>>和>基本相同,不同点是>>会检测并报告blargh文件是否存在,如果存在就在原文件追加新的内容,如果不存在>>会像>一样创建一个文件.(使用'>'会覆盖原来的文件)

还有一个'<'操作符,用来从文件中读入输入的数据,但是这个符号不经常使用.

$ fromdos < dosfile.txt > unixfile.txt

如果你把他们叠起来的话会更有趣

$ ps | tac > > blargh

这个命令将运行ps,颠倒输出的每一行然后将结果写入blargh文件中.你可以叠加更多的命令,但要记住他们的解释顺序是从左到右的.

你可以通过帮助页bash(1)得到更多的有关重定向的信息.

Bourne Again Shell (bash)

环境变量

Linux系统是一个复杂的怪物,有很多东西你需要明白,这些细节的东西在你和不同程序交互过程中起到作用(一些你可能根本不需要知道的东西).没有人希望在运行每个程序时都传递一些基本的参数,如终端如何使用,计算机名,提示符风格...

所以我们有了一个拷贝机制的环境.环境定义了程序运行的条件,这些条件中有些是可以改变的变量
##这一句也翻译不好
##The environment defines the conditions in which programs run, and some of this definition is variable; the user can alter and play with it, as is only right in a Linux system.
几乎所有的shell都有环境变量(如果没有,那么那种shell可能不太好用).我们下面将给出一个在命令行下操作环境变量的命令概述.

$ set

只是用set命令时,系统将返回所有的变量和他们的值.像其他的大多数的bash内置,他也可以做一些其它的事情(加参数);你可以查看bash(1)去看更详细的介绍.下面是我的电脑上set命令的部分输出.

   PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
   /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
   /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
   PIPESTATUS=([0]="0")
   PPID=4978
   PS1='\h:\w\$ '
   PS2='> '
   PS4='+ '
   PWD=/home/logan
   QTDIR=/usr/local/lib/qt
   REMOTEHOST=ninja.tdn
   SHELL=/bin/bash

我们可以看到先前提过的PATH变量,我可以直接用文件名运行任何包含在PATH变量的路径下的文件.

$ unset VARIABLE

unset将删除一个变量,包括变量值和变量名,而且是永久性删除.(不必担心.除非你那个部分明确的定义,变量可能被其他程序重新定义<Don't worry. Unless it's something you explicitly defined in that shell session, it'll probably get redefined in any other session>)

  $ export VARIABLE=some_value

export很简单,你可以使用他来把环境变量 VARIABLE 的值设为 "some_value";如果VARIABLE不存在则创建,存在将覆盖以前的值.这样有些时候并不是很好,比如你想增加一个路径PATH变量中,你可能要按下面的方法来完成

$ export PATH=$PATH:/some/new/directory

注意到我们使用了$PATH,把一个$放到PATH前面来解释PATH的值.例如,echo $PATH将返回PATH的值,我的电脑上就应该显示:

$ echo $PATH
   /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
   /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
   /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin

tab键补全

(这里又有一些很酷的东西了)

1.命令行意味着要打很多字.
2.打字是一种工作.
3.没有人喜欢工作.
从2,3中我们可以推断4:没有人喜欢打字,幸运的是,bash把我们从结论5(没有人喜欢命令行)中解救出来.

你可能会问bash何德何能?bash除了通配符扩展外,还有一个tab键补全的功能.

我们来看看tab键补全是如何工作的:比如你想打一个文件的名字,可能他在你的PATH变量的路径中,你可能将名字完整的打出来,其实你只需要打出文件名不同于其他的文件名的部分然后按tab键,bash将自动补全整个文件名.

我们来检测一下./usr/src 下面有两个子目录:/usr/src/linux和 /usr/src/sendmail,我想看看/usr/src/linux目录下面的东西,我输入 ls /usr/src/l,然后按tab键,bash将把命令补全为ls /usr/src/linux

如果现在有这样两个子目录/usr/src/linux 和 /usr/src/linux-old,如果我输入/usr/src/l后按tab键的话,bash将补全尽可能多的字符,所以我们将的得到这样的结果:/usr/src/linux.我们可以在这里停下来,或者我们在按一下tab键得到符合目前的字符串的所有路径,

因此,大大减少输入的内容(而且因此,人们喜欢命令行终端).所以我说他很酷的!

虚拟终端

当你正在执行某个程序的时候,你发现你又需要做一些别的事情,你可能中断当前的程序,去做你要做的事情,但是linux不是一个多用户系统么?你不是可以同时等录n次么?那么为什么你只能同时做一个事情那?

你可以同时做多件事情的.我们一台机器不可能有多个键盘,多个鼠标和多个显示器;幸运的是,也没有必要有.我们不是通过硬件来解决这个问题,那么这个问题只能由软件来解决.Linux通过"虚拟终端"简称"VTs"来解决这个问题.

你可以通过按Alt和一个功能键在虚拟终端之间切换;每一个功能键对应一个控制台.Slackware默认有6个虚拟控制台.如,Alt+F2你将切换到第二个终端,Alt+F3是第三个等等.

其余的功能键被X sessions占用.每一个X session用户拥有自己VT(虚拟终端),从第七个(Alt+F7)到最后.当你在X中时,由于Alt+功能键可能会冲突,因此我们用Alt+Ctrl+功能键来替换,所以你要从X切换回一个字符登陆界面而不退出X session的话,Ctrl+Alt+F3将切换到第三个控制台.(如果你使用第一个X session的话,可以用Alt+F7将切换回X)

小节

这一章我们讨论了用户,shell,命令行和虚拟终端.你可能可以很顺利的使用命令行工作了:运行程序,使用重定向来组合命令等.最后,你应该对root这个超级用户有一些了解并牢记一直使用root不是一件好事情.
发表于 2004-10-30 00:13:36 | 显示全部楼层

第五章翻译结果,有错误大家指正

第五章 网络配置

内容
网络硬件
网络工具
/etc目录的文件
rc.inet1
rc.inet2
NFS(Network File System 网络文件系统)
tcp_wrappers
总结

一、网络硬件

  就像用计算机做其他大多数有趣的事情一样,要让计算机连接到网络上,你就必须使用一些特殊的硬件。

  你需要一个NIC(Network Interface Card 网卡)来连接到一个LAN上,或者一个Modem来连接到Internet供应商那里,或者你两者都需要(也可能每种都要几个,甚至都不需要)。

  为了配置的目的,我们将这些硬件分成两类:PCMCIA(本本族专用的)和非PCMCIA。使用这样不对称的分类的是有原因的,因为目前发布的内核都不支持PCMCIA,你只能通过一个另外的包(比如内核模块)来支持它,其中包含必要驱动程序和一些配置管理软件。而其他的硬件则可以由发布的内核来直接支持。

1. netmods

  内核支持的网络设备的驱动在netmods包中(slackware/n3/netmods.tgz)。如果你没有安装这个包,那你现在就应该把它装上。(关于包的安装请参见第十六章)

  开机时要装载的内核模块保存在/etc/rc.d目录下的rc.modules中。默认的rc.modules文件包含有一个“Network device support”的部分。如果你打开这个文件察看这一部分内容,你就会发现代码首先检查/etc/rc.d下的rc.netdevice文件。如果setup在安装过程中成功的检测到了你的网络设备,这个文件就会被创建。一般如果它存在,那么你很可能不会来读这不分内容(呵呵,有没有悖论的感觉?);反之,继续读吧。

  在那个“if”块下面是一系列的网络设备和modprobe命令,但是每个都被注释掉了。找到你的设备,然后去掉相应的modprobe的注释,最后保存文件。现在用root运行rc.modules就会装载你的网络设备的驱动程序了(当然同时也会加载其他没有被注释掉的模块)。注意有些模块(比如ne2000的驱动)需要参数,你必须选择好有正确参数的那行。

2. PCMCIA网络设备

  PCMCIA网络设备应该比其他设备更加简单。首先你必须确保安装了pcmcia包(slackware/all/pcmcia.tgz)。(关于安装可以参见第十六章。)安装过程中,pcmcia包会在/etc/rc.d下创建一个rc.pcmcia文件,同时创建一个/etc/pcmcia目录,并且把驱动安装到/lib/modules/<kernel version>/pcmcia目录。pcmcia包Cool的地方在于它会自动检测设备的插入和卸载。你应该可以在插入设备的时候听到系统发出“滴”的一声,这表明需要的模块被载入了。如果你卸载了这个设备,则相应的模块也会被自动的释放。

  不幸的是,如果你编译了一个新版本的内核,你很可能需要重新编译pcmcia-cs来更新这些驱动。当然,源代码是包含了的;在source/a/pcmcia目录下有源代码,脚本以及相关的帮助文档。

二、网络工具

1. ifconfig

  现在你的内核总算可以和你的网络硬件对话了,剩下的就是软件需要一种方法告诉内核把信息传过来,如此等等。我们需要对接口进行配置。我们需要ifconfig(8)。

  学习ifconfig的最好方法恐怕莫过于实例。你可以看看rc.inet1文件(在rc.inet1节中有介绍)来学习一下。下面举个最简单的例子:

  # ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 \
  netmask 255.255.255.0

  该行命令启动了eth0(第一个网卡,对于令牌网使用tr0,ppp使用ppp0,……),并设置其IP为192.168.1.10,其广播地址为192.168.1.255(整个192.168.1子网),其网络掩码为255.255.255.0(表示IP前面三个部分用来标识网络,最后一个部分,即.10,用来标识主机)。除非你要做一些特别的事情,你通常都可以使用IP的前三个部分加上一个255来表示广播地址。通常掩码设置成255.255.255.0都是没错的。其实如果你要做一些特别的事情,你基本上在这方面已经有足够的知识了,于是这些话就基本上成了废话

  ifconfig也可以用来查看当前的网络配置。当你不带参数的运行这个程序,你就能得到你当前所有的网络接口及其配置。

2. route

  内核通过维护一个路由表来决定网络数据该发向哪里。这里我不打算仔细探讨细节方面的内容,只是告诉你可以使用/sbin/route(8)来查看当前的路由表。route -n将会用IP地址代替所有的主机名称,这在DNS服务器出故障或者你对主机名不感兴趣的时候很有用。幸运的是,如果你进行了一个简单的网络安装过程(大多数人都做过),那么2.2的内核自动帮你创建一个必要的路由表项。

3. netconfig

  netconfig是Slackware安装程序的一部分,但就像大多数安装程序的组件一样,它可以单独运行。netconfig很直观,它会引导你建立一个基本的网络连接。当你对网络配置的那些rc文件不熟悉的时候,这个工具非常有用。运行netconfig的时候,你会看到下面的屏幕提示:

netconfig.gif

  下一步,netconfig会提示你输入计算机的主机名和域名。一般你可以随便设置这两个名字,除非你设置的机器是一台服务器或者是一台很多人都会访问的机器。然后,netconfig会问你如何分配IP:使用静态IP(static IP),DHCP或者仅仅环路(loopback)就可以了。

netconfig.setupip.gif

  如果你的机器不与网络连接,那么直接选择环路就可以了。如果你的计算机要和一个大学或者一个大的办公网络相连,一般你应当选择DHCP。其他情况则选择静态IP。如果你没有选择静态IP,那么设置工作到现在已经完成了。否则你还要接着输入计算机的IP地址、网络掩码、广播地址以及DNS服务器地址。netconfig会告诉你如何得到所有的这些数字的。

4. pppsetup

  Slackware包含了配置拨号连接用的pppsetup。该软件包位于N软件系列中的ppp.tgz中。pppsetup使用的界面和setup程序相同。如果你不记得怎么使用这个界面,你可以参考前面第三章的“setup程序”一节。pppsetup通过一系列的问题来为你配置好/etc/ppp目录下的几个配置文件。以root运行pppsetup,我们来看一下这些问题:

pppsetup.gif

电话号码

  第一个问题是ISP电话号码,你同时应该将拨号方式写在前面。大多数人使用音频拨号(tone)。如果你ISP的号码是555-1013并且使用音频拨号,那么你就应该在对话框输入atdt5551013。

pppsetup.phonenumber.gif

  如果你的电话线需要接电话,而你希望在上网的时候屏蔽掉外来的电话,那就应该输入类似atdt*70,5551013的东西。

  注意逗号不可省略,它会在*70后维持一个1.5秒的停顿,然后再拨号。没有逗号是不行的。(译注:不知道在国内到底有没有用)

调制解调器(Modem)

  下一步,选择Modem的位置。如果你知道在Windows下使用的是哪个COM接口,你在这里选择同样的就可以了。否则你可能要做些尝试。推荐的办法是从ttyS0开始往下逐个尝试。

pppsetup.modem.gif

Modem的波特率(baud rate)

  下一步,选择最与你的Modem最接近波特率。如果你不知道,你可以在Modem的盒子或者所带的文档中找到它。每个选项都有几个例子,所以应该不难找出正确的那个。

pppsetup.baudrate.gif

回拨

  现在你应该用上你的ISP给你的信息了。其实很少有ISP使用回拨,所以你一般都可以选择“NO”。回拨是指你拨了ISP以后,他们拨你的号码让你登陆。(译注:电信就不指望了,真这样的话电话费可以省了

pppsetup.callback.gif

  如果你确实要使用回拨,那你就应该选择“YES”。然后配置程序会提示你输入你的电话号码、登陆的用户名以及密码。你可以先不输入用户名和密码。最后,你还要输入你的ISP使用的认证方式。如果他们使用CHAP或者PAP,那么选择“YES”。你以后还会需要配置他们,这个一会再说。如果ISP不用这两个,那么选择“NO”,然后参考下面的“Chat脚本”那个部分。

Modem的初始串

  除非你使用的是一个很另类的Modem,你一般都可以直接按回车来选择默认的初始串(“AT&FH0”)。不然你就得翻出你的Modem的说明书了。

pppsetup.initstring.gif

域名

  现在你需要输入你的ISP的域名了。这部分内容一般类似于“example.net”,“slackware.com”等等。(好吧,肯定不是slackware.com

pppsetup.domain.gif

DNS的IP地址

  你的ISP应该会给你提供他们的DNS服务器的地址。你如果已经有了的话直接填到方框里就行了,否则你应该去ISP那里问一下。

pppsetup.dns.gif

认证方式

  这个问题可能也需要一些尝试才能完全搞定。你需要搞清楚你的ISP到底使用的是哪种认证方式:CHAP?PAP?还是其他?最简单的办法就是直接给他们打电话。然而如果你连接以后出现了login和password的提示,一般你应当选择“SCRIPT”,否则还得去问ISP。

pppsetup.authentication.gif

PAP或者CHAP

  如果你的认证方式选择了“PAP”或者“CHAP”,程序会提示你输入用户名。你的ISP应该已经给了你一个用户名,如果还没有,那赶快去找他们,肯定是什么地方出问题了。

  然后你应该在接着的一个对话框输入ISP给你的密码。

Chat脚本

  如果你选择的是“SCRIPT”,你将会看到一个相当长的关于chat脚本的说明。仔细阅读,因为它把所有的东西都说的很清楚了。基本上来说,脚本要求你描述的是ISP将会发给你的信息内容以及你的计算机应当回应的信息内容。

  然后你会进入一个循环,你将不断的输入ISP将会传过来的信息以及你的计算机应该发回的信息。一旦你完成了,只要在一个空的输入框直接按回车,程序就会结束输入。

结束

  终于,你将看到最终生成的ppp配置文件了。其实现在你并不能对这些文件做什么修改,但是你至少可以大致察看一下是不是所有的内容都对了。最后按回车保存配置并退出pppsetup。

  这个屏幕其实也包含了很多关于如何建立和断开连接的信息。最基本的原则是这样的:在root下运行ppp-go是建立连接,一旦你看到了一个本地IP和一个远程IP,那么连接就已经建立了。而ppp-off则会断开连接。

pppsetup.done.gif

三、/etc目录的文件

1. /etc/inetd.conf

  在网络中心的一个操作系统上,同时运行许多服务是不明智的。一般来说对于每个服务,都要有一个对应的程序在某处监听外来的连接,这对一个支持很多服务的服务器来说是一个沉重的负担。而inetd正是为了减少这种负载而创造出来的。inetd其实就是一个“互联网超级服务器(internet superserver)”,它同时监听多个服务,每当收到某个服务的连接请求,inetd就运行相应的服务程序来处理。这样,本来的很多等待连接的服务程序就减少到了一个。

  /etc/inetd.conf是inetd的配置文件。其中指定了连接和服务程序的对应关系。inetd(8)的man文档对此做了详细的描述,但我们还是要来看一下基本的内容:

  ftp  stream  tcp  nowait  root  /usr/sbin/tcpd  wu.ftpd -l -i -a

  这行指定了ftp服务器的配置。注意行的开头是协议名称(“ftp”),行末则是要响应这个连接而运行的命令。在这里,这个对应的服务程序是/usr/sbin/tcpd。这是一个“包装”程序,用来为被包装的程序提供一些基本的安全措施。wu.ftpd则是我们真正的ftp服务程序,只不过被tcpd包装过了,真正的调用由tcpd来进行。关于tcpd的更多信息可以在“tcp包装器”一节中找到。

  就像许多其他系统文件一样,inetd.conf中的注释行以#字符开头。你可以简单的以此来加入或者取消某些服务,然后重新运行inetd就可以了。

2. /etc/resolv.conf

  这个文件用来告诉系统到哪里进行DNS查询。机器用到的所有的DNS服务器都在这里列了出来,同时主机的域名也是在这里指定的。下面是resolv.conf的一个例子(这是从我正在用的笔记本上弄下来的,主机名和域名是ninja.tdn):

  domain tdn
  nameserver 192.168.1.1
  search tdn. slackware.com

  第一行指定了ninja的域名,这是紧跟在主机名后面的东西。第二行就是我们局域网的DNS服务器。在这里你可以同时指定多个DNS服务器,需要域名解析的时候系统会逐个尝试。

  最后一行比较有趣。它假设了我的系统中默认的域名。举个例子,我有两台机器分别叫做zuul.tdn和hejaz.slackware.com,那么我可以直接ping zuul和ping hejaz来ping这两台机器。对于“zuul”,ping程序会首先尝试在后面加一个域名“.tdn”,然后就找到了这台机器。而对于“hejaz”,ping程序在尝试“hejaz.tdn”失败后,就会继续尝试“hejaz.slackware.com”。注意在search这一行上,所有的域名(除了最后一个)都要以一个“.”结尾。如果只有一个,因为它是最后一个,所以不必加“.”。

3. /etc/hosts

  hosts文件是一种简单的域名解析机制。该文件列出了主机名和它们对应的IP。这在小型网络(没有必要使用DNS)或者DNS出问题的时候都很有用。在系统启动的时候,由于DNS不可用,系统对域名解析采用的就是这种机制。我机器上的hosts文件是这样的:

  127.0.0.1  localhost
  192.168.1.32   ninja.tdn ninja

  第一行是本机地址(译注:这就是为什么localhost可以用来代表本机的原因)。实际上你可以给一个IP地址对应多个名称,用空格隔开它们就可以了。因此,在第二行,我就把“ninja.tdn”对应成了192.168.1.32,同时我还把“ninja”也写上了,这样在我偷懒直接输入“ninja”的时候该条就会被用到。

四、rc.inet1

  /etc/rc.d/rc.inet1文件用于设置网络的一些底层方面的内容——初始化设备、设置地址和路又表。Slackware中的rc.inet1有很详细的注释,这里不在赘述。

五、rc.inet2

  /etc/rc.d/rc.inet2用于设置网络的其他内容:运行服务和守护进程,并处理所感兴趣的网络选项。下面列出一块代码作例子:

  # Start the NAMED/BIND name server:
  if [ -f ${NET}/named ]; then
     echo -n " named"
     ${NET}/named -u daemon -g daemon
  fi

  这里重要的一行是第四行,用于运行named(8)程序。其余部分格式基本是固定的:“if”语句检查named程序是否存在,echo那一行在系统启动的时候把要运行named程序的这个消息打印到屏幕上。你会发现rc.inet2中的大多数服务都是以这样的语句块运行的:检查是否有明显的不该运行该程序的原因,然后显示一个运行该程序的消息,最后是运行该程序的实际命令。rc.inet2也被详细的注释过,你可以马上打开看一会。

六、NFS(网络文件系统)

  网络文件系统的目的显然是要在网络上共享不同机器上的文件。NFS最酷的部分在于它能够使用户在一台机器上直接mount另一台机器的共享文件夹,然后用户可以直接把它看作本地的文件。

  这种透明性的实现建立在以下两个基础上。第一,服务器上必须有相关的服务运行:portmap(8)、nfsd(8)和mountd(8)。第二,服务器必须显式的指出准备把哪些文件共享,这一步通过/etc目录下的exports(5)文件完成。

  对于第一个部分,只要安装好tcpip1.tgz,rc.inet2就会帮你搞定剩下的事情。/etc/exports则比较有趣。

  假设在battlecat.tdn上有一个图片目录,而我想把它mount到ninja.tdn。在battlecat上,我们需要在/etc/exports里加上类似这样的一行:

  /var/media/images   ninja.tdn(ro)

  于是在ninja上,我只要输入如下命令就可以把这个图片目录mount到本地的/mnt了:

  # mount -t nfs battlecat.tdn:/var/media/images /mnt

  不幸的是,这样一来我就没有了对这个共享目录的写权限——battlecat的/etc/exports中有“(ro)”选项,表示只读。所有类似的选项都应该放在客户端的名称后面,并且放置在一个括号里,不同选项间用逗号隔开。比如:

  /var/media/images   ninja.tdn(rw,no_root_squash)

  “rw”显然是可读可写的意思——根据用户和组的映射(详细解释见exports(5)相应的man页面),ninja上的用户可以得到写权限。我不喜欢squash,所以留到man里面解释吧。如果你想用NFS做很多事情,exports(5)会给你带来很大的方便。

七、tcp_wrapper(TCP包装器)

  tcp_wrapper是这样一套基本系统,它可以用来禁止(或者显式的允许)特定的主机对某些服务的访问。简单的说,它的工作原理是这样的:

  inetd(internet super-server)运行很多的服务,其中很多都是由tcpd包装好的。换句话说,tcpd是真正运行这些服务的程序,但是inetd不知道这些(其实它根本不关心)。tcpd根据/etc/hosts.allow和/etc/hosts.deny来判断是否允许传来的连接请求。

  这些文件中的规则可以很复杂,我们假设pyramid.tdn确实很讨厌,根本不让我们可怜的mojo.tdn安静一下。于是mojo.tdn可以这样设置/etc/hosts.deny:

  ALL: pyramid.tdn

  这行的意思很清楚:通过tcpd的保护阻止pyramid使用mojo上的所有服务。除此之外,如果你还想禁止某个域名的所有主机,那么应该这样写:

  ALL: pyramid.tdn, .annoying.domain

  但是等等!我哥们儿Hobbes的机器域名也是.annoying.domain,我不想让他被阻止(我只是不想他之外的那些烦人的人来访问)。这也很简单,我们不动前面的hosts.deny,而是把Hobbes加到hosts.allow中:

  ALL: hobbes.annoying.domain

  更多的细节可以察看tcpd(8)、hosts_access(5)和hosts_options(5)。实际上tcp_wrapper系统比上面所说的更加灵活,并且很值得进一步的研究。

八、总结

  在本章中,你学到了如何配置你的系统,使之连接到网络上,如何配置文件,以及一些基本的安全原则。除此之外,你知道了什么是NFS以及如何配置它。一旦你的系统成为了网络的一部分,你就可以访问网络上的各种资源:邮件、新闻和网页。如果你想知道基本网络程序的更多知识,请参见第十三章。
发表于 2004-12-27 18:48:38 | 显示全部楼层
题目:Preface——前言
作者:chendy
创建日期:2004年12月27日
最后更新:2004年12月27日
版权:GPL
正文:
                【前言】
        Slackware Linux操作系统是一个基于Intel构架计算机上的强大平台。它的设计目标是稳定、安全,同时可作为高端服务器和强大的

工作站。
        这本书的目的是指导如何你开始使用Slackware Linux操作系统。这并不意味着简单面面具到地覆盖该发行版的所有细节,而是显示

它能作什么并告诉你操作该系统的基本知识。
        在你有了Slackware Linux的使用经历后,我们希望你能将本书作为手边的参考。我们同样希望当你的朋友们问到“你所运行着的酷

毙了的Slackware Linux操作系统”时你会将本书借给他们。
        然而这部书也许不是符合你口味的小说,我们依然会试着尽量使它有趣。运气好的话,我们也许会理出一个电影主题,当然我们也希

望你能从中学到东西并觉得它有用。
        好了,请看下文。
                【书中使用的约定】
        这本书是用SGML用DocBook 4.0 DTD写成的。因此,我们使用内建DocBook元素来表示文件参考,命令参考,以及文件内容参考。这为

书中的所有方面提供了统一的形式。在你继续以前你需要熟悉一下一些我们的约定。
        任何时候我们提到你要运行一条命令时,它将看起来像这样:
                        command
        在很少见的场合,一条命令可能会超过本书一行的长度。当那种情况发生时,我们将该命令换行到下一行并使用一个反斜杠标明命令

继续。这是一个例子,来自书中稍后的内容:
                        ifconfig eth0 192.168.1.10 broadast 192.168.1.255 \
                        netmask 255.255.255.0
        文件名和目录将被提及贯穿于全书。它们将看起来像这样:
                        filename
                        directory
        许多屏幕的命令输出和配置文件的内容也同样在书中使用到。它们将以这样的形式出现:
                        command output
        许多时候当我们列出你将运行的命令时,我们会以一个示例命令符来显示它们。当一个命令需要以普通用户的身份来运行,我们将显

示美元符($)为命令提示符。当一个命令需要以根用户的身份来运行,我们将显示井号(#)为命令提示符。

(正文完)
发表于 2005-4-21 08:30:05 | 显示全部楼层
题目:第七章.引导
作者:chendy
创建日期:2005年4月19日
最后修改:2005年4月20日
正文:
                第七章        引导
目录:
LILO
LOADLIN
双重引导
小结

        引导你的Linux系统的过程有时候简单,有时候复杂。很多用户在他们的计算机上安装Linux仅此而已。他们只需打开电源,系统就准备好并开始使用。然而,对于其他人会因为特定的任务而使用另外的操作系统,因此他们需要机器上两个操作系统均可访问。
        这一节包含了使用LILO和Loadlin,Slackware包含的两个引导器。同时也说明了某些典型双系统引导情况和如何开始设置。

                LILO
        Linux Loader或LILO,是在Linux系统中使用的最流行的引导器。它易于配置并很容易地用于引导其他操作系统。
        Slackware Linux自带了一个称为liloconfig的菜单驱动配置工具。这个程序在安装过程中首次运行,但你可以随后通过在命令提示符下输入liloconfig来调用它。
        LILO从/etc/lilo.conf文件读取它的设置。不是每次启动都会读取它,而是每回在你安装LILO的时候读取。每次你对配置做了修改都必须重新安装LILO到引导区块。liloconfig将帮助你生成配置文件这样你就可以为你的系统安装LILO。如果你偏好手动编辑/etc/lilo.conf,那重新安装LILO只需在命令提示符下输入/sbin/lilo。
        你首次调用liloconfig时,他看起来将会像是这样:
                插图 7-1.liloconfig初始屏幕
        如果这是你第一次设置LILO,你最好选择“simple”。另外或许你会发现“expert”会更快如果你熟悉LILO和Linux的话。选择“simple”将开始LILO的配置。
        如果内核帧缓冲支持已编译到你的内核中,liloconfig将询问你想使用哪一种视频解析度。该解析度也会被XFree86帧缓冲服务器使用。如果你不想让控制台运行于一个特定的视频模式,选择normal将继续使用标准的 80x25 文本模式。
        插图 7-2.Liloconfig询问使用哪种视频模式的帧缓冲
        LILO的配置的下一部分是选择它的安装位置。这或许是最重要的步骤。下面的列表说明了安装位置:
        Root
        这个选项安装LILO到你Linux根分区的开始。这是最安全的选项如果你在你的计算机上安装了其他操作系统。它确保任何其他引导器不被覆盖。缺点是如果你的Linux驱动器是你系统里的第一个驱动器的话LILO将只能从这里引导。
        Floppy
        该方法甚至比前面的更安全。它创建一个引导软盘用于引导你的Linux系统。这将使引导器完全与硬盘隔离,所以当你想使用Slackware时你只需从这个软盘引导。
        MBR
        你可以使用这种方式如果Slackware是你计算机上唯一的操作系统,或者如果你想用LILO选择在你的计算机上的多个操作系统。
        注意:该选项将覆盖任何在MBR上其他的引导器。
        在选择安装位置后,liloconfig将写入配置文件并安装LILO。就是这样。如果你选择了"expert"模式你会看到一个特别的菜单。这个菜单允许你改变/etc/lilo.conf文件,添加其他操作系统到你的引导菜单。expert菜单看起来像这样:
        插图 7-3.liloconfig "expert"模式
        无论你的系统(软件)配置如何,安装一个可工作的引导器是简单的。liloconfig让它的安装简单易行。可是,仍然有LILO无法在系统上工作的实例。幸运的是,还有其他选择。
                Loadlin
        由Slackware Linux自带的另一个引导选择是LOADLIN。LOADLIN是一个

DOS可执行程序可以用来从一个正在运行中的DOS系统启动Linux。它要求Linux内

核存在于DOS分区这样LOADLIN就可以装载它并正确引导系统。
        在安装过程中,LOADLIN将以一个.ZIP文件的形式拷贝到root的家目录

。没有LOADLIN的自动安装过程。你将需要拷贝Linux内核(/vmlinuz)和root的家

目录的LOADLIN文件到DOS分区。
        LOADLIN很有用如果你希望在你的DOS分区创建一个引导菜单。一个菜单

会被添加到你的AUTOEXEC.BAT文件那将允许你在Linux和DOS中做选择。选择

Linux将运行LOADLIN,从而引导你的Slackware系统。Windows 95下的

AUTOEXEC.BAT文件将提供一个足够(满足需要)的引导菜单:
@ECHO OFF
   SET PROMPT=$P$G
   SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\
   CLS
   ECHO Please Select Your Operating System:
   ECHO.
   ECHO [1] Slackware Linux
   ECHO [2] Windows 95
   ECHO.
   CHOICE /C:12 "Selection? -> "
   IF ERRORLEVEL 2 GOTO WIN
   IF ERRORLEVEL 1 GOTO LINUX
   :WIN
   CLS
   ECHO Starting Windows 95...
   WIN
   GOTO END
   INUX
   ECHO Starting Slackware Linux...
   CD \LINUX
   LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO
   GOTO END
   :END

        你需要以Linux设备名来指定你的根分区,就像/dev/hda2或其他的。你

始终都可以在命令行使用LOADLIN。你可以以上述例子中相同的形式简单地使用

它。LOADLIN文档包含了很多关于如何使用它的例子。
                双重引导
        许多使用者设定他们的计算机来引导Slackware Linux和其他操作系统。我们

描述了个别典型双重引导情况如下,以免在你设定你的系统时遇到困难。
        Windows 9x/DOS
        设定计算机同时有Windows 9x和Linux或许是最常见的双重引导情况。有许许

多多方法你可以设置引导,但本小节仅提及两种。
        许多时候当设定一个双重引导系统时,人们总会制定一个完美的计划决定所有

的东西应该位于哪里却胡乱安排安装顺序。理解操作系统需要以一种确定的顺序以设定

双重启动工作非常重要。Linux总是提供任何需要重写主引导记录(的系统)之上的控

制。因此,总是建议最后安装Linux。Windows应该最先安装,因为他总是回把他的引导

器写到主引导记录。
                使用LILO
        多数人希望使用LILO在Linux和Windows间做出选择。依上所述,你最好先安装

Windows然后Linux。
        让我们假设你有一个47GB的IDE硬盘作为你系统中唯一的驱动器。我们再假设

你想分配一半的空间个Windows另一半给Linux。这将在试图引导Linux引发一个问题。

我不知道驱动器空间映射的细节,但猜想碰巧那驱动器余下的23.5GB刚好会超过1024柱

面。一个给这个驱动器好点的布局会是:
1GB   Windows boot (C
   1GB   Linux root (/)
   22.5  Windows misc (D
   22.5  Linux /usr (/usr)

        同时你也会想在旁边划分出合适大小的空间作为Linux交换分区。不成文的规

定是在你的磁盘空间里使用两倍RAM大小的容量。一个64MB系统应该有128MB的交换空间

,依此类推。
        依照你的分区布局,你会开始安装Windows。然后设定好并生效,你该安装

Linux。LILO的安装需要特别注意。你要选择“expert”模式来安装LILO。
        开始一个新的LILO配置。你要把它安装到主引导记录以使它用于在两个操作系

统做出选择。从菜单中,添加你的Linux分区和你的Windows(或DOS)分区。完成后,你

就可以安装LILO了。
        重新启动计算机。加载好LILO并等待用户的动作。你可以按下"Alt"键来获得

boot:提示符。输入你想加载的分区的名字(你设好LILO后这些名字就可以选择)。如

果你忘记了名字,按下Tab键以获取一个可供你引导的操作系统列表。
        你还可以通过编辑在你Linux分区上的/etc/lilo.conf文件来配置LILO。你可

以设定它显示一个文本菜单,并总是提供提示符。例如,如果我让我的LILO像这样来显

示:
System Boot Menu
   ================
   1 - Linux
   2 - Windows

   LILO boot:

        我的/etc/lilo.conf文件就该看起来像这样:
# LILO configuration file

   boot = /dev/hda
   vga = normal
   message = /boot/message

   image = /vmlinuz
      root = /dev/hda2
      label = 1
      read-only

   other = /dev/hda1
      label = 2
      table = /dev/hda

        并且我的/boot/message文件会看起来像这样:
   System Boot Menu
   ================
   1 - Linux
   2 - Windows

        LILO是个极具配置性的引导器。它不仅仅只限于引导Linux和DOS。它可以引导

任何系统。lilo(8)和lilo.conf(5)的联机帮助页提供了更多细节信息。
        如果LILO不起作用又如何?有些实例是LILO无法在一个特别的机器上起作用。

幸运的是有另外一种办法来双重引导Linux和Windows。
                使用LOADLIN
        如果LILO在你系统上不起作用可以用这种方法,或者仅仅是你不想安装LILO。

这种方法同样适用于那些经常重新安装Windows的用户。有了LOADLIN,你无须受限于那

些问题。最大的缺点是你用LOADLIN只能引导Linux。
        有了LOADLIN,你可以以任何想要的顺序安装操作系统。注意不要安装东西到

主引导记录,你不想那么做。LOADLIN relies on the Windows partition being

bootable.所以在安装Slackware过程中,确定你跳过了安装LILO。
        系统安装完之后,从root用户的家目录拷贝lodlinX.zip(这里的"X"是版本号

,比如"16a")文件到你的Windows分区。同样拷贝你的内核镜像到Windows分区。要使用

Linux你要按照这些步骤来做。这个例子演示如何做:
# mkdir /win
   # mount -t vfat /dev/hda1 /win
   # mkdir /win/linux
   # cd /root
   # cp loadlin* /win/linux
   # cp /vmlinuz /win/linux
   # cd /win/linuz
   # unzip loadlin16a.zip

        那将在你的Windows分区(假设它是/dev/hda1)上建立一个C:\LINUX目录并拷

贝LOADLIN所必要的材料。做完这些后,你需要重启进入Windows来设置一个启动菜单。
        一但进入Windows,进入DOS提示。首先,我们需要确定系统被设为不引导进入

图形界面。
   C:\>cd \
   C:\>attrib -r -a -s -h MSDOS.SYS
   C:\>edit MSDOS.SYS

        增加这行到文件里:
BootGUI=0

        现在保存文件并退出编辑器。然后编辑C:\AUTOEXEC.BAT这样我们可以增加一

个引导菜单。接下来提供了一个例子AUTOEXEC.BAT中一个引导菜单块看起来将像这样:
cls
   echo System Boot Menu
   echo.
   echo 1 - Linux
   echo 2 - Windows
   echo.
   choice /c:12 "Selection? -> "
   if errorlevel 2 goto WIN
   if errorlevel 1 goto LINUX
   INUX
   cls
   echo "Starting Linux..."
   cd \linux
   loadlin c:\linux\vmlinuz root=/dev/hda2 ro
   goto END
   :WIN
   cls
   echo "Starting Windows..."
   win
   goto END
   :END

        关键一行是运行LOADLIN.我们告诉它要引导的内河,Linux的根分区,以及我

们想让它初始化时以只读方式挂载。
        Slackware Linux提供了用于这两种方法的工具。市场上还有许许多多其他引

导器,但这些对大多数双重引导设置都能起效。
                Windows NT
        这是第二种最为常见的双重引导情况。Windows NT会比Windows 9x和Linux的

双重启动多些麻烦。其中之一我们最为关切的是如果主引导记录被LILO覆盖,NT将不能

成功引导。因此,我们必须使用Windows NT自带的OS加载器。下列步骤演示了你如何设

置一个Windows NT和Linux的双重引导系统。

    1.安装Windows NT
            2.安装Linux确保LILO安装到Linux分区的超级块。
            3.取得Linux根分区开始的512字节并将其保存至Windows NT分区。
            4.在Windows NT下编辑C:\BOOT.INI以添加一个Linux选项。

        安装Windows NT是和安装Linux一样简单。接下来,它会有点棘手。抓取Linux

分区最开始的512字节要比说起来更简单。你将需要在Linux中以完成这些。假设你的

Linux分区是/dev/hda2,执行这个命令:
# dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512

        好了。接着你需要拷贝bootsect.lnx到Windows NT分区。这里我们将遇到另一

个问题。Linux没有对NTFS文件系统稳定的写支持。如果你安装了Windows NT并把你的

驱动器格式化为NTFS,你将需要拷贝这些文件到一张FAT软盘随后在Windows NT下读取它

。如果你将(安装)Windows NT的驱动器格式化为FAT,你需要简单的在Linux下挂载它

并拷贝文件过去。无论如何,你将把/tmp/bootsect.lnx从Linux驱动器弄到Windows NT

驱动器上的C:\BOOTSECT.LNX
        最后一步是添加一个菜单选项到Windows NT引导菜单。在Windows NT下打开一

个命令提示符。
   C:\WINNT>cd \
   C:\>attrib -r -a -s -h boot.ini
   C:\>edit boot.ini

        在文件后添加这一行:
C:\bootsect.lnx="Slackware Linux"

        保存修改并退出编辑器。当你重启Windows NT,你会在菜单里看到一个Linux

选项。选择它将引导进入Linux。
                Linux
        是的,大家确实这么做。这的确是最简单的双重系统引导情况。你需要简单地

使用LILO并添加入口到/etc/lilo.conf里。就这些。
                小结
        本章讨论了使用LILO和Loadlin引导你的系统。同时也讨论了在Linux和其他操

作系统间引导。你应该能够正确配置你的引导方法并双重引导其它操作系统,should

you choose to.

#本章结束
回复 支持 反对

使用道具 举报

发表于 2005-4-23 11:22:48 | 显示全部楼层
第四章 系统配置
目录
系统纵览
选择内核
概要

在你可以配置系统更高级的部分之前,最好先学习一下系统是如何组织起来的,以及我们可以使用什么命令来搜寻文件和程序。学习一下如何编译一个定制的内核以及有哪些步骤。这一章将使你熟悉系统组织结构和配置文件。然后你可以继续配置系统更高级的部分。

系统纵览
在钻研各方面的配置之前,理解一个Linux系统是如何整合起来的是很重要的事情。Linux系统与Dos或者Windows系统(乃至Macintosh)有着很大的区别,但是这些部分将可以帮助你了解布局以便你可以更轻松的根据你自己的需要配置系统。

文件系统布局
首先在Slackware Linux和Dos或者Windows系统之间,最值得注意的不同点是-文件系统。我们不需要使用驱动器号表示不同的分区。在Linux下,只有一个主目录。你可以联想成Dos下的C盘。你系统上的每一个分区都被挂载成主目录下的一个目录。这有点像一个不断扩容的硬盘。

我们把主目录称作根目录,将它表示成一个斜线(/)。这个概念可能看起来很奇怪,但事实上它使你增加更多的空间时更简单。例如, 我们假设你已经把/home分区的空间使用完了。很多用户安装Slackware时使用一个大的根分区。那么,当一个分区可以挂载到任何目录上时,你可以很简单的接上一块新硬盘,挂载到/home下。现在你可以给你的系统“移植”更多的空间。并且不必移动任何数据。

下面,你可以看到Slackware下主要的目录描述:

/bin
必要的用户程序都储存在这儿。这是一个用户使用系统所必须的最小化的程序。像shell和文件系统命令(ls,cp等等)都存储在这。/bin目录在安装后一般不会改变。修改时,常以我们提供的包升级的形式。

/boot
Linux装入程序(LILO)使用的文件。此目录安装后可以进行小部分改动。

/cdrom
还记得所有的驱动器都被挂载到一个根目录下的目录么?好,/cdrom为你的光驱提供了一个挂载点。

/dev
在Linux中每样东西都被看作文件,甚至硬件设备,如串口,硬盘和扫描仪。为了访问这些设备,给出了一个叫设备节点的特殊文件。所有的设备节点文件都被储存在/dev目录下。你将会在很多类UNIX系统中发现这个目录。

/etc
这个目录存储着系统配置文件。X Window的配置文件,用户数据库,系统启动脚本的所有文件。系统管理员将会很熟悉这个目录。

/home
Linux是一个多用户操作系统。系统中的每个用户都为其个人文件被给予一个帐户和单独的目录,用以储存个人文件。这个目录被称为用户的“home”目录。/home目录是系统为用户主目录提供的缺省的位置。

/lib
基本操作所需要的库文件储存在这。C库,动态装入程序,ncurses库和内核模块就在其中。

/lost+found
当系统启动时,文件系统查找错误。如果发现错误,fsck程序运行查看是否可以修复。修复的文件系统部分将写入/lost+found目录下。

/mnt
这个目录为硬盘或可移动磁盘提供临时挂载点。

/opt
可选择的软件包。每个软件包安装到/opt/<软件包名称>,使以后移除更方便。Slackware发行版本有很多东西在/opt目录下(如KDE在/opt/kde目录下),你同样可以增加软件到/opt目录下。

/proc
这是一个独特的目录,它不是文件系统真正的一部分,而是一个虚拟的文件系统提供访问内核信息。内核想要你知道的各种信息通过/proc目录下的文件传送给你。你同样可以通过这些文件发送信息给内核。试试使用命令
cat /proc/cpuinfo。

/root
系统管理员被称为"root"。root的主目录在/root而不是/home/root。原因很简单。如果/home与/不在同一分区,就无法被挂载?root自然应该进入系统修复错误。如果它的主目录在被损坏的文件系统上,就很难进入系统。

/sbin
root所运行的和在系统启动过程所用到的核心程序都在这儿。普通用户不能执行这个目录下的程序。

/tmp
临时储存单元。所有的用户对这个目录都有读写的权力。

/usr
这是Linux系统中的一个大目录。别的任何东西几乎都在这,程序,文档,内核源代码和X Window系统。你所安装的程序很有可能都在这个目录里。

/var
系统日志文件,缓冲数据和程序锁定文件储存在这儿。这是一个经常变换数据的目录。

你现在应该对文件系统中哪一个目录包含什么有了很好的认识。下一章节将帮助你更容易查找特殊文件,这样以来你可以不必手工查找了。
回复 支持 反对

使用道具 举报

发表于 2005-4-23 21:15:57 | 显示全部楼层
题目:第九章.文件系统结构
作者:chendy
创建日期:2005年4月22日
最后修改:2005年4月23日
正文:
                第九章.文件系统结构
目录
所有权
权限
连接
挂载设备
挂载NFS
小结

        我们已经讨论了Slackware Linux中的目录结构。你已经可以找到你需要的文

件和目录。但对文件系统而言不仅仅只有目录结构。
        Linux是个多用户操作系统。系统的每一方面都是多用户的,包括文件系统。

系统存储了诸如谁拥有文件和谁可以读取它等这类信息。还有关于文件系统其他独特的

部分,例如连接和NFS挂载。这一节说明了这些,以及文件系统的多用户特性。
                所有权
        文件系统为系统中每个文件和目录存储所有权信息。这包含了哪个所有者和组

拥有这个文件。查看这些信息的最简单的办法就是使用ls命令:
$ ls -l /usr/bin/wc
   -rwxr-xr-x   1 root     bin    7368 Jul 30  1999 /usr/bin/wc

        我们关心的是第三和第四列。这些包含了拥有该文件的用户名和组名。我们看

到用户“root”和组“bin”拥有这个文件。
        我们可以简单地用chown(1)命令(意即“CHange OWNer”)和chgrp(1)(意即

“CHange GRouP”)命令改变文件所有者。要把文件的所有者改为“daemon”,我们可

以使用chown:
# chown daemon /usr/bin/wc

        要把组所有者改为“root”,我们可以使用chgrp:
# chgrp daemon /usr/bin/wc

        我们同样可以使用chown来为一个文件指定用户和组所有者:
# chown daemon.root /usr/bin/wc

        文件所有权对使用Linux系统是非常重要的部分,即使你是唯一的用户。有时

你需要修正文件或设备节点的所有权。
                权限
        权限是文件系统多用户特性的另外一个重要部分。利用它们,你可以改变谁可

以读、写、和执行文件。
        权限信息是以四位八进制数字方式存储,每一位指定了一组不同的权限。依次

是所有者权限,组权限,和全局其他用户权限。第四位八进制数用来存储诸如设置user

ID,设置group ID,和“粘滞”位等特定信息。八进制数值对应的权限模式是(它们同

样有对应的字母可以由ls来显示并可被chmod所使用):
Table 9-1. Octal Permission Values

Permission Type                Octal Value        Letter Value
"sticky" bit                 1         t
set user ID                 4         s
set group ID                 2         s
read                 4         r
write                 2         w
execute                 1         x

        你为没个权限组添加八进制值。例如,如果你想让组权限是“读”和“写”,

你可以将“6”用在权限信息的组部分。
        bash的默认权限是:
   $ ls -l /bin/bash
   -rwxr-xr-x   1 root     bin  477692 Mar 21 19:57 /bin/bash

        如果这是个目录那第一个减号就应该换成“d”。接着显示的是三个权限组(

所有者,组和全局)。我们看到所有着拥有读,写和执行的权限(rwx)。组只有读和

执行(r-x)。
(未完待续)
回复 支持 反对

使用道具 举报

发表于 2005-6-27 20:44:00 | 显示全部楼层
其实翻译一章并不占用大家很多的时间,比如我就用了我睡午觉的时间翻译了一章(最近杭州天气太热了,睡不着)


ZipSlack 和 BigSlack

目录

什么是 ZipSlack/BigSlack?

获得 ZipSlack/BigSlack

安装

启动 ZipSlack/BigSlack

增加、删除和更新软件

一般性问题

获得帮助

总结

什么是 ZipSlack/BigSlack?

ZipSlack 是一个特殊版本的 Slackware Linux。它设计安装在你的 DOS/Windows 分区
上面。然而,这是一个最基本的安装,并没有安装 Slackware 所提供的所有安装包;如
果你想让 ZipSlack 同时运行所有的软件包的话,你可以试试 BigSlack。

ZipSlack 你可以从它所发布的名字就可以知道,它是以一个大的 ZIP 文件发布的。DOS
和 Windows 用户对于这些文件可能非常的熟悉。它们是一种压缩文件格式。ZipSlack 安装
包已经包含了所有你启动和运行 Slackware 的东西。

要注明一点的是,ZipSlack 和 BigSlack 相对于普通的安装模式有很大的不同。虽然它们
使用同样的函数,包含了同样的程序,但是它们的调用是不同的。下面列出了 ZipSlack 和
BigSlack 的有点和缺点。

最后一点,你必需仔细阅读在 ZipSlack 和 BigSlack 目录里的文档。它包含了有关安装、
引导、等一般性使用问题方面的最新信息。

优点:

× 不需要重新分区

× 一个跳过安装步骤直接学习 Slackware Linux 的好方法

缺点:

× 使用 DOS 文件系统,系统效率没有普通 Linux 文件系统高

× 不能在 Windows NT 下运行


获得 ZipSlack/BigSlack

获得 ZipSlack 或者 BigSlack 非常的容易。如果你拥有了官方发布的 Slackware
CD 套件,ZipSlack 或者是 BigSlack 就已经包含在里面了。你需要做的仅仅就是
将它塞进你的 CD-ROM 驱动其里面。它可能在第三张或者是第四张光盘上,或许查
看光盘上的标签仍然是一个非常好的方法。

如果你想下载 ZipSlack 或者是 BigSlack,你可以先到我们的 Slack web 页查看
最新的消息:

http://www.slackware.com/getslack/

ZipSlack 和 BigSlack 是每一个 Slackware 发行版本的一部分。你可以从 FTP 站点
下的目录里查看最新的发行版本。最新的发行版本目力可以从这个地址找到:

ftp://ftp.slackware.com/pub/slackware/slackware/                  

你可以找到 ZipSlack 在 /zipslack 子目录下,BigSlack 在 /bigslack 子目录下。
ZipSlack 提供了一个大的 .ZIP 压缩文件,或者是一张磁盘大小的磁盘境象。磁盘镜
像在 /zipslack/split 目录里。BigSlack 仅仅发布的是一个大的文件。

不要仅仅停留在那个 .ZIP 文件上。你仍然需要下载同目录下的文档和启动引导镜像。



安装

当你下载好文件以后,你必需解压缩 .ZIP 文件。同时你必需确定你使用的是 32 位
的解压缩程序。因为压缩包里的文件名对于一个 16 位的解压缩程序来说过长。在
Windows 下的 32 位解压缩程序有很多,比如 WinZip 和 PKZIP。

ZipSlack 和 BigSlack 都设计成解压缩在每个驱动器的根目录上(比如 C:或者 D:)。
在 Slackware 安装好以后,会建立一个 \LINUX 目录。你可以在目录下找到启动系统所
需的文件。

当你解压缩完毕以后,在你所选择的驱动器下的根目录中应该就会有一个 \LINUX 目录
(我们下面假设已经解压缩文件到驱动器 C:下)。



引导 ZipSlack/BigSlack

有很多手段引导 ZipSlack 和 BigSlack。最通用的作法就是使用目录下的 LINUX.BAT 文件
从 DOS 下(或者是 Windows 9X 的 DOS 模式)启动系统。这个文件必需重新编辑,以适合你
自身的系统。

使用你喜欢的编辑器编辑 C:\LINUX\LINUX.BAT 文件。在文件的顶部会有一大段的注释,它
会告诉你需要在什么地方修改配置(并且会告诉你怎样在一个额外的 ZIP 驱动器上引导系统)。
不要对于例如 root= 这样的参数感到害怕。这里有几个例子,你可以挑选一个尝试一下。如
果不行,你可以重新在此编辑这个文件,注释掉不能工作的语句,并且尝试下别的。

当你注释掉你所要的行以后,保存文件并退出编辑器。启动你的系统到 DOS 模式下。

注意:在 Windows 9x 的窗口模式下的 DOS 仍然不能工作。

键入 C:\LINUX\LINUX.BAT 引导系统。如果一切顺利,系统会提供给你一个登陆符登陆系统。

使用 root 帐号登陆,没有密码。你可能会给 root 设置一个密码,为你自己增加一个帐户。对
于这点你可以参考本书其他的章节。

如果使用 LINUX.BAT 文件无法引导你的系统,你需要参考 C:\LINUX\README.1ST 文件使用其
他的方法引导系统。



增加、删除和更新软件

ZipSlack 和 BigSlack 可以使用和普通模式安装的 Slackware 系统一样的包。这样意味着你
可以使用标准的 Slackware 软件包工具增加、删除和更新软件。你仍然可以从 Slackware 光
盘上安装所需要的软件。


一般性问题

这里列出里 ZipSlack 和 BigSlack 运行时最常见的问题。如果你的问题没有在这里列出,我们
仍然有其他的方法解决它。下一个章节我们将详细介绍获取它的方法。

Unable to open initial console                                      

这个问题可是你时在 LINUX.BAT 文件里的 root= 指定了无效的设备。重新编辑 LINUX.BAT 文件,
并为 root= 指定一个有效的设备。如果你对于这个意思实在是没有办法,你可以尝试下每一行例
子,直到它正确运行为止。

这个问题仍然可能是你在解压缩在非根目录下造成的。文档必需解压缩在驱动器上,而非一个子目
录中。

Kernel panic: VFS : Unable to mount root fs                        

这个信息意味着你在 LINUX.BAT 中的 root= 指定了一个错误的设备。你必需重新编辑 LINUX.BAT
文件,重新选择一个其他的 root= 设备。如果你不知道怎么做,尝试一下里面所有的选项,总有一
个适合你的系统的。



获得帮助

在你提问之前,你必需阅读 C:\LINUX 下的文档,查看一下是否有你提出的问题。

如果你阅读了文档以后仍然没有解决此问题,有几个很好的途径去寻找解决它们的方法:

ZipSlack FAQ

那里有一份清单列出了最常见的问题和它们的解答,同时在 C:\LINUX 目录下的 FAQ.TXT 也是这个
清单的内容。你还可以访问我们的 web 网站获取:

http://www.slackware.com/faq/                                      

ZipSlack 论坛

这里有一个在线的论坛和其他 ZipSlack 和 BigSlack 讨论。你可以在这里发送你的问题,其他
的用户会努力帮助你。这是一个非常好的方法和其他用户相互交流相互学习。

http://www.slackware.com/forum/                                    

电子邮件支持

Slackware 客户小组会努力的帮助您在 ZipSlack 或者是 BigSlack 方面的问题。但是您必需尽
可能的写清楚问题的所在和出现的信息,这样我们才可能解决您提出的问题。

<support@slackware.com>                                            


总结

你必需明白什么是 ZipSack 和 BigSlack。如果你决定使用它们其中一个,你必需知道如何去
安装、引导、解决问题和获取帮助。ZipSlack 和 BigSlack 非常适合在您不想删除你现有的
Windows 分区的前提下,尝试 Slackware。
回复 支持 反对

使用道具 举报

发表于 2005-7-21 14:52:57 | 显示全部楼层

Slackware Linux Essentials的部分翻译,

Slackware Linux Essentials
(translated by kill_ads)

一,
1)软件系列
A    最基本的系统,包含一些必要的程序,一个文本编辑器和基本的通信工具
AP   不需要x-window环境的各种程序
D    程序开发工具,编译器,调试器,解释器和帮助文档
DES  包含一些GNU libc crypt() 函数
E    GNU emacs
F    FAQs, HOWTOs和各种文档
GTK  GNOME桌面环境,GTK库和GIMP
K    Linux内核源代码
KDE  K桌面环境,和MacOS,windows很像的一个x环境,KDE需要Qt库的也包含了
N    网络程序,Daemons,邮件程序,telnet,新闻阅读器等等
T    teTeX文档格式系统
TCL  工具支配语言,Tk, TclX, TkDesk.
X    基本的x-window系统
XAP  x应用程序,不属于主要的x-window桌面环境,例如:Ghostscript和Netscape
XD   X11程序开发,库,服务器连接包和PEX支持
XV   XView库,开放的虚拟的和非虚拟的window管理器,还有其他的Xview应用程序
Y    游戏

2)几种安装模式的选择SELECT PROMPTING MODE)
FULL
此选项将安装"ACKAGE SERIES SELECTION"中选择的所有软件包.没有任何提示.这是最简单的安装方法,此过程中你不需要做任何选择.当然,这个选项会占用大量硬盘空间.
NEWBIE
此选项将安装所有你选择的系列中的必须的包.对于其他包,它会在提示你选择YES NO或者SKIP,YES和NO是显而易见的,SKIP将继续下一个软件包.此外,你还会看到每一个软件包的描述和大小,帮助你作出选择.我们推荐新用户使用此选项,因为它可以确保所有必须的包都被安装.但是,由于有提示的原因速度会比较慢.
MENU
这是一个更快更高级的NEWBIE的版本.对于每一个系列都会有显示,你可以选择你想安装的不必要的包.必要的包将不会被显示.
EXPERT
对于很多高级用户,可使用此选项.它允许你自由选择安装包.如果取消必要的包,会导致系统瘫痪.换句话说,你可以完全控制.从每个系列中选择你要安装的包.这个选项不推荐新手使用,因为它太容易给自己找麻烦了.
CUSTOM & TAG PATH
此选项也是面向高级用户,它允许你安装基于custom tag文件.这对于批量安装很有用,很快捷.更多的信息参考第16章

二,主要目录
/sbin
用户的一些基本的应用程序都存放在这里,包括了一个用户使用系统时最基本的程序,例如:shell,文件
系统命令(ls,cp等)。/sbin目录在系统安装后一般就不再会被修改,如果修改了,通常是我们在进行包
升级

/boot
系统加载器LILO的文件,这个目录在系统安装好后一般也不会被修改

/cdrom
记住,每个驱动器都将被挂载为一个目录放在根目录下,/cdrom就是你的光驱的一个挂载点

/dev
linux中所有东西都将被认为是一个个文件,甚至是串口,硬盘,扫描仪这样的硬件。为了访问这些设备
,要使用一个特殊的被称为device node的文件,所有的device node都存储在/dev目录中,当接触许多
UNIX类的系统后,你就会发现这是真的。

/etc
这个目录存放着系统配置文件,x-window配置文件,用户数据库,启动脚本。系统管理员对这个目录十分
熟悉。

/home
linux是一个多用户的操作系统,每一个用户都会被给予一个账户和唯一个存放个人文件的目录,这个目
录被称为是用户的家。

/lib
这里存放着基本的系统需要的库文件,C库,dynamic loader,ncurses库,还有内核模块

/lost+found
系统启动的时候会检查错误,如果发现错误,fsck程序将会查看是否有错误被修正,修正的部分将会被写
入/lost+found目录里

/mnt
这个目录被临时提供给挂载硬盘或者移动存储器

/opt
可选择的软件包,建立/opt的想法是把每一个软件包都安装到/opt/<软件包>,
这将有利于以后删除,slackware分发了一些东西到/opt/(例如kde安装到/opt/kde)不过你也可以把任何
东西放到里边

/proc
这是一个特殊的目录,他不属于真正的文件系统,是一个虚拟的用来访问linux内核信息的文件系统,你可
以在/proc里输入files来获取内核的很多信息;你也可以通过他来向内核发送信息,可以尝试一下
cat /proc/cpuinfo

/root
系统管理员对这个目录很熟悉,/root替代了/home/root,原因很简单:如果/home和/在不同的分区,并且
没有被加载,root会很自然的登陆并修复问题,那如果/home在损坏的文件系统上,那root就无法登陆了

/sbin
这里存放着系统启动过程中root使用的一些基本程序,正常情况下用户不能在这个目录中运行程序

/tmp
临时存储单元,任何用户都可以读写此目录

/usr
这是linux系统中很大的一个目录,几乎大多数东西都在这里,程序,文档,内核源代码,x-window系统,
这是你安装程序的目录

/var
系统日志,缓存数据,程序锁文件都存放在这里,这里的数据会经常改变

三,系统启动
slackware在内核被加载后第一个运行的程序是init,此程序会读/etc/inittab文件,然后执行/etc/rc.d/rc.S脚本在进入runlevel前准备系统.rc.S会激活你的虚拟内存,挂载文件系统,清空某些日志目录,初始化即插即用设备,加载内核,配置PCMCIA设备,设置串口,然后运行System V init脚本.rc.S还会调用/etc/rc.d中部分脚本来完成任务.

rc.S                系统初始化脚本
rc.modules        加载内核模块,例如:网卡,ppp支持等,如果此脚本找到了rc.netdevice,就会执行它
rc.pcmcia        用户pcmcia设备,例如:笔记本用户的pcmcia调制解调器,网卡
rc.serial        使用setserial命令来配置你的串口设备
rc.sysvinit        用户运行期望的runlevel,下面有详细介绍

四,Runlevel初始化脚本
rc.0                关闭系统(runlevel 0)
rc.4                多用户启动(runlevel 4),但是在X11中使用KDM, GDM, 或 XDM作为登陆管理器
rc.6                重启系统(runlevel 6)
rc.K                以单用户模式启动(runlevel 1)
rc.M                多用户模式(runlevel 2和3),使用标准文本登陆方式,在slackware中这是默认的runlevel

五,网络初始化
rc.inet1                由netconfig生成,这个文件用户配置网络
rc.inet2                在rc.inet1之后运行,启动基本网络服务
rc.atalk                启动AppleTalk服务
rc.httpd                启动Apache服务器
rc.samba                启动windows文件和打印共享服务
rc.news                启动新闻服务器

六,其他文件
rc.cdrom                开启后,这个脚本会扫描光盘驱动器并且挂载为/cdrom
rc.gpm                        开启鼠标服务,允许你在linux控制台里拷贝和粘贴
rc.ibcs2                开启Intel Binary Compatibility支持,如果你要运行从SCO UNIX或其他商业UNIX上编译来的程序,可以使用此功能,但这不是运行Linux程序所必须的
rc.fonts                为控制台加载自定义字体
rc.local                含有很多特殊的启动命令,这个文件本来是空的,留给系统管理员使用。这个脚本将在最后运行

七,/etc里的文件
/etc/inetd.conf        inetd的配置文件
/etc/resolv.conf        DNS配置信息
/etc/hosts        本机域名解析host文件
回复 支持 反对

使用道具 举报

发表于 2005-9-7 01:23:59 | 显示全部楼层
第十五章 文件归档
15.1 gzip
gzip(1) 是GNU的压缩程序。它只对单个文件进行压缩。基本用法如下:
$ gzip filename                                                                  
程序执行以后,文件名会变成filename.gz,而且一般情况下大小会比原文件要小。注意,程序并不新建一个新的文件filename.gz, 而是将filename变成filename.gz。一般来说,文本文件压缩率会比较高。而那些jpeg图像,mp3等类似文件的压缩率就没有那么好了,因为它们本来就已经被压缩过了的。这个基本用法考虑了压缩时间和压缩后文件尺寸的平衡问题(译者注:如果要使压缩后的文件更小,就需要用到更多的时间)。要得到最小文件大小(最大压缩),可以使用如下用法:
    $ gzip -9  filename                                                        
这样就可以得到gzip能够压缩的最小文件尺寸,但是需要更长的压缩时间。上面的数字越小,压缩就越快,相反压缩率也就越小。

将gzip压缩的文件解压缩,有两个命令可以使用,但实际上它们是同一个程序。只要压缩文件的后缀名被gzip程序认到,它就可以解压缩。后缀名可以是:.gz, -gz, .z, -z, .Z 和 –Z。可以使用的第一个命令是:
    $ gunzip filename.gz                                                      
使用上面的命令后,filename.gz会被解压缩并去掉后缀名.gz变成filename。gunzip 实际上是gzip程序的一部分,它跟gzip –d 这个命令有等同效果。但是我们使用的时候,经常使用gunzip, 因为这个用法似乎更酷些。: ^ )

15.2 bzip2
        bzip2(1)是 Slackware Linux里面压缩程序的另一个选择。它的压缩算法不同于gzip。与gzip 相比有其优点,也有一些缺点。bzip2的主要优点在于它压缩后文件的尺寸,对于相同文件,bzip2 压缩后的尺寸几乎总是小于gzip的压缩结果。有些时候,这个差距会相当大。这个优点对于使用小猫下载文件的用户来说表现得尤为突出。需要提醒的是,当在一些公共ftp 服务器上下载文件时,在.gz和.bz2文件中尽量选择.bz2文件是一种基本的网络礼节,因为这样可以减少服务器的负担以给更多人服务。
        bzip2的缺点在于,它占用的CPU的使用率会比gzip更多。这就是说,压缩同一个文件,bzip2要比gzip使用更长的时间,占用更多的CPU资源。所以,当你在两者之中考虑选用哪种压缩程序的时候,需要衡量的是速度和压缩后的文件尺寸哪个对你来说更重要些。
       
        bzip2的使用方法和gzip是一样的,所以我们不再花时间讨论了。像gunzip一样,bunzip2的效果等同于bzip2 –d。与gzip最大的不同是bzip2使用后缀名.bz2.
    $ bzip2 filename                                                      
    $ bunzip2 filename.bz2                                                      
    $ gunzip -9 filename                                                      


15.3 tar
tar(1)是一个GNU的磁带归档程序。它可以将几个文件或者目录打包压缩成一个文件。这个特点让我们可以压缩整个目录树,而单使用gzip和bzip2是无法做到的。tar有很多命令行参数,你可以在手册页找到它们。在这一节里,我们只是讨论一下那些经常用到的tar的用法。

tar 最常用的用法是将我们从网站或者ftp上下载的文件解压缩然后在解包。a.tar.gz是我们经常看到的文件名格式,这就是我们通常说的"tarball",它是先把一些文件用tar打包,然后在用gzip压缩。你也有可能会看到名为a.tar.Z的文件,这也是同样的做法,但是你一般只会在比较老的Unix 系统里面遇到。
另外,你也会在另外一些地方看到如a.tar.bz2这样文件。Kernel源文件就是用这种格式发布的,为的是可以让文件更小,便于下载。你可能已经猜到,它就是先将一些文件用tar打包,然后再用bzip2压缩。

我们可以将上述格式的文件用tar加一些命令行参数进行解包。-z参数表示在首先运行gunzip将文件解压缩。将一个tarball解包的最常用的用法是:
         $ tar -xvzf filename.tar.gz                                             
这里有不少的参数,那么它们各自有什么意思呢?
-x表示提取文件。这是一个非常重要的参数,因为它告诉tar对输入的文件具体怎么处理。在这里,我们要将打包的文件分离还原成打包前的状态。
-v表示详述。加入这个参数让程序将解包出来的每一个文件列出来。如果觉得列出来太烦了,你完全可以把这个参数去掉来关闭这个功能。相反,如果你需要每个解包文件更详细的信息,则可以使用-vv参数。
-z是告诉tar先运行gunzip将文件解压缩。
-f是告诉tar在命令行输入的下一个串字符是需要处理的文件。

上面这个命令也可以用一些其他形式的写法。在比较老的系统里面由于缺少新版本的GNU tar程序,你可能会看到它是写成这样的:
         $ gunzip filename.tar.gz | tar -xvf  -                             
这行命令先把文件解压缩,然后把解压的文件对输出到tar程序。gzip可以把其处理完的数据输到标准输出。这里就是把gzip解压缩的文件作为标准输出,然后由管道把文件送到tar程序进行解包。最后的 “-”表示处理标准输入。它将解包后的文件写入磁盘。

还有一种写法是将第一种命令格式的短划线去掉,像这样:
         $ tar xvzf filename.tar.gz                                             

你也可能会碰到bzip2压缩的打包文件。在Slackware Linux所带的tar程序版本  可以像gzip压缩的打包文件一样,只是要把参数-z用-j代替:
                 $ tar -xvjf filename.tar.bz2                                       

这里需要注意的是,tar会把解包的文件放到当前目录。所以如果要把一个放在/tmp目录文件解压缩到你的家目录的话,这里有一些做法可供选择:
选择一,把文件拷贝到家目录,然后解包
选择二,指定需要解包文件的路径
选择三,用-C 参数指定解包后存放文件的路径

$ cd $HOME                                                      
$ cp /tmp/filename.tar.gz                                 
$ tar -xvzf filename.tar.gz                                

$ cd $HOME                                                      
$ tar -xvzf /tmp/finename.tar.gz                     

$ cd /                                                                 
$ tar -xvzf /tmp/filename.tar.gz -C $HOME     

上面所有的命令都是等效的。每一种做法都是把文件解包到你的家目录,源文件则留在原来的地方。

上面讲了那么多用tar解包的命令,现在让我们来看看tar是如何来打包的吧。
在大多数情况下,只需要用参数“-c”代替参数“-x”就可以了:
$ tar -cvzf filename.tar.gz .                                
在这行命令里面,参数-c是告诉tar来建立一个打包文件;而参数-z是将打包的文件通过gzip程序进行压缩。filename.tar.gz 是你将要建立的文件名。(译者添加:命令行最后的“.”是告诉tar将当前目录下的所有文件/文件夹打包)

参数“-f”不是必需的,但是通常来说加上会是一个好主意。如果不加,tar会将数据写到标准输出,这就需要管道将tar输出到另外一个程序,像这样:
$ tar -cv filename.tar . | gpg --encrypt              

这行命令把当前目录下的所有文件打包建立一个没有被压缩的tar归档文件,通过管道输出到gpg程序进行加密,让不知道密钥的人无法读到文件内容。

15.4 zip
        最后,讨论一下处理zip文件的两个程序。zip文件在Windows世界里面是极为常用的,所以Linux也有相应的程序来处理它们。zip文件的压缩程序叫做zip(1),解压缩程序叫做unzip(1).
         $ zip foo *                                                           
        这行命令会建立一个包涵当前目录所有文件的的zip文件 foo.zip。zip会自动将
        .zip后缀名加上,所以我们不需要在命令中加上。你也可以加上一个参数-r使zip将当前目录下的所有文件夹目录也加在zip文件中:
         $ zip -r foo *                                                      
       
        解压缩文件很简单,像这样:
         $ unzip foo.zip                                                   
        这样会解压缩foo.zip里面的所有文件和文件夹

        zip程序还有一些高级应用参数,包括建立自解压包,压缩是保留源文件,调节压缩文件的尺寸等等,在这里就不一一赘述了。如果想了解更多,请查看手册页。
回复 支持 反对

使用道具 举报

发表于 2005-9-9 13:59:40 | 显示全部楼层
蛮喜爱 Emacs 的,翻译了第 17 章,Emacs。有些地方搞不太懂,翻译得马马虎虎,

建议 chendy 到 http://www.slackbook.org/translations.html 去申请一个中文的翻译链接。


译者注:“[”和“]”内的部分是我为了易于理解而加上去的,
(”和“)”内的部分为原文所有。

第17章 Emacs
17.1 启动 Emacs
17.1.1 命令按键
17.2 缓冲区
17.3 模式
17.3.1 打开文件
17.4 基本编辑
17.5 保存文件
17.5.1 离开 Emacs


当 vi (还有它的克隆)毫无疑问地成为类 Unix 系统里普遍存在的编辑器时,
Emacs 来得正好。与 vi 使用各种"模式"不同,它使用 Control 和 Alt 键的组
合来输入命令,和你在字处理程序和其他应用程序里使用 Control 和 Alt 键的
组合去执行相应的功能方式相同。(然而[Emacs 的]命令相当一致应该值得赞扬;
因此当许多现代的应用程序使用 Ctrl-C/ X/ V 来复制,剪切和粘贴时,Emacs
使用不同的按键或者事实上一个稍微有点不同的机制来完成这些。)


同样的跟一个(优秀的)编辑器同时除此以外什么都不是的 vi 不同,Emacs 是一
个有着近乎无穷可扩展能力的程序。Emacs(绝大部分)用 Lisp 写成,那是一
种强大的具有奇异性能的编程语言,每种用它写成的的程序自动拥有自己的
Lisp 解释器。这意味着用户可以扩展 Emacs,或者实际上“在 Emacs 里”写一个完整
的新程序。


因此,Emacs 不仅仅只是一个编辑器而已。存在着很多可获得的 Emacs 附加程
序包(许多结合进了[Emacs]程序的源码),来提供各种各样的功能。许多程
序包和文本编辑有关,提供除在 Emacs 基本作业之外,但不仅仅停留在此的
功能。比如那几个电子制表软件,还有数据库,游戏,电子邮件和新闻组客户端
(最棒的是 Gnus),等等。


Emacs 有两个主要的分支:GNU Emacs(这就是 Slackware 里的那个)和
XEmacs。后者不是 Emacs 运行在 X 下的版本。事实上,Emacs 和 XEmacs 两者
运行于 X 和运行于控制台一样的好。XEmacs 曾作为整理 Emacs 代码的一个工
程启动。当前,两个分支都处于积极的开发中,而且事实上两个开发团队有着很
多相互的影响。在当前的章节里,无论你使用 Emacs 还是 XEmacs 都不重要,
它们的区别与普通用户无关。



17.1 启动 Emacs

Emacs 能从 shell 启动只需简单地键入 emacs。当你运行 X 时,Emacs 会
(通常)启动它的 X 窗口,通常还有一个 menu bar[目录条]在顶部,在那儿你可以
找到一些最为重要的功能。在启动时,Emacs 会首先显示一个欢迎信息,几秒钟后
会将你放到 *scratch* [草稿]缓冲区里。(看 17.2 节.)



你还可以用编辑存在的文件的方式启动 Emacs,只需键入


  1. % emacs /etc/resolv.conf
复制代码


这会使得 Emacs 启动时去加载这个特别的文件,跳过欢迎信息。



17.1.1 命令按键


和上面提到的一样,Emacs 使用 Control 和 Alt 键的组合作为命令。通常的惯
例是把这些分别写成 C-letter[C-字母]和 M-letter。所以 C-x 意味着
Control+x,M-x 意味着 Alt+x。(字母 M 用来代替 A 是因为原来的按键不是
Alt 键而是 Meta 键,Meta 键已经几乎从计算机键盘里消失了,因此在 Emacs
里 Alt 键代替了它的作用。)


许多 Emacs 命令由按键们的组合和它们的序列组成。举个例子,C-x C-x(就
是 Control+x 紧接着 Control-c)离开 Emacs,C-x C-s 保存当前文件。牢记
C-x C-b 和 C-x b 是不同的。前者意味着 Control-x 紧接着 Control-b,而后
者意味着 Control-x 接着仅仅只是 'b'。



17.2 缓冲区


在 Emacs 里,*buffers* 的概念是要点。你打开的每一个文件都被加载进它自
己的缓冲区。除此外,Emacs 拥有一些特殊的缓冲区,不是用来装载文件而是别
的东西。这些特殊的缓冲区通常有着用星号打头和结尾的名字。比如,Emacs
第一次启动时显示的缓冲区,是叫做 *scratch* 的缓冲区。在 *scratch* 缓
冲区里,你可以像平常那样写入文字,但是当 Emacs 关闭的时候写入那里的东西不
会被保存。


还有另外一个你需要知道的特殊的缓冲区,叫做 minibuffer。这个缓冲区仅有
一行组成,同时一直在屏幕上:恰好在 Emacs 窗口里的最下一行,在当前缓冲
区状态条下面。minibuffer 是 Emacs 向用户显示消息的地方,同时也是一些需
要用户输入的命令执行的地方。比如,当你打开一个文件,Emacs 会在
minibuffer 询问它的名字。


从一个缓冲区切换到另一个缓冲区可以用命令 C-x b 来完成。它会提示你缓冲
区的名字(一个缓冲区的名字通常是你正在编辑的文件的名字),然后它会给一
个缺省的选择,通常是你切换或创建当前缓冲区之前呆过的缓冲区。只要敲击回
车就会切换到那个缺省的缓冲区。


如果你想切换到另外一个缓冲区而不是 Emacs 提供的缺省,只需敲击它的名字。
注意你可以在这里使用 Tab 补全: 输入缓冲区名字的前几个字母然后敲击 Tab;
接着 Emacs 会补全缓冲区的名字。Tab 补全在 Emacs 任何可行的地方都可以使用。


你可以通过敲击 C-x C-b 来得到一份打开的缓冲区清单。这个命令通常会将屏
幕一分为二,在上半部分显示你正在工作的缓冲区,而下半部分显示一个叫做
*Buffer List* 的新缓冲区。这个缓冲区包含了一分所有缓冲区的清单,它们的
容量和模式,还有文件,如果有的话,还显示那些正在访问的缓冲区(在 Emacs
里就是这样叫的)。你可以通过敲击 C-x 1 来去掉这个分屏。
                                                               

注意         在 X 下,缓冲区清单同样可以在目录栏中的缓冲区目录里得到。



17.3 模式


Emacs 里的每一个缓冲区都有一个相应的模式。这个模式和 vi 里的模式思想很
不相同:一个模式告诉你处于一个什么样的缓冲区中。比如,text-mode 用于平
常的文本文件,但是还有像给编辑 C 程序的 c-mode 模式,给编辑 shell 脚本
的 sh-mode,给编辑 LaTex 文件的 latex-mode,给编辑 email 和新闻组消息
的 mail-mode,等等。一个模式提供实用的特别的定制和功能给你当前编辑的此
种文件。甚至为一种模式重新定义按键和按键命令也是可以的。比如,在文本模
式里,Tab 键只是简单的跳到紧靠着的一个 tab 长度的地方,但在许多编程语
言环境中,Tab 键缩进当前行取决于当前行所处块的深度。


上面提到的模式都叫主模式。每个缓冲区拥有一个确切的主模式。另外,一个缓
冲区可以有一个或多个副模式。一个副模式给当前一定的编辑工作提供有用的额
外的特性。比如,如果你敲击插入键,就像你希望的那样唤起了
overwrite-mode,。同样还有 auto-fill-mode,它被结合进了 text-mode 还有
latex-mode: 它使得你打的每一行字在达到某个字数后起用新行。没有
auto-fill-mode,你得敲击 M-q 去划齐一个段落。(你还可以在编辑一些发现没
有被很好的划齐文字后,使用这个命令来重新划齐。)


17.3.1 打开文件


在 Emacs 里打开一个文件,敲击


  1. C-x C-f
复制代码


Emacs 会问你文件的名字,向你提供一些缺省的路径(通常是 ~/ )。当你输入
文件名(你可以使用 Tab 补全)敲击回车后,Emacs 会在新的缓冲区里打开文
件并在屏幕上显示其内容。
                                                         

注意         如果 Emacs 没有将文件载入当前的缓冲区,它会自动创建一个新的缓冲区。


为了在 emacs 里创建一个新文件,你不能马上就进行打字。你首先得为此创建
一个新缓冲区,接着给出一个文件名。用 C-x C-f 并输入一个文件名来完成,
就像你打开一个存在的文件那样。Emacs 会注意到你打开的是不存在的文件,然
后创建一个新的缓冲区同时在 minibuffer 里提示 "(New file)"。


当你敲击 C-x C-f 然后输入一个目录名而不是一个文件名时,Emacs 会创建一
个新的缓冲区来显示那个目录下所有文件的清单。将光标移动到你寻找的文件并
回车,Emacs 会打开它。(事实上在这你还可以做得更多,比如删除、重命名和
移动文件,等等。Emacs 现在处于 dired-mode 模式,基本上就是一个简单的文
件管理器。)


当你敲击了 C-x C-f 后突然改变了主意,可以敲击 C-g 去撤销刚才的行动。
C-g 几乎在任何你想撤销的,已经执行但不想结束的行动或命令的地方都有用。



17.4 基本编辑


当你已经打开了一个文件,自然可以利用光标在里面移动。光标的按键 PgUp,
PgDn 就像你希望的那样工作。Home 和 End 跳转到行的开头和结尾。(在旧一点
的版本里,它们实际上跳转到缓冲区的开头和结尾。)无论如何,还有 Control
和 Meta(Alt)键的组合去移动光标[原文将按键的组合比喻成小型爵士乐团]。
因为你不需要为此将手臂移动到键盘的另一部分,当你习惯后将很快捷。像这些
最为重要的命令在表格 17-1 里列出来了。


表格 17-1。Emacs 基本编辑命令

命令                                             结果
C-b        往后移动一个字符
C-f        往前移动一个字符
C-n        往下移动一行
C-p        往上移动一行
C-a        移动到行的开头
C-e        移动到行的结尾
M-b        往后移动一个词
M-f        往前移动一个词
M-}        往前移动一个段落
M-{        往后移动一个段落
M-a        往后移动一句
M-e        往前移动一句
C-d        删除光标下的字符
M-d        删除当前光标后的字符
C-v        往下移动一屏(也就是,PgDn)
M-v        往上移动一屏(也就是,PgUp)
M-<        移动到缓冲区的开头
M->        移动到缓冲区的结尾
C-_        撤销最后的改变(可以被重复);注意实际上你得使用
        Shift+Control+hyphen 来完成这个命令。
C-k        删除到行末
C-s        往前搜索
C-r        往后搜索


注意许多的 Meta 命令和 Control 命令是相似的除非是操作一些巨大的单元:
C-f 往前移动一个字符,M-f 往前移动一整个词,等等。

同样还要注意 M-< 和 M-> 需要你分别按下 Shift+Alt+comma 和
Shift+Alt+dot ,就像 < 和 > 用 Shift+comma 和 Shift+dot 操作一样。(除
非你使用一个非标准的 US 键盘设计。)


注意 C-k 删除 (kills,通常都这么说的[在 Emacs 里])光标下直到行末的所
有字符,除了这一行它本身(也就是,没有删除最后[删除完后剩下的]新的一
行)。它仅仅删除这一行直到光标之后没有文字。换句话话说,为了删除一整行,
你得将光标移到行的开头,然后敲击 C-k 两次:一次用来删除当前行的文字,
一次用来删除行本身。



17.5 保存文件


为了保存文件,敲击


  1. C-x C-s
复制代码


Emacs 不会向你询问一个文件名,缓冲区会被保存在它原来加载的那个文件上。
如果你想将文本保存到其他的文件,敲击


  1. C-x C-w
复制代码


如果你在运行期间第一次保存这个文件,正常情况下 Emacs 会将你的旧版文件
保存成备份文件,就是同样的名字后边加了个符号:若你正编辑一个文件
“cars.txt”,Emacs 会创建一个备份"cars.txt~"。

这个备份文件是你打开的这个文件[未操作前]的一个拷贝。当你工作时,
Emacs 也会有规律地为你正在操作的文件创建一个 auto-save [自动保存的]
拷贝,文件名加上散列符号:#cars.txt#。这个文件会在你使用 C-x C-s 保存
后被删除。


当你已经编辑好了一个文件,需要关闭缓冲区保存它只需敲击


  1. C-x k
复制代码


接着 Emacs 会询问你想要关闭哪一个缓冲区,缺省为当前的缓冲区,也可以选
择后敲击回车。如果你还不没保存文件,Emacs 会询问你是否真的想要关闭缓冲
区。



17.5.1 离开 Emacs


当你已经用 Emacs 完成了工作,敲击


  1. C-x C-c
复制代码
        
                                               
离开 Emacs。如果你还有任何没有保存的文件,Emacs 会告诉你,然后依次询问
是否许想要保存。如果你对其中的任何一个回答不,Emacs 会询问作为最后的证
实然后退出。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表