《Unix & Linux》大学教程小结

        大概在两个月以前我就开始看这本书了,我没有看书的习惯。应该可以说这是第一本我看了这么多的书,这本书内容比较简单,讲的东西都很容易理解。现在我已经看到了第12章,今天忽然想到应该做点小总结不然看完了又什么都忘了。我并没有看得很仔细,只是走马观花的看了一些。没有每天都看一点,只是想到的时候都看一点。希望自己可以坚持看完这本书。

         &1. Unix 简介   &&    &2.什么是Linux?什么是Unix

          把这两章放在一起,我觉得这两章大体上都是在介绍Unix可Linux的背景和一些历史。在大多数的Linux的书上都有这些内容。感兴趣的可以翻阅一下。


          &3. Unix连接

           这一章主要介绍的是一个思想:终端和主机。大致来说终端是与外界交互的东西,键盘,鼠标,显示器等等。主机是指内在处理的其他部件,如硬盘,内存等等。


          &4. 开始使用Unix

           介绍了一些基本的操作。该密码的命令是passwd,检查他人是否使用过我的账户可以用命令last。最后还有一个超级用户的概念,这个概念非常重要,不了解的通过百度了解一下。这篇文章主要说这本书的框架,对于细节还是自己去翻书。


           &5.Gui:图形用户界面

            介绍了gui和xwindows的概念和历史。感觉并没有深入,这是大概介绍了一些东西。


           &6.Unix工作环境

            运行级别是这一章的一个重点,可以重点了解一下。改变运行级别的命令是init后面跟着一个数字表示运行级别。然后这一章还介绍了Unix可以同时不止做一件事情,但是我觉得现在的操作系统要是没有这个特性未免也太......dmesg可以显示启动消息,但是这些东西会很多所以建议使用dmesg | less这样就可以慢慢看了。我反正是看不懂这些东西。


            &7.Unix键盘使用

             我觉得这一章还是比较有趣的,所以这一章还是好好的去看一下吧。介绍键盘的工作原理,读了这章可以了解到一些很有趣的事情。 这一章需要整章看一下,不过也稍微总结一下我感兴趣的内容:主要是一些信号与键盘的映射,还有eof的信号,以及显示键盘映射stty -a 和 修改键的映射,这个内容非常有趣很适合喜欢恶作剧的同学。还有注意回车和换行的概念。回车表示回到首部,换行是指往下一行但是光标并不会回到行首。我们现在说的回车一般是指回车+换行。


            &8.能够立即使用的程序

             这一章介绍了一些比较实用的命令,比如查找程序用的which/type和whence,提醒服务calendar查看系统 信息的uptime/hostname/uname显示自己的信息whiami.quota.显示其他用户的信息users/who和w。具体的使用看书上对应的章节。上面的几个都是我觉得很有用的命令。


             &9.文档资料:Unix手册与Info

             这一章是教导我们查看命令的用处或者搜索相应的命令。建议看一下whatis apropos 的使用方法还有info了解一下。其实这个在我看来还不如直接百度命令,因为我的英语水平不高,如果英语好的人这个还是很有帮助的。


            &10.命令语法

              如果对linux的命令行一点都不了解的人建议看一下。如果已经大致都了解了命令的格式和使用方法这一章可以跳过,因为这一章讲的很粗浅。这一章唯一的收获是在终端中可以同时输入两条命令,但是要用分号隔开。比如cd /; ls他会在执行完cd /以后执行ls。


              &11. Shell

              这一章主要介绍的是shell的历史背景之类的。还有shell的几种最常见的shell,主要的内容还是在后面的内容里面介绍,这一章只是粗浅的介绍。


            &12.使用shell:变量和选项

               这一章是比较重要的一章,介绍了shell变量和环境变量,以及他们的设置,修改,删除,和添加。还有他们的关系/作用和区别,具体的还是看书吧。


-------------------------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------

前面的内容由于隔的时间比较久了,记得也不清楚所以写的很大概。后面的内容,因为我觉得比较重要,而且我是看了就写的,印象也比较深刻所以会介绍比较多的细节。


/*--2013.11.15  Friday--*/

&13.使用Shell:命令和定制

13.1~13.3:

 这三章主要介绍了元字符和转义字符。所谓的元字符就是指在shell中有特别的含义的一些字符。比如$  ;   ,  !  # 等等。比如在终端输入

<span style="font-size:14px;">echo $USER
bearox</span>

        得到的并不是$USER,而是当前用户的用户名我这里得到的答案是bearox。因为$是一个元字符,这里他的意思变成了把变量USER的值输出来。那么我想要得到$USER该怎么输出呢?首先我们可以用 ' \ ' ——反斜线。他会把后面的元字符理解成字面上的意思。比如输入

<span style="font-size:14px;">echo \$USER
$USER</span>

      这时候得到的结果就不再是bearox,而是$USER。转义字符甚至可以转义回车,本来回车是代表每一行的输入结束。如果你输入

<span style="font-size:14px;">echo How are you? \<回车>     //表示在反斜线后面输入一个回车</span>

       什么都不会输出,而是给你一个提示符,让你继续输入,那你就接着输入直到回车才会输出结果,自己去体验一下就知道是怎么回事了。注意每次出现元字符的时候前面都需要加一个反斜线。这样对于比较长的输入会显得很麻烦。这时候可以用单引号‘’比如输入

<span style="font-size:14px;">echo '$USER, &TERM' 等价于 echo \$USER\, \$TERM</span>

       同样的单引号同样适用于回车比如输入

<span style="font-size:14px;">echo 'How are you? <回车>I'm fine. Thank you!'
How are you?
I'm fine. Thank you!</span>

       (2015-9-27)上面这个例子是错误的,最近需要重新学习Linux,就来看这篇文章了。在试用这些例子的时候发现这个出错了。原因是I'm fine.  这里面有一个单引号会把这句话结束,所以最后Thank you! 后面的单引号不需要了。或者这个例子应该改成I am fine。

下面两行是结果。  <回车>表示在这个位置输入一个回车,下面就不再重复提醒,看到这个写法就应该知道了。很奇怪的一点是我用反斜线转义回车的时候,回车只是没了,并没有输出,使用单引号的时候回车输出来了。这一点我也是在写这篇博客的时候才发现的。但有时候我们希望如$这种特殊的符号不要被转义该怎么做呢?

<span style="font-size:14px;">echo 'My name is: ' $USER ', my terminal is: ' $TERM</span>

        这样写也不会有问题,但是单引号比较多,而且不容易看清楚,如果元字符比较多的情况下,这样会比较混乱,这时候就需要用双引号" "。双引号比较特殊,双引号只保留 $ (美元符号) \(反斜线)和 `(反引号)这三个元字符,其他的都会被转义,所以上面的那句话可以写成

<span style="font-size:14px;">echo "My name is: $USER, my terminal is: $TERM"</span>

下面是小结:

使用反斜线引用单个字符(称为转义了这个字符)

使用单引号引用一串字符

使用双引号引用一串字符,但是保留了$ \ 和 `

从上面看出单引号比双引号的效用更强(能转义所有字符),所以有时候称单引号为强引用,双引号为弱引用。实际上最强的还是反斜线,反斜线可以应用单引号,双引号甚至是是它自己本身!


/*---2013.11.16--*/

13.4~13.14: 

        前两个小节告诉我们shell的命令分为内部命令和外部命令。比如date(显示时间)就是一个外部命令,不是shell的内置命令。time和set就是shell的内置命令。看一条命令是内部命令还是外部命令用type来完成。

<span style="font-size:14px;">type date time setdate 
date 是 /usr/bin/date
set 是 shell 内嵌
time 是 shell 关键字</span>

  第一行是输入的命令,下面三行是输出的结果。从结果中看护set和time都是shell的内部命令,不用去管内嵌和关键字的区别,这个我也不知道。我坚信随着我学习的深入这些疑点都会慢慢解开。而date就是一条外部命令,路径显示的就是这条命令所在的路径。这意味这date是一个独立的程序,我们可以通过改变路径内提供的内容来改变这个程序的功能。那么shell是怎么找到这个外部命令的路径的呢?其实这些都记录在一个名为PATH的环境变量里面。
<span style="font-size:14px;">echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/bearox/.local/bin:/home/bearox/bin</span>

       上面是我的fedora19中默认被指的PATH的值, 我们也可以自己来修改PATH的值,在里面存放我们自己写的一些命令,这样就可以在shell里面直接运行。

<span style="font-size:14px;">PATH="$PATH:$HOME/Document/bin"</span>

       如果你理解了元符号以及转义字符和环境变量的设定,那么你应该能看懂这句话。上面的命令是把自己的用户目录下面的/Document/bin目录下的内容加入搜索的路径中。但是如果你自己写了一个date,那么你输入date他会运行哪一个呢?他只会执行最先找到的那个程序。所以想要优先运行自己写的程序的话需要把自己的路径添加到现有的PATH的前面。这样他会优先查找自己的bin目录。

        然后13.9开始介绍了怎么定制自己的shell,严格的说是怎么定制自己的shell提示符。我使用的shell是bash,而且我觉得短期内我也不会去尝试使用其他的shell。所以下面我都以自己的bash为例子。bash的命令提示符是存储在一个名为PS1的环境变量中的,我们修改这个环境变量就可以按照自己喜欢的方式来显示命令提示符。

<span style="font-size:14px;">PS1="$USER $ "</span>

        然后我的提示符就是我的用户名加上一个$符号。如果你想增加别的东西都行,甚至是命令。命令用`反引号隔开,这个也是这里学会的。

<span style="font-size:14px;">echo "The time and date are `darte`"
The time and date are 2013年 11月 16日 星期六 10:59:46 CST</span>

        第一行是我们的输入,第二行是输出。这里你应该能看出来反引号的用法了,就不再赘述了。比如你的提示符想要显示时间那你可以用

<span style="font-size:14px;">PS1="The time is `date`"</span>

        这样你的提示符就会实时显示当前的时间了。如果你想每次登陆shell都能这样显示的话,你还需要把这行加入初始化文件中,对于我的话是home目录下的.bashrc。对了,你甚至可以让命令提示符单独显示一行,命令的输入单独一行。这就需要转义回车,这个我们在上面说到了,可以试试看,我觉得这样会比较清晰。

<span style="font-size:14px;">PS1="The time is `date`<回车>" </span>

13章剩余部分:

         剩下的部分,对我的帮助并不大,因为这里面的大多数内容我都已经了解了,所以我写的比较简单。剩下的部分主要介绍的是命令的历史列表。可以用命令history来查看自己使用过的命令,你发现每个命令都有一个编号。然后重新调用这个命令的话可以用    !命令的序号   来调用这个命令。  比如你用history查看时有命令 who am i ,它的编号是15, 那么你就可以通过  !15 来调用whoami这条命令。然后,有时候你觉得这个历史列表太长了,那么可以通过修改环境变量HISTSIZE来改变历史列表的大小,我这里的默认大小是1000,我把它改成了50.

        还有这里介绍了一个小技巧,不过我觉得实用性不大。

<span style="font-size:14px;">rm temp*       //这个命令删除当前目录下所有以temp开头的文件</span>

         但是像上面这样做有一定的风险,因为你可能有一个很重要的文件刚好也是以temp开头的。那么为了保险,你可以把以temp开头的文件全部显示出来看一下。用
<span style="font-size:14px;">ls temp*</span>
         这样就得到了所有的temp开头的文件,确认了以后,再用
<span style="font-size:14px;">^ls^rm</span>
          这样会很保险。上面这句话的意思是把上一条命令的ls改成rm。因为重新输入命令的话总是可能会出错。

          然后介绍了自动补全,这个只需要按下tab就能实现了。。大概的意思是比如当前目录下有一个很长的文件,helloworld.cpp 然后你需要这个文件,输入he然后按下tab键,他会自动补全整个文件的名字。前提是当前目录下没有其他的文件以he开头。

          然后很有用的就是别名命令 alias。 因为,我以前单独学习过这个命令,所以我已经会了。这个命令还是很有用的,可以带来很多方便。不熟悉的人建议自己去好好学习一下这个命令。也可以看一下这里,这个可以让你简单的理解一下alias的作用。学会以后可以在自己的.bashrc加入各种自己喜欢的别名,这也相当于shell的定制把。http://blog.csdn.net/bearox/article/details/9390869



/*-------------------------Wed Nov 27------------------------------------------*/

&14.使用shell: 初始化文件

           这一章的内容很有用,之前我就了解了一下关于初始化文件的一些内容,看了这一章帮我理顺了很多东西。我用的是bash,所以下面都是用我自己的bash shell举例子的。

           在我的home目录下有三个文件: .bashrc     .bash_profile       .bash_logout , 分别为环境文件,登陆文件和注销文件。环境文件和登陆文件都是初始化文件,登陆文件存放着所有希望在每次登陆时自动执行的命令,而环境文件存放着每次启动一个新shell时都会自动执行的命令。注销文件就是存放着注销时自动运行的命令。这么说可能有点抽象,下面会说的具体一些。

          不管是初始化文件还是注销文件都是存在于自己的home目录下,但是用ls命令是看不到这些文件的,这些文件都是点开头的文件,默认是隐藏的,需要用命令ls -a才能看到这些文件,或许还有别的配置文件比如.vimrc这个文件可以配置vim的一些功能。如果没有这个文件,也可以自己来创建这个文件。或者是去网上下载大神的配置文件,这样的话你的vim会变得比较智能,比如自动补全,自动缩进等功能。可以注意到环境文件一般都是以字符串rc结尾的,比如.bashrc  .vimrc . exrc等等。rc是"run commands(运行命令)"的缩写。

          初始化文件和注销文件很容易区分,但是登陆文件和环境文件就不容易区分,其实我到现在还是对于这两者有一点模糊,有些命令不知道到底应该放在哪个文件下面。最好的方法就是试试看,如果放在一个文件下面没有作用,那么就换一个文件试试看。在说这个之前首先我们要区分一下登陆shell和非登陆shell,顾名思义登陆shell就是启动之前需要的登陆的,比如按下alt + alt + f3 会进入到一个虚拟控制台,让你登陆shell。或者是用远程命令ssh连接远程主机的时候都需要登陆(我还从来没有用过ssh,以后需要了再学吧)。而非登陆shell就是,我们平时的开启一个普通的终端,并不需要我们登陆的shell。那么登陆文件和环境文件的区别就是

1.登陆shell会执行登陆文件和环境文件

2.非登陆shell只执行环境文件

        虽然这么说,但是bash比较特殊,bash的登陆shell只执行登陆文件,而不执行环境文件。如果需要他执行环境文件的话需要在登陆文件中加上一条特殊的命令。

<span style="font-size:14px;">if [ -f ${HOME}/ .bashrc ]
  then source ${HOME}/ .bashrc
fi                                     //这里的意思是查看.bashrc的文件是否存在,如果存在就运行这个文件</span>

        书上推荐登陆文件中应该包含

1.创建或者修改环境变量的命令 (书上说环境变量只能在登陆文件中修改,但是我在环境文件中修改貌似也生效了)

2.执行所有一次性的命令             (我不太理解这个)

        环境文件中则存放一些不能在环境中保存的自定义项,特别是shell选项,别名和函数。


这一章有一部分的内容是在介绍别的shell的配置文件,但是因为我用的是bash,而且我认为在我熟悉这个shell之前是不会去尝试其他shell的,所以这部分的内容我都跳过了。



/*-------------------------------------------Mon Dec 2----------------------------------------*/

&15. 重定向和管道

15.1~15.12:这几章差不多都是在介绍重定向

       15.1 && 15.2:unix准则:Small is beautiful 或者说 Less is more. 主要是说每个程序都专心完成自己的任务,比如排序程序就专注与排序,不去关心输出或者输入。到现在发现有些时候简单已经无法满足用户的需求,比如早些的编辑器虽然简单,但是远远不及vim或者emacs强大,所以现在的设计准则是:除非程序无法更小,否则小的就是完美的。

         15.3:标准输入,标准输出和标准错误:这里简单理解一下,标准输入就是指键盘输入(或者鼠标,扫描仪输入等),标准输出指屏幕(或者打印机之类的),标准错误一般是把错误信息显示在屏幕上。

         15.4 && 15.5:重定向标准输出:有时候我们希望把结果存储起来,而不是只是显示在屏幕上的时候就可以重定向输出。比如把排序程序sort的结果存在文件result中就用  sort > result      这条命令就可以把sort的结果存储到result文件中,如果文件不存在那么他会创建文件,如果文件已经存在,它会覆盖文件的内容。而有时候你不想覆盖原来的文件,而是只想把结果存在原文件的尾部。就用 sort >> result   如果原文件不存在,它会创建这个文件,如果原文件存在,它会把结果存在原文件的尾部。由于第一条命令会把原文件的内容覆盖了,而且是无法恢复的。所以第一条命令的风险很大。这时候就可以设置环境变量   noclobber   用命令 set -o noclobber  这样,以后如果 sort > result 原文件result已经存在了的话,就会提示你原文件已经存在。而如果你设置了又想暂时忽略这个环境变量来覆盖原来的文件就用 sort >| result 这样就算result存在,也会覆盖result。 在bash中 noclobber 对 >>没有作用。

         15.6:重定向输入:sort的数据不想从键盘输入可以从已经存在文件中输入。 sort < in 这时候就会从in中输入sort需要的数据, sort < in > out这样会从in中输入测试数据,然后把结果输出都out

         15.7:bash重定向标准:上面介绍了重定向标准输入和标准输出,那标准错误怎么办呢?这里首先要介绍一个文件描述符,在unix中有个思想叫万物皆文件,所以每一个设备都有一个文件描述符,其实就是一个数字标识符比如一个程序可能是从#8号文件中读取数据的。比如某个程序就是从#8号文件中输入的,那么要重定向输入就要用命令 command 8 < input 这时候就会把输入重定向到文件input。而unix提供了三个预定义的文件描述符。0代表标准输入,1代表标准输出,2代表标准错误。当重定向输入时默认的就是标准输入,重定向输出时默认的就是标准输出,也就是说 sort 0 < input 和 sort < input等价。而要重定向标准错误那么就要用 sort 2 > errors。 也可以直接 sort 0< input   1 > output 2 > errors 这样把标准输入重定向到input,标准输出重定向到output,标准错误重定向到errors

<span style="font-size:14px;">总结:因为我觉得上面的内容比较重要,这里有必要来一个小节
1.重定向标准输入: sort < input   == sort 0 < input
2.重定向标准输出:sort > output == sort 1 > output    //如果output文件不存在那么会创建文件,如果output文件存在会覆盖。可以通过设置noclobber使得不会发生覆盖,设置了noclobber以后可以用sort >| result来暂时忽略
               sort >> output = sort 1 >> output   //如果output文件不存在那么会创建文件,如果output文件存在,会把数据添加到output文件的尾部。
3.重定向标准错误:sort 2 > errors
      可以直接把上面几个结合起来用 sort 0 < input 1> output 2 > errors 
</span>

         15.8:子shell:这里涉及的就是子进程和父进程的关系,这里我觉得有用的东西就是 用小括号标出一条命令那么这条命令就会在子shell中执行,并且不用等待命令执行完才能输入下一条命令。比如,当前我在documents的目录下我需要到 download下面执行一条./a.out的命令。那么我可以用(cd ~/download/; ./a.out)这样命令执行完以后我还是在document的目录下。并且我不需要等待a.out的命令执行结束就可以往下输入命令。如果生成子shell去执行,那么必须等待子shell结束了,原来的shell才能继续输入命令。

         15.9:Cshell的重定向标准错误:正如我上面说的我用的是bash,所以这章我直接条过了,没有看。

         15.10:组合标准输出和错误输出:现在考虑一个问题,如果想把标准输出和标准错误重定向到同一个文件里面该怎么办呢?直接 sort 1 > out 2 > out这样行么?这个我没试过,今天没时间,有时间了再去试试看,要是有人尝试过,可以留言和我说一下。不过我觉得可能不行,第二次重定向可能会把第一个的out覆盖掉(猜测)。那么怎么做呢? sort 1>out 2>&1 就是用&然后后面跟文件标识。如果是想把内容添加到文件的尾部,那么就用sort >> out 2 > &1(书上是这么写的,但是我很奇怪,第二个不用>>么),这个也有待实验考证。书上还介绍了一个简便的方法就是用一句话来完成 sort &> out 或者是 sor>& out这样,标准输出和标准错误都同时被重定向到out这个文件里。如果是追加输出的话不能用sort &>> out 或者 sort >>& out还是得老老实实地做。

          15.11:抛弃输出:有时候希望运行一个程序,但是并不关心它的标准输出或者标准错误该怎么做呢?那么就把他们重定向到一个特殊的文件 /dev/null (位桶),一切发给位桶的东西都会永远消失。比如sort > /dev/null .

          15.12:这个小节把前面几个小节的内容总结了一下,做了一些实验,我就不介绍了。自己用ls sort之类的命令做一下实验把。

&16.过滤器:简介和基本操作

16.1-16.4

 简单介绍了命令的长选项和短选项。一般我们用得比较多的都是短选项,而最常用的长选项应该就是--help。然后介绍了过滤器的概念,看下面的例子:

<span style="font-size:14px;">cat new old extra | grep Harley | sort | less</span>

在这个管道线中,提取了三个文件new, old 和 extra 中所有包含Harley的行,然后进行排序,最后通过less每次一屏地输出。一个程序如果能够在官道线中使用(不包括第一个和最后一个),我们称它为过滤器。精确地说,过滤器就是任何能够从标准输入读取文本数据并向标准输出写入文本数据(每次一行)的程序。这里值得注意的一个地方是,管道线中的第一个和最后一个程序不必是过滤器。例如上面的less就不是过滤器。

然后,后面巴拉巴拉说了一堆。主要就是告诉你,过滤器很强大的,让你好好学习过滤器。真正牛逼的人都是怎么样之类的……

16.5 可能最简单的过滤器 :cat

cat就是最简单的过滤器,没有可能这么一说。因为它做的就是每次一行从标准输入读取数据,然后写到标准输出。它没有中间的处理过程,因此它就是最简单的过滤器,没有之一。一般我们用得最多的就是cat 后面跟一个小文件的名字,这样可以查看这个文件的内容。但是这个文件不能太大,文件内容超出一面的话上面的内容是无法看到的。其实,cat最简单的用法是后面什么都不跟,就输入一个cat。它会从键盘读入字符(一行为单位,直到遇到回车),然后输出到屏幕上。Ctrl-D则停止输入。cat也可以用来将一个文件复制到另一个文件中

<span style="font-size:14px;">cat file1 > file2</span>

这条命令会把file1中的内容复制到file2中。如果file2不存在,那么会新建这个文件。如果file2本身就是存在的,那么file2会被覆盖。


16.5 增强过滤器的功能

还是cat命令,标准的cat 命令应该是从标准输入中读取数据的,也就是键盘输入.那么,如果我们需要它从文件读取数据就该使用重定向

cat < data
但是,我们平时都不是这么用的,我们往往会省略中间的那个符号,直接在cat后面跟我们需要显示的文件名. 看上去这只是一个很小的改变,但是,这一点改变就使得cat程序变得更加复杂。不仅仅如此,我们甚至可以在cat后面跟多个文件,看下面三个命令:

cat name address phone
cat name address phone > info
cat name address phone | sort
第一个会把三个文件的内容一行一行地输出到屏幕上。第二个则是可以看成把三个文件组合起来并写入到info文件中。最后一个则是将数据通过管道传递给sort程序做进一步的处理。这样,如果一个过滤器需要对多个文件进行操作的时候就不用考虑怎么从多个文件中读取数据,而是直接使用cat就行了。当然,其它很多过滤器包括sort都是支持从多个文件中读取输入的。

这一章,稍微更改了一下过滤器的定义。无论是从标准输入还是从文件中读取数据,经过处理后,写到标准输出的就是过滤器。

16.6 最有用的过滤器列表

这一章主要就是列了一张表,里面是常用的一些过滤器,有需要是翻阅一下就行了。接下去会详细地介绍一些过滤器。






      

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值