要熟练使用学习树莓派,树莓派系统的相关命令操作就需要熟练掌握。
而树莓派的系统Raspbian是Arm版的Linux系统,其基于Debian系,所以本篇章就介绍常用的Debain系Linux系统命令及vim编辑器的使用。
#Debain系Linux操作
1.初识linux
1.1字符界面
控制台切换快捷键
图形界面字符终端:Ctrl+Alt+Fn #打开多个字符终端
字符终端字符终端:Alt+Fn
字符终端图形界面:Alt+F7
1.2字符终端
字符终端的命令提示符
用户名
主机名
当前用户所在工作目录
“~”代表用户的宿主目录
当前用户类型
“$”字符表示当前登录的是普通用户
“#”字符表示当前登录的是管理员用户
简单常用的命令
退出当前命令操作环境 #exit
查看内核版本 #uname -r
查看CPU信息 #cat/proc/cpuinfo
查看内存 #cat /proc/meminfo
查看主机名 #hostame
查看IP地址 #ifconfig
1.3相关操作命令
uname命令
查看系统相关信息
常用命令选项:
-a:显示主机名、内核版本、硬件平台等详细信息
-r:显示内核版本
hostname命令
查看主机的完整名称
包括主机名称、所在域的名称
ifconfig命令
查看ip地址
管理员权限 #sudo
普通用户转换为root账户的命令
-su #sudo -su
关机操作
shutdown -h now #可以加时间(分钟)
poweroff
重启操作
shutdown -r now #加时间
reboot
2. 初识Linux命令
2.1 Linux命令分类
内部命令 | 外部命令
集成在shell内的指令,内建指令 Linux系统中的特定功能脚本文件等
属于shell一部分 属于shell解释器之外的命令
无对应系统文件 由对应的系统文件
2.2Linux命令行的格式
通用的命令行使用格式
命令字 [选项] [参数]
命令字
是整条命令中最关键的一部分
唯一确定一条命令
选项
调节命令的具体功能,决定这条命令如何执行
不同的命令字使用的选项会不同
多个选项之间使用空格分隔
若不使用选项,执行命令字的默认功能
短格式选项:一般在选项前使用“-”符号引导
多个单字符选项可以组合在一起使用
长格式选项:一般在选项前使用“--”符号引导
参数 #实际操作中,选项与参数经常混淆或前后颠倒,一般不影响命令执行
是命令字的处理对象
通常情况下,可以是文件名、目录(路径)名或用户名等内容
个数可以是零到多个
按 Enter 键表示命令输入结束并提交给系统执行
没有按 Enter 键前,可编辑命令行中的字符内容
2.3编辑Linux命令行
编辑 Linux 命令行的辅助操作
Tab 补齐命令字 文件 目录名等 按两下 输出所有可用的名称列表
反斜杠 \ 强制换行
Ctrl+U 快速删除光标之前的所有字符
Ctrl+K 快速删除光标之后的所有字符
Ctrl+L 快速清除屏幕字符相当于内部命令“clear”的功能
Ctrl+C 取消当前命令的编辑,并切换为新的一行命令提示符
3.查看及切换目录
3.1显示当前工作目录 #pwd
3.2切换工作目录 #cd
cd 目标位置 #切换到目标位置
cd ~ &cd 空 #未指定目标位置则返回到当前用户的宿主目录
cd - #切换到上一次执行cd命令之前的所在目录
3.3绝对路径和相对路径
绝对路径
以根目录“/”作为起点
准确表示一个目录(或文件)所在的位置
表示Linux中目录结构相对稳定的目录(或文件)位置
较繁琐
相对路径
当前工作目录作为起点
目录的起始字符不使用“/”符号
表示当前目录“附近”的目录(文件)位置
简短、便捷
相对路径的表现
“.”开头 #以当前目录为起点
“..”开头#以当前目录的上一级目录为起点
“~” #以宿主目录为起点
3.4 列表显示目录内容 #ls
显示目录中内容,包括子目录和文件相关属性信息
格式
ls [选项] [文件或目录… ]
常用选项
-l 、 -a 、 -A 、 -d 、 -h 、 -g 、 --color
结合通配符
“?”:匹配文件名中的一个未知字符
“*”:匹配文件名中的任意多个字符
-l 以长格式显示文件和目录的列表,包括权限、大小、最后更新时间等详细信息
-a 显示所有子目录和文件的信息,包括名称以点号“.”开头的隐藏目录和隐藏文件
-A 与-a选项的作用基本类似,但不会显示“.”目录和“..”目录
-d 显示目录本身的属性
-h 显示出目录或文件的大小(KB、MB),默认的大小单位为字节(B)
-R 递归方式显示指定目录及其子目录中的所有内容
--color 在字符模式中以颜色区分不同的文件
3.5统计目录及文件空间占用情况 #du
统计目录及文件的空间占用情况(estimate file space usage)
格式:du [选项]... [目录或文件名]
常用命令选项
-a:统计时包括所有的文件,而不仅仅只统计目录
-h:以更易读的字节单位(K、M等)显示信息
-s:只统计每个参数所占用空间总的大小
4.创建目录及文件
4.1创建新目录 #mkdir
创建新的空目录
格式
mkdir [选项] 目录位置及名称…
4.2创建空文件 #touch
更新文件的时间标记
经常用于创建多个新的空文件
格式
touch 文件…
4.3创建链接文件 #ln
为文件或目录建立链接文件
文件类型
软链接
硬链接
格式
ln [-s] 源文件或目录… 链接文件或目标位置
默认创建 硬链接
软链接 |硬链接
删除原始文件后 失效 |仍旧可用
使用范围 适用于文件或目录 |只可用于文件
保存位置 与原始文件可以位于不同的文件系统中 |必须与原始文件在同一个文件系统(如一个Linux分区)内
5.复制,删除,移动
5.1复制文件或目录 #cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
格式
cp [选项]… 源文件或目录… 目标文件或目录
常用选项 #复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在
-f 覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i 覆盖目标同名文件或目录时提醒用户确认
-p 复制时保持源文件的权限、属主及时间标记等属性不变
-r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
5.2删除文件或目录 #rm
删除指定的文件或目录
格式
rm [选项] 要删除的文件或目录…
常用选项
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
5.3移动文件或目录 #mv
将指定的文件或目录转移位置
如果目标位置与源位置相同,则相当于执行重命名操作
格式
mv [选项] … 源文件或目录… 目标文件或目录
6.查找目录和文件
6.1查找文件存放目录 #which
搜索范围由环境变量 PATH 决定
echo $PATH
格式
which 命令|程序名
默认当找到第一个目标后不再继续查找
which -a 命令|程序名
如果希望在所有搜索路径中查找
6.2查找文件或目录 #find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
格式
find [查找范围] [查找条件表达式]
按名称查找 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找 -size 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量
按文件属主查找 -user 根据文件是否属于目标用户进行查找
按文件类型查找 -type 根据文件的类型进行查找
#文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
#块设备是指成块读取数据的设备(如硬盘、内存等),字符设备是指按单个字符读取数据的设备(如键盘、鼠标等)
6.3使用find实现多个查找条件
各表达式之间使用逻辑运算符
“-a”表示 而且(and)
“-o”表示 或者(or)
7.查看,检索,统计文件
7.1查看文件内容 #cat
cat命令
用途:显示出文件的内容
命令格式
cat [选项] 文件名 …
还有tac #当文档等内容过多时可用,从前往后显示
7.2查看文件内容 #more & #less
less 命令
用途:与 more 命令相同,但扩展功能更多
命令格式
less [选项] 文件名 …
交互操作方法
Page Up 向上翻页,Page Down 向下翻页
按“/”键查找内容,“n”下一个内容,“N”上一个内容
其他功能与 more 命令基本类似
7.3查看文件内容 #head,tail
head命令
用途:查看文件开头的一部分内容(默认为10行)
命令格式
head -n 文件名 …
tail命令
用途:查看文件结尾的少部分内容(默认为10行)
命令格式
tail -f 文件名
将会以一定的时间实时追踪该档的所有更新
tail -n 文件名
7.4统计文件内容 #wc
wc命令
用途:统计文件中的单词数量(Word Count)等信息
命令格式
wc [选项]... 目标文件...
常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
8.重定向,管道,grep
8.1管道和重定向
在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
重定向符号
> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序
标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出
>& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件
|& 将一个标准错误 管道 输送 到另一个命令作为输入
#为何要使用命令输出重导向
#当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
#背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
#一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
#一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
#错误讯息与正确讯息需要分别输出时。
8.2检索和过滤内容 #grep
grep命令
用途:在文件中查找并显示包含指定字符串的行
命令格式
grep [选项]... 查找条件 目标文件
常用命令选项
-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行
查找条件设置
要查找的字符串以双引号括起来
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
9.压缩,归档
9.1压缩命令 #gzip、bzip2
gzip命令、bzip2命令
用途:制作压缩文件、解开压缩文件
命令格式
gzip [-9] 文件名…
bzip2 [-9] 文件名...
gzip -d .gz格式的压缩文件
bzip2 -d .bz2格式的压缩文件
常用命令选项
-9:表示高压缩比,多在创建压缩包时用
-d:用于解开已经压缩过的文件
9.2压缩命令 #gunzip、bunzip2
gunzip 命令
gunzip 等价于 gzip –d
bunzip2 命令
bzip2和bunzip2命令的用法与gzip、gunzip命令基本相同
9.3归档命令 #tar
tar命令
用途:制作归档文件、释放归档文件
命令格式
tar [选项] ... 归档文件名 源文件或目录
tar [选项]... 归档文件名 [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
10.用户和组帐号
10.1用户和组帐号概述
Linux基于用户身份对资源访问进行控制
用户帐号:
超级用户 root
普通用户
程序用户
组帐号:
基本组(私有组)
附加组(公共组)
UID和GID:
UID(User IDentity,用户标识号)
GID(Group IDentify,组标识号
10.2用户账户文件 /etc/passwd
保存用户名称、宿主目录、登录Shell等基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
root: x: 0: 0: root: /root: /bin/bash
#账户: 密码占位符:用户账户ID:组账户ID: 用户说明: /宿主目录: /登陆shell
10.3用户账户文件 /etc/shadow
保存用户的密码、账号有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
pi:$6$wedeY.:17668:0:99999:7:::
文件的每一行内容包含九个用冒号“:”分隔的配置字段
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容
上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数
10.4添加用户账户 #useradd
useradd命令
格式
useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
#示例
指定mike的基本组为mike,并加入到ftpuser组
指定主目录为/ftphome/mike
不允许mike通过本地登录服务器
[root@localhost ~]# useradd -d /ftphome/mike -g mike -G ftpuser -s /sbin/nologin mike
10.5用户账号的初始配置文件
文件来源
新建用户帐号时,从 /etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
10.6设置/更改用户口令 #passwd
passwd命令
格式
passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
10.7修改用户账号的属性 #usermod
usermod命令
格式
usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项和useradd相同
-u、-d、-e、-g、-G、-s
10.8删除用户帐号 #userdl
userdel命令
格式
userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
10.9组账户
组账户文件与用户账户文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
添加组账户 #groupadd
groupadd [-g GID] 组账号名
添加删除组成员 #gpasswd
用途:设置组帐号密码(极少用)、添加/删除组成员
格式
gpasswd [选项]... 组帐号名
常用命令选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
删除组账户 #groupdel
格式:groupdel 组帐号名
10.10查询账户信息
id命令
用途:查询用户身份标识
id [用户名]
groups命令
用途:查询用户所属的组
groups [用户名]
finger命令
用途:查询用户帐号的详细信息
finger [用户名]
users、w 、who命令
用途:查询已登录到主机的用户信息
11.文件目录的权限和归属
11.1文件/目录的权限和归属
访问权限
读取 r:允许查看文件内容、显示目录列表
写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行 x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
#示例
[root@localhost ~]# ls -l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
权限项 读 写 执行 |读 写 执行 |读 写 执行
字符表示 r w x |r w x |r w x
数字表示 4 2 1 |4 2 1 |4 2 1
权限分配 文件所有者 |文件所属组 |其他用户
r w - |r - - |r - -
4 2 0 |4 0 0 |4 0 0
6 |4 |4
“-rw-r—r--”部分的第一个字符表示文件类型,可以是d(目录)、b(块设备文件)、c(字符设备文件),减号“-”(普通文件)、字母“l”(链接文件)等
其余部分指定了文件的访问权限
在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了四种不同的权限字符: r:可读 ;w:可写 ;x:可执行 ;-:无权限
r、w、x、- 权限字符还可分别表示为8进制数字4、2、1、0
11.2设置文件和目录的权限 #chomd
chmod命令
格式1
chmod [ugoa] [+-=] [rwx] 文件或目录...
u、g、o、a 分别表示属主、属组、其他用户、所有用户
+、-、= 分别表示增加、去除、设置权限
格式2
chmod nnn 文件或目录...
常用命令选项
-R:递归修改指定目录下所有子项的权限
11.3设置文件和目录的归属 #chown
chown命令
格式
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用命令选项
-R:递归修改指定目录下所有文件、子目录的归属
12. Linux应用程序
12.1 apt-get命令
用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
需要修改/etc/apt/sources.list获得稳定的安装源。如:#更新源以获得稳定的安装升级软件库
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi (二进制包)
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi (源码包)
apt-get命令一般需要root用户权限执行
apt-get update
更新数据库列表。这个命令将扫描/etc/apt/sources.list文件中所指路径中的软件包列表文件。
apt-get install packagename
APT会扫描它的数据库找到最新的版本的软件包,并将它从sources.list中所指的地方下载到本地。
如果该软件包需要其它软件包才能正常运行,APT会做关联性检查并自动安装所关联软件包。
apt-get --reinstall install
可以修复安装
apt-get remove packagename
卸载一个已安装的软件包
apt-get --purge remove
卸载一个已安装的软件包(删除配置文档)
apt-get clean
将删除/var/cache/apt/archives目录和/var/cache/apt/archives/partial目录下的所有文件,除了被锁定的文件。
apt-get autoclean
仅删除那些不需要再次下载的文件。
apt-get upgrade
更新任何已安装的软件包
apt-get dist-upgrade
可以选择将系统由 stable 升级到 testing 或是 unstable
12.2 dpkg命令
dpkg -l
用于查询当前系统所有已安装的deb包的信息.
如发现iU 表示软件包未安装成功,ii表示安装成功
dpkg -s
查看软件包的详细情况,包括版本,依赖等
dpkg –L
查询系统中所安装软件包的安装的文件安装到系统的位置
dpkg –S
了解当前的软件属于那个软件包
dpkg -i
手工安装deb包到系统中
安装软件后由于Dpends关系没有安装成功,可通过apt-get –f install解决
dpkg –r
卸载指定的软件包,该命令只卸载软件包安装到系统中的文件,而不去删除软件包的配置文件
dpkg –P
卸载软件包同时也删除配置文件
13. Vim编辑器使用
13.1文本编辑器vi命令
文本编辑器的作用
创建或修改文本文件
维护 Linux 系统中的各种配置文件
Linux中最常用的文本编辑器
vi:类Unix 系统中默认的文本编辑器
vim:vi 编辑器的增强版本,习惯上也称为 vi
13.2 vi编辑器的工作模式
三种工作模式
命令模式、输入模式、末行模式
不同模式之间的切换
命令模式-》输入模式#a、i、o等
输入模式-》命令模式#Esc键
命令模式-》末行模式 #=键
末行模式-》命令模式#Esc键
13.3命令模式-光标移动
操作类型 操作键 功能
光标方向移动 (上下左右键) 上、下、左、右
翻页 Page Down或Ctrl+F 向下翻动一整页内容
Page Up或Ctrl+B 向上翻动一整页内容
行内快速跳转 Home键或“^”、数字“0” 跳转至行首
End键或“$”键 跳转到行尾
行间快速跳转 1G或者gg 跳转到文件的首行
G 跳转到文件的末尾行
*G 跳转到文件中的第*行
行号显示 :set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
13.4命令模式-复制粘贴删除
操作类型 操作键 功能
删除 x或Del 删除光标处的单个字符
dd 删除当前光标所在行
*dd 删除从光标处开始的*行内容
d^ 删除当前光标之前到行首的所有字符
d$ 删除当前光标处到行尾的所有字符
复制 yy 复制当前行整行的内容到剪贴板
*yy 复制从光标处开始的*行内容
粘贴 p 将缓冲区中的内容粘贴到光标位置处之后
P 粘贴到光标位置处之前
13.5命令模式-文件内容查找
操作键 功能
/word 从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word”
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
13.6命令模式-撤销编辑及保存退出
操作键 功能
u 按一次取消最近的一次操作
多次重复按u键,恢复已进行的多步操作
U 用于取消对当前行所做的所有编辑
ZZ 保存当前的文件内容并退出vi编辑器
13.7末行模式操作
功能 命令 备注
保存文件 :w 保存修改的内容
:w /root/newfile 另存为其它文件
退出vi :q 未修改退出
:q! 放弃对文件内容的修改,并退出vi
保存文件退出 vi :wq 保存修改的内容并退出
内容替换 :s /old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s /old/new/g 当前行中查找到的所有字符串“old” 替换为“new”
:*,* s/old/new/g 在行号“*,*”范围内替换所有的字符串“old”为“new”
:% s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:s /old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
14.存储和文件系统
14.1检测及确认新硬盘
fdisk命令 在交互式的操作环境中管理磁盘分区
fdisk -l [磁盘设备]
交互模式中的常用指令
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出
14.2创建文件系统
mkfs命令
用途:Make Filesystem,创建文件系统(格式化)
格式
mkfs -t 文件系统类型 分区设备
mkswap命令
用途:make swap,创建交换文件系统
格式
mkswap 分区设备
15.挂载文件系统
15.1挂载、卸载文件系统
mount命令
用途:挂载文件系统、ISO镜像到指定文件夹
格式
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
umount命令
用途:卸载已挂载的文件系统
格式
umount 存储设备位置
umount 挂载点目录
15.2设置文件系统的自动挂载
系统中的“/etc/fstab”文件可以视为mount命令的配置文件
第四字段:挂载参数,即mount命令“-o”选项后可使用的参数,如defaults、rw等
第五字段:表示文件系统是否需要dump备份(dump是一个备份工具),一般设为1时表示需要,设为0时将被dump所忽略
第六字段:该数字用于决定在系统启动时进行磁盘检查的顺序,0不进行检查,1优先,2其次。对于根分区应设为1,其它分区设为2
15.3查看磁盘使用情况 #df
df命令
格式
df [选项] [文件]
不带选项及参数的mount命令可以显示分区的挂载情况,而若要了解系统中已挂载各文件系统的磁盘使用情况(如剩余磁盘空间比例等)
“-h”选项可以显示更易读的容量单位,
“-T”选项用于显示对应文件系统的类型
以上操作指令详解是基于仇龙大侠的Linux教学视频本人自己汇总,未经允许请勿转载。
博客提供文本下载