Slack book中文译本(转)

Slack book中文译本(转)[@more@]

  

前言

  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

  许多时候当我们列出你将运行的命令时,我们会以一个示例命令符来显示它们。当一个命令需要以普通用户的身份来运行,我们将显示美元符($)为命令提示符。当一个命令需要以根用户的身份来运行,我们将显示井号(#)为命令提示符。

网络硬件

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

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

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

  

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的驱动)需要参数,你必须选择好有正确参数的那行。

  

PCMCIA网络设备

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

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

网络工具

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

  

route

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

  

netconfig

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

1155278515_ddvip_6517.gif

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

1155278562_ddvip_2684.gif

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

  

pppsetup

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

1155278636_ddvip_4085.gif

  

电话号码

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

1155278685_ddvip_2156.gif

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

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

  

调制解调器(Modem)

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

1155278734_ddvip_5221.gif

  

回拨

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

1155278749_ddvip_7722.gif

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

  第七章 引导

  引导你的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初始屏幕

1155278828_ddvip_5879.gif

  如果这是你第一次设置LILO,你最好选择“simple”。另外或许你会发现“expert”会更快如果你熟悉LILO和Linux的话。选择“simple”将开始LILO的配置。

  如果内核帧缓冲支持已编译到你的内核中,liloconfig将询问你想使用哪一种视频解析度。该解析度也会被XFree86帧缓冲服务器使用。如果你不想让控制台运行于一个特定的视频模式,选择normal将继续使用标准的 80x25 文本模式。

  插图 7-2.Liloconfig询问使用哪种视频模式的帧缓冲

1155278923_ddvip_6508.gif

  LILO的配置的下一部分是选择它的安装位置。这或许是最重要的步骤。下面的列表说明了安装位置:

  Root 这个选项安装LILO到你Linux根分区的开始。这是最安全的选项如果你在你的计算机上安装了其他操作系统。它确保任何其他引导器不被覆盖。缺点是如果你的Linux驱动器是你系统里的第一个驱动器的话LILO将只能从这里引导。 Floppy 该方法甚至比前面的更安全。它创建一个引导软盘用于引导你的Linux系统。这将使引导器完全与硬盘隔离,所以当你想使用Slackware时你只需从这个软盘引导。 MBR 你可以使用这种方式如果Slackware是你计算机上唯一的操作系统,或者如果你想用LILO选择在你的计算机上的多个操作系统。

  注意:该选项将覆盖任何在MBR上其他的引导器。

  在选择安装位置后,liloconfig将写入配置文件并安装LILO。就是这样。如果你选择了"expert"模式你会看到一个特别的菜单。这个菜单允许你改变/etc/lilo.conf文件,添加其他操作系统到你的引导菜单。expert菜单看起来像这样:

  插图 7-3.liloconfig "expert"模式

1155279007_ddvip_9519.gif

  无论你的系统(软件)配置如何,安装一个可工作的引导器是简单的。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:WINDOWSCOMMAND;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

:LINUX

ECHO Starting Slackware Linux...

CD LINUX

LOADLIN C:LINUXVMLINUZ ROOT= RO

GOTO END

:END

  你需要以Linux设备名来指定你的根分区,就像/dev/hda2或其他的。你始终都可以在命令行使用LOADLIN。你可以以上述例子中相同的形式简单地使用它。LOADLIN文档包含了很多关于如何使用它的例子。

  第八章 Shell

  在一个图形界面环境下,接口是由一个可以创建窗口,滚动条,菜单等的程序提供的.而在一个命令行的环境下,用户接口是"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到底在哪里的呢?答案是"PATH环境变量".大多数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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-941375/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752019/viewspace-941375/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值