Linux操作

系统软件对硬件系统的首次扩展主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用而其他的诸如编译程序、数据库管理系统,以及大量的应用软件,都直接依赖于操作系统的支持。

Ken Thompson (肯.汤普逊)于1969年写出unix原型,1972年Dennis M.Ritchie(丹尼斯.里奇)在B语言基础上设计出C语言,1973年两人合作写出了unix操作系统。

由于unix被通用电气私有化,Andrew S. Tanenbaum(塔能鲍姆)在不使用任何用用源代码的前提下开发出与unix兼容的minix

1991年年仅 21 岁的林纳斯(Linus) 就读于赫尔辛基大学期间,写出了Linux 第一个内核的雏形。

练习题1: ls、cd、mkdir、touch、重定向>、mv、rm命令的使用

Linux 主要目录速查表

/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~ 表示当前用户的家目录
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下


用户目录

位于 /home/user,称之为用户工作目录或家目录,表示方式:


   
   
  1. /home/user
  2. ~

 Linux 终端命令

1.常用 Linux 命令的基本使用

序号

命令

对应英文

作用

01

ls

list

查看当前文件夹下的内容

02

pwd

print wrok directory

查看当前所在文件夹

03

cd [目录名]

change directory

切换文件夹

04

touch [文件名]

touch

如果文件不存在,新建文件

05

mkdir [目录名]

make directory

创建目录

06

rm [文件名]

remove

删除指定的文件名

07

clear

clear

清屏

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示
  • 按  光标键可以在曾经使用过的命令之间来回切换
  • 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c

comand --help:  显示comand命名的帮助信息

man comand:  查阅command命令的使用手册

操作键

功能

空格键

显示手册页的下一屏

Enter 键

一次滚动手册页的一行

b

回滚一屏

f

前滚一屏

q

退出

/word

搜索 word 字符串


ls:

参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小

通配符

含义

*

文件代表文件名中所有字符

ls te*

查找以te开头的文件

ls *html

查找结尾为html的文件

代表文件名中任意一个字符

ls ?.c

只找第一个字符任意,后缀为.c的文件

ls a.?

只找只有3个字符,前2字符为a.,最后一个字符任意的文件

[]

[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。

[abc]

匹配a、b、c中的任意一个

[a-f]

匹配从a到f范围内的的任意一个字符

ls [a-f]*

找到从a到f范围内的的任意一个字符开头的文件

ls a-f

查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用

\

如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。

ls \*a

查找文件名为*a的文件



mv:移动、重命名
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
-f    禁止交互式操作,如有覆盖也不会给出提示
-i    确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v   显示移动进度


cp:拷贝

cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。

-v 显示拷贝进度


>:输出重定向命令

Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。

如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )

注意: >输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部

more:分屏显示

查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,每次只显示一页,按下空格键可以显示下一页,按下q键退出显示,按下h键可以获取帮助。

管道:|

管道:一个命令的输出可以通过管道做为另一个命令的输入。

ln:建立链接文件

Linux链接文件类似于Windows下的快捷方式。

链接文件分为软链接和硬链接。

软链接:软链接不占用磁盘空间,源文件删除则软链接失效。

硬链接:硬链接只能链接普通文件,不能链接目录。


   
   
  1. ln 源文件 链接文件
  2. ln -s 源文件 链接文件

如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。

注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。

cat:查看或者合并文件内容。

grep:文本搜索

Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式为:

grep [-选项] ‘搜索内容串’文件名
grep 'a' 1.txt

在grep命令中输入字符串参数时,最好引号或双引号括起来。可以用正则表达式。

-v 显示不包含匹配文本的所有行(相当于求反)

-n 显示匹配行及行号

-i 忽略大小写

find:查找文件
find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
find ./ -name test.sh 查找当前目录下所有名为test.sh的文件
find ./ -name '*.sh' 查找当前目录下所有后缀为.sh的文件
find ./ -name "[A-Z]*" 查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M 查找在/tmp 目录下等于2M的文件
find /tmp -size +2M 查找在/tmp 目录下大于2M的文件
find /tmp -size -2M 查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M 查找当前目录下大于4k,小于5M的文件
find ./ -perm 777 查找当前目录下权限为 777 的文件或目录

tar:归档管理

计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式 tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
注意:除了f需要放在参数的最后,其它参数的顺序任意。


gzip:文件压缩解压
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式:gzip  [选项]  被压缩文件    -d解压           -r压缩所有子目录
  

tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。

压缩用法:tar cvzf 压缩包包名 文件1 文件2 ...     -z :指定压缩包的格式为:file.tar.gz
解压用法: tar zxvf 压缩包包名   -z:指定压缩包的格式为:file.tar.gz
解压到指定目录:-C (大写字母“C”)

bzip2:文件压缩解压
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar -jcvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c)
解压用法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.bz2)

zip、unzip:文件压缩解压
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件

which:查看命令位置   which ls

chmod:修改文件权限
chmod 修改文件权限有两种使用格式:字母法与数字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组( group )者,即用户组
o other 表示其他以外的人
a all 表示这三者皆是
+ 增加权限
- 撤销权限
= 设定权限
r read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
w write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
x excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

数字法:“rwx” 这些权限也可以用数字来代
r 读取权限,数字代号为 "4"
w 写入权限,数字代号为 "2"
x 执行权限,数字代号为 "1"
- 不具任何权限,数字代号为 "0"
如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename
文件所有者:读、写、执行权限
同组用户:读、执行的权限
其它用户:执行的权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限

sudo:切换到管理员账号。  sudo -s

passwd:设置用户密码
在Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户密码。用户也可以直接使用该命令来修改自己的密码,而无需在命令后面使用用户名。


exit:退出登录账户

如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登陆账户;

如果是切换后的登陆用户,退出则返回上一个登陆账号。


who:查看登录用户
who命令用于查看当前所有登录系统的用户信息。
-q或--count 只显示用户的登录账号和登录用户的数量
-u或--heading 显示列标题




reboot、shutdown、init:关机重启

reboot 重新启动操作系统
shutdown –r now 重新启动操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:25 系统在今天的20:25 会关机

shutdown -h +10 系统再过十分钟后自动关机



 1. 简述,如果在Ubuntu左侧的快捷菜单中,没有终端,那么该怎样将其找出来
```
直接点击左侧第一个按钮,然后输入"terminal",点击终端打开.
或者右键空白区域,点击在终端中打开 ```
 2. 使用Linux查看家目录下的文件、文件夹的名字:ls ~
 3. 用列表的方式查看家目录下的文件、文件夹的名字  ls -l ~
 4. 显示家目录下的文件、文件夹的名字,包括隐藏的文件夹 ls -a ~
 5. 在家路径下创建A文件夹mkdir ~/A
 6. 在上一步创建的A文件夹中,创建B/C/D文件夹
        cd ~/A
        mkdir -p B/C/D
ls---->显示当前路径下的文件以及文件夹的名字

pwd--->显示当前正在操作的路径
/  根目录,类似于windows中c或者d
/home/python -----> 根路径下的  home文件下的python文件夹


/ 斜杠
\ 反斜杠   \n
| 竖杠
- 横杠
_ 下划线

touch 文件名 ----->创建一个文件
touch 1.txt
cd 路径 ----->跳转到某个路径
cd Desktop --->如果当前路径下有Desktop文件夹,那么就跳转到里面
mkdir 文件夹的名字  ----->创建一个文件夹
mkdir laowang ---->在当前路径下创建一个 laowang文件夹
tab键 自动补全
cd .. 调到上一层路径
cd ../..
. 一个点表示当前路径
cd ./Desktop 跳转到当前路径下的 Desktop文件夹中
cd - 调到 上一次所在的路径(遥控器的回看)
cd ~ 快速回家 
rm 文件或者文件夹的名字
如果是文件夹,那么需要添加-r
 选项

rm -r xxx
rm xxx -r 都可以 ,,,

命令的顺序要求:显示Linux命令,然后在根据这个命令是否需要参数或者选项进行添加,但是选项和参数一般情况下没有先后顺序

tree 以目录树的方式显示 文件结构

 7. 在上一步所在的路径中,创建C/E/F文件夹
mkdir -p C/E/F
 8. A/B/C中创建一个hello.py文件
touch ~/A/B/C/hello.py
 9. 在A/B文件夹中创建一个world.py文件

touch ~/A/B/world.py

10. 将/usr/bin路径下所有的文件(文件夹)的名字存储到 上一步创建的world.py文件中

```
ls /usr/bin/ > ~/A/B/world.py
```
 11. 复制A/B/C/hello.py文件到家目录
```
cd ~
cp /A/B/C/hello.py ./
```
 12. 将/usr/local/bin/路径下所有的文件(文件夹)的名字存储到 A/B/C/haha.py文件中
```
cd ~
ls /usr/local/bin > A/B/C/haha.py
```
 13. 将A/B/C/haha.py文件移动到A/B文件夹中
```
cd ~
mv A/B/C/haha.py A/B/
```
 14. 查看当前操作的路径
```
pwd
```
 15. 跳转到桌面路径
```
cd /home/python/Desktop
cd ~/Desktop
```
 16. 将当前的路径信息存储到 test.txt文件中
```
pwd > ./test.txt
```
 17. 查看test.txt文件中内容
```
cat test.txt
```
 18. 删除test.txt文件
```
rm test.txt
```
 19. 显示A/B/haha.py文件的所有内容
```
cat A/B/haha.py
```
 20. 搜索A/B/haha.py文件中以字母p开头的所有内容
```
cd ~
grep -n "^p" A/B/haha.py
```


练习题2


练习常用命令




1. 将历史命令信息,存储到桌面上的test3文件中的1.txt文件中


cd /home/python/Desktop
mkdir test3
history > test3/1.txt


2. 将1.txt文件中,包含m的所有信息,存到test3文件夹中的2.txt文件中


cd /home/python/Desktop
grep "m" test3/1.txt > test3/2.txt


3. 为2.txt创建一个软连接(2-softlink.txt)


cd /home/python/Desktop
ln -s /home/python/Desktop/test3/2.txt test3/2-softlink.txt


注意:如果是在目标文件所在目录以外的目录创建软链接,那么软链接的目标文件路径必须写为绝对路径


4. 为1.txt创建一个硬链接(1-hardlink.txt)


cd /home/python/Desktop
ln test3/1.txt test3/1-hardlink.txt


5. 删除1.txt文件


cd /home/python/Desktop
rm test3/1.txt


6. 将1-hardlink.txt文件中所有不包含m的所有信息,存储到test3/3.txt中


cd /home/python/Desktop
grep -v "m" test3/1-hardlink.txt > test3/3.txt


7. 使用重定向合并2-softlink.txt、3.txt文件到4.txt文件中


cd /home/python/Desktop
cat test3/2-softlink test3/3.txt > test3/4.txt


练习题3


打包以及解压缩:tar、gzip、bzip2、zip、unzip


 1. tar命令的作用是什么?
```
打包文件;
tar是Unix/Linux中最常用的备份工具;
此命令可以把一系列文件归档到一个大文件中;
也可以把档案文件解开以恢复数据;
```
 2. tar命令的-c和-x参数分别代表什么意思
```
-c 生成档案文件,创建打包文件
-x 解开档案文件
```
 3. 请分别说出gzip常用参数的含义
```
-d 解压
-r 压缩所有子目录
```
 4. 写出使用tar打包文件的用法
```
打包:tar -cvf test.tar ./*.py
解包:tar -xvf test.tar
注意:中括号代表,参数可选
```
 5. 写出使用tar打包并压缩为**.tar.gz的命令
```
tar -zcvf **.tar.gz 需要打包的文件
```
 6. 写出解压缩**.tar.gz的命令
```
tar -zxvf **.tar.gz
-C 可以指定解压的目录
-z 制定压缩的格式为.gz
```
 7. 写出使用tar打包并压缩为**.tar.bz2的命令
```
tar -jcvf **.tar.bz2 ./*.py
-j 指定压缩的格式是.bz2
```
 8. 写出解压缩**.tar.bz2的命令
```
tar -jxvf **.tar.bz2
-j 指定压缩的格式是.bz2
```
 9. 写出使用zip压缩文件的用法
```
zip 目标文件 源文件
如把test.txt压缩到zip包中:zip test test.txt
会得到一个test.zip,后缀名会自动被添加
```
 10. 写出使用unzip解压文件的用法
```
unzip -d 解压后目录文件 压缩文件
```
练习题4


使用vim编写一段代码


Linux命令作业


练习题1


理解操作系统的作用,以及各种操作系统的不同




1. 简述什么是OS
```
os即操作系统,是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。
```
2. 简述应用程序、硬件、OS的关系
```
应用程序通过操作系统从而与物理硬件进行信号交换
```
3. 列举出3种常见的操作系统
```
win,mac,Android,iOS等.
```
4. 简述Ubuntu和Linux的关系
```
最严格地讲,linux从来都不是操作系统,linux只是一个操作系统内核。ubuntu就是一个linux发行版,也就是说ubuntu是以linux为内核的操作系统。
```
5. 列举出2种Linux发行版操作系统
```
CentOS,Ubuntu,红帽企业级Linux等
```
6. 简述window和Linux的区别
```
在 windows 平台下每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹.
```




练习题2


练习ls、cd、mkdir、touch、mv、rm命令的使用




1. 简述Ubuntu中终端的作用,以及打开方式
```
终端就是一个shell的模拟,用于进行人机交互.
打开方式:
1-按CTRL+ALT+T;
2-直接点击终端图标;
3-在搜索中点击后,输入"终端"查找点击.
```
2. 简述Linux命令的作用
```
Linux 提供了大量的命令,利用它可以有效地完成大量的工作.
```
3. 简述Linux命令的基本格式
```
Linux命令格式:
command  [-options]  [parameter1]
说明:
command: 命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选 parameter1 …:传给命令的参数:可以是零个一个或多个 
```
4. 使用Linux查看当前目录下的文件、文件夹的名字
```
ls
```


5. 在当前路径下创建A文件夹


mkdir ./A


6. 在上一步创建的A文件夹中,创建B文件夹


mkdir ./A/B


7. 在第5步所在的路径中,使用一个命令在A/B文件夹中创建C文件夹


mkdir ./B/C


8. A/B/C中创建一个hello.py文件
```
touch ./A/B/C/hello.py
```
9. 在A/B文件夹中创建一个world.py文件
```
touch ./A/B/world.py
```
10. 复制A/B/C/hello.py文件到桌面
```
cp ~/A/B/C/hello.py ~/Desktop/
```


11. 将A/B/C/haha.py文件移动到A/B文件夹中
```
mv ~/A/B/C/haha.py ~/A/B
```
12. 查看当前操作的路径
```
pwd
```
13. 跳转到桌面路径
```
cd ~/Desktop
```
14. 删除桌面上的hello.py文件
```
rm ~/Desktop/hello.py
```


15. 在桌面创建test文件夹
```
mkdir ~/Desktop/test
```
16. 在test文件夹中,创建若干个子文件、子文件夹、子子文件夹
```
cd ~/Desktop/test
mkdir ***
touch ***
```
17. 分别使用rm、mv操作test文件夹
```
cd ~/Desktop
rm -r test
mv test test2
```
18. 归纳总结rm、mv在操作文件/文件夹时的区别
```
rm命令可以同时删除文件或目录
而mv用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中
rm 删除非空文件夹时,必须加上-r
mv 移动文件夹无需加其他命令
```




练习题3


练习相对/绝对路径、tree命令的使用




1. 简述相对路径和绝对路径的区别
```
绝对路径,以根目录为起点;相对路径,以当前所在的目录为起点。
```
2. 在桌面上的A/B/C/D/E/F/G文件夹下,创建一个文件夹MM
```
mkdir ~/Desktop/A/B/C/D/E/F/G/MM
```
3. 使用相对路径跳转到C文件夹中
```
cd ~
cd ./Desktop/A/B/C
```
4. 在C文件夹中创建一个HH文件夹
```
cd ~
mkdir ./Desktop/A/B/C/HH
```
5. 显示从A文件夹开始的目录树
```
tree A
```
6. 在A文件夹下创建一个hello.py文件
```
cd ~/Desktop
touch ./A/hello.py
```





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值