在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

01-C基础第02天(用户权限、VI操作、Linux服务器搭建)

打开终端:ctrl+alt+t

清屏:ctrl+l 或 clear

在终端中退出锁定:ctrl+c

目录

3 常用命令

4 编辑器

5 远程操作

6 webserver环境搭建

3 常用命令

1)文件管理相关

参见:C基础学习笔记——01-C基础第01天(linux介绍和基本命令)——https://www.cnblogs.com/Alliswell-WP/p/C_BasicLearning_01.html

2)用户、权限管理相关

(1)查看当前用户:whoami

查看当前的使用的用户,而非登录用户

(2)查看登录用户:who

查看当前所有登录系统的用户信息(last命令也可以查看所有登录系统的用户的操作细节)

选项

含义

-m或am I

只显示运行who命令的用户名、登录终端和登录时间

-q或--count

只显示用户的登录账号和登录用户的数量

-u

在登录时间后显示该用户最后一次操作到当前的时间间隔

-u或--heading

显示列标题

(3)查看登录用户:w

w命令也可以查看登录当前系统的用户信息

格式:w  [选项]  [用户名]

如:w -l wang

注意:(1)如果w命令携带用户名,则只显示指定用户的信息,否则显示当前所有登录用户的信息。

(2)与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。

选项

含义

-h

只显示运行who命令的用户名、登录终端和登录时间

-l

显示详细信息列表,此为预设值

-s

使用短列表,不显示用户登录时间、JCPU和PCPU时间

-u

忽略执行程序的名称,以及该程序的PCPU时间

(4)退出登录账户:exit

如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登陆账户;
如果是切换后的登陆用户,退出则返回上一个登陆账号。

(5)切换用户:su

可以通过su命令切换用户,su后面可以加“-”。

su和su –命令不同之处在于,su -切换到对应的用户时会将当前的工作目录自动转换到切换后的用户主目录

如:su - user——>输入密码后,切换用户同时切换工作空间

注意:(1)su后边不加用户名,默认是root用户

(2)如果是ubuntu平台,需要在命令前加“sudo”,如果在某些操作需要管理员才能操作,ubuntu无需切换到root用户即可操作,只需加“sudo”即可。sudo是ubuntu平台下允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root 用户的登陆和管理时间,提高了安全性。

sudo使用中只有第一次需要输入密码,后边就不需要了!

(6)添加、删除组账号:groupadd、groupdel

groupadd 新建组账号
groupdel 组账号
cat /etc/group 查看用户组

如:groupadd dev

注意:需要切换到root用户才行!

(7)修改用户所在组:usermod

使用方法:usermod -g 用户组 用户名

如:usermod -g dev wang(dev为组名,wang为用户名)

注意:(1)需要切换到root用户才行!

(2)组名和用户名可以相同

(8)添加用户账号:useradd

格式:useradd  [参数]  新建用户账号

如:useradd -d /home/dev-xiaoming dev-xiaoming -g dev -m(useradd -d 目录 用户名 -g 组名 -m)

然后设置密码:先切换到root用户(su);然后passwd dev-xiaoming,输入密码

注意:不可以创建多个用户!

参数

含义

-d <dirname>

指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录

-m

自动建立目录

-g

指定组名称

注意:(1)Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户);
(2)每一个用户必须有一个主目录,所以用useradd创建用户的时候,一定给用户指定一个主目录;
(3)用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的;
(4)如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。

命令

含义

useradd -d /home/abc abc -m

创建abc用户,如果/home/abc目录不存在,就自动创建这个目录,同时用户属于abc组

useradd -d /home/a a -g test -m

创建一个用户名字叫a,主目录在/home/a,如果主目录不存在,就自动创建主目录,同时用户属于test组

cat /etc/passwd

查看系统当前用户名

(9)设置用户密码:passwd

如:passwd dev-xiaoming

(10)删除用户:userdel

命令

含义

userdel abc(用户名)

删除abc用户,但不会自动删除用户的主目录

userdel -r abc(用户名)

删除用户,同时删除用户的主目录

(11)查询用户登录情况:last

不管是哪位用户从哪里登录,管理员都可以通过last命令查出,以及是否有人非法登录

(12)修改文件权限:chmod

有两种使用格式:字母法与数字法

字母法:chmod u/g/o/a  +/-/=  rwx  文件(文件或目录可以多个)

[ u/g/o/a ]

含义

u

user 表示该文件的所有者

g

group 表示与该文件的所有者属于同一组( group )者,即用户组

o

other 表示其他以外的人

a

all 表示这三者皆是

[ +-= ]

含义

+

增加权限

-

撤销权限

=

设定权限

rwx

含义

r

read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。

w

write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。

x

excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

chmod o+w file 给文件file的其它用户增加写权限
chmod u-r file 给文件file的拥有者减去读的权限
chmod g=x file设置文件file的同组用户的权限为可执行,同时去除读、写权限

数字法:“rwx” 这些权限也可以用数字来代替

r

读取权限,数字代号为 "4"

w

写入权限,数字代号为 "2"

x

执行权限,数字代号为 "1"

-

不具任何权限,数字代号为 "0"

如执行:chmod u=rwx,g=rx,o=r filename
就等同于:chmod u=7,g=5,o=4 filename

如:chmod 751 file:
文件所有者:读、写、执行权限
同组用户:读、执行的权限
其它用户:执行的权限

注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。
如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。

(13)修改文件所有者:chown

使用方法:chown  用户名  文件或目录名

如:sudo chown user test01.txt——>把wang的test01.txt改为user的。

(14)修改文件所属组:chgrp

使用方法:chgrp  用户组名  文件或目录名

3)系统管理相关

(1)查看当前日历:cal

cal命令用于查看当前日历,-y显示整年日历

如:cal 2010——>显示2010年的日历

注意:1.cal 7 2010——>查看2010年7月的日历,如果输入的是cal 7查看的是公元7年的日历;

2.cal -j 12 2020——>可以查看2020年12月份的日历中是每月的第几天,对于闰年特别有用,看12月份的最后一天是不是366。

(2)显示或设置时间:date

date  [MMDDhhmm[[CC]YY][.ss]] +format

注意:1.CC为年前两位yy为年的后两位,前两位的MM为月,后两位的mm为分钟,DD为天(日),hh为小时,ss为秒。如: date 010203042020.55——>设置时间为2020年1月2日3时4分55秒(需要管理员权限)

2.date '+%y,%m,%d,%H,%M,%S'——>显示20,04,08,01,14(2020年4月8日10时01分14秒)

date '+%Y,%m,%d,%H,%M,%S'——>显示2020,04,08,01,14(2020年4月8日10时01分14秒)

注意大小写!!!

format格式

含义

%Y,%y

%m

%d

%H

%M

%S

(3)查看进程信息:ps

ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下

选项

含义

-a

显示终端上的所有进程,包括其他用户的进程

-u

显示进程的详细状态

-x

显示没有控制终端的进程

-w

显示加宽,以便显示更多的信息

-r

只显示正在运行的进程

(4)动态显示进程:top

按键

含义

M

根据内存使用量来排序

P

根据CPU占有率来排序

T

根据进程运行时间的长短来排序

U

可以根据后面输入的用户名来筛选进程

K

可以根据后面输入的PID来杀死进程。

q

退出

h

获得帮助

(5)终止进程:kill

(6) 后台程序:&、jobs、fg

用户可以将一个前台执行的程序调入后台执行,方法为:命令 &
如果程序已经在执行,ctrl+z可以将程序调入后台
jobs查看后台运行程序
fg编号(编号为通过jobs查看的编号),将后台运行程序调出到前台

(7)关机重启:reboot、shutdown、init

注意:需要切换到超级管理员root,一般关机:su;输入密码;init 0

命令

含义

reboot

重新启动操作系统

shutdown –r now

重新启动操作系统,shutdown会给别的用户提示

shutdown -h now

立刻关机,其中now相当于时间为0的状态

shutdown -h 20:25

系统在今天的20:25 会关机

shutdown -h +10

系统再过十分钟后自动关机

init 0

关机

init 6

重启

(8)字符界面和图形界面切换

注意: 重启后才能切换

在redhat平台下,可通过命令进行切换

init 3

切换到字符界面

init 5

切换到图形界面

通过快捷键切换(适用大部分平台)

Ctrl + Alt + F2

切换到字符界面

Ctrl + Alt + F7

切换到图形界面

(9)检测磁盘空间:df

选项

含义

-a

显示所有文件系统的磁盘使用情况

-m

以1024字节为单位显示

-t <fs>

显示各指定文件系统的磁盘空间使用情况

-T

显示文件系统

(10)检测目录所占磁盘空间:du

du命令用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况

格式:du  [选项]  目录或文件名

选项

含义

-a

递归显示指定目录中各文件和子目录中文件占用的数据块

-s

显示指定文件或目录占用的数据块

-b

以字节为单位显示磁盘占用情况

-l

计算所有文件大小,对硬链接文件计算多次

(11)格式化:mkfs

相当于DOS/Windows系统中的格式化命令,用于创建指定的文件系统

格式:mkfs  [选项]  设备文件名  [blocks]

选项

含义

-V

详细显示模式

-t <.fs>

指定文件系统类型,默认值为 ext2

-c

在创建文件系统的同时,进行磁盘坏块检查

blocks

文件系统块的大小

(12)应用软件安装和卸载

在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat公司提出的,用于管理Linux下软件包的软件。它是一种软件打包发行并且实现自动安装的程序,需要用rpm程序安装的软件包,其后缀是.rpm,并可以对这种程序包进行安装、卸装和维护。

选项

含义

-i

指定安装的软件包

-h

使用“#”显示详细的安装过程及进度

-v

显示安装的详细信息

-q

查询系统是否已安装指定的软件包

-a

查看系统已安装的所有软件包

-e

卸载软件包

--nodeps

配合-e参数使用,强制卸载不检查依赖项

--force

强制操作 如强制安装删除等

如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷

命令

含义

sudo apt-get update

获得最新的软件包的列表

sudo apt-get install xxx

从源中安装xxx软件

sudo apt-get remove xxx

删除xxx软件

(13)查看或配置网卡信息:ifconfig

显示字段

说明

eth0

网络接口名称

Link encap

链路封装协议

Hwaddr

网络接口的MAC地址

Inet addr

IP地址

Bcast

广播地址

Mask

子网掩码

UP

网络接口状态标识,UP已经启用,DOWN已经停用

BROADCAST

广播标识,标识网络接口是否支持广播

RUNNING

传输标识,标识网络接口是否已经开始传输分组数据

MULTICAST

多播标识,标识网络接口是否支持多播

MTU,Metric

MTU:最大传输单位,单位:字节。Metric:度量值,用于RIP建立网络路由用

RX bytes

接收数据字节统计

TX bytes

发送数据字节统计

我们可以通过ifconfig配置网络参数:
只有root才能用ifconfig配置参数,其他用户只能查看网络配置
ifconfig 网络接口名称 [地址协议类型] [address] [参数]
地址协议类型如:inet(IPv4),inet6(IPv6)等
如:ifconfig eth0 inet 192.168.10.254 netmask 255.255.255.0 up

参数

功能

-a

显示所有网络接口状态

inet  [IP地址]

设置IP地址

netmask [子网掩码]

设置子网掩码

up

启用网络接口

down

关闭网络接口

注意:ifconfig配置的网络参数在内存中,计算机重新启动之后就失效了,如果需要持久有效就需要修改网络接口的配置文件

redhat修改/etc/sysconfig/network-scripts/ifcfg-eth0文件:

IPADDR=IP地址
GATEWAY=默认网关
ubuntu修改/etc/NetworkManager/system-connections/Wired connection 1文件:

[ipv4]
method=manual
addresses1=IP地址;24;默认网关;

(14)测试远程主机连通性:ping

ping通过ICMP协议向远程主机发送ECHO_REQUEST请求,期望主机回复ECHO_REPLY消息
通过ping命令可以检查是否与远程主机建立了TCP/IP连接
格式:ping [参数] 远程主机IP地址

参数

功能

-a

每次相应时都发出声音警示

-A

表示以实际往返相应时间为间隔,连续发送消息

-f

连续不断发送消息,不管是否收到相应

-n

只显示主机IP,不需要把IP解释成主机名

-c

发送指定次数数据报信息后停止,ping -c 5 192.168.10.254

-i

每次发送消息时间间隔,默认一秒,ping -i 2 192.168.10.254

-s

分组数据大小,默认56字节

-w

以秒为单位的超时值,一旦超时,就立即停止

(15)网络路由设置:route

route可以增加,修改,显示路由信息

格式:route [-v] [-A family] add default [gw 默认网关地址] [[dev interface]]

如:route add default gw 192.168.1.1 dev eth0

参数

功能

add

增加路由信息

del

删除路由信息

-v

显示路由信息

-A

指定网络协议inet(IPv4),inet6(IPv6)

gw

指定默认网关地址

dev

指定网络接口

(16)监控网络状态:netstat

netstat命令监控网络状态,包括接口设置,IP路由,各种网络协议的统计。

类似于Windows中“任务管理器”——>“性能”选项卡——>“打开资源监视器”——>“网络”选项卡

netstat输出信息说明如下

字段

说明

Proto

协议,如:tcp,udp

Recv-Q

尚未读取的数据字节数

Send-Q

尚未发送的数据字节数

Local_address

本地主机地址与端口号

Foreign_address

远程主机与端口号

State

网络连接状态

RefCnt

引用计数,表示加接到相应套接字的进程数量

Flags

标志字段

Type

套接字类型,如:(SOCK_DGRAM, SOCK_STREAM,SOCK_RAW)

State

套接字状态

Path

套接字路径名

netstat常用命令参数

参数

功能

-a

列出所有端口

-i

显示网络接口列表

-at

所有tcp端口

-au

所有udp端口

-l

所有监听端口

-lt

tcp监听端口

-lu

指定网络接口

-s

显示所有协议统计信息

-r

当前路由状态

-p

输出中显示 PID 和进程名称,可以与其它开关一起使用,如:-pt

4 编辑器

1)gedit编辑器

2)vi编辑器

进入文本编辑器:vi

注意1.进入文本编辑器有两种模式:文本编辑模式(插入模式)和命令行模式;两个模式可以通过“Esc”键切换。

2.在Ubuntu下,在vi的命令行模式下:set nu显示行号。

(1)vi基本操作

1.打开文件:vi filename

2.编辑文件:按:“i”进入插入模式;按“Esc”退出插入模式

3.保存文件:一定要先退出插入模式(按Esc进入命令模式),然后,shift + zz (按住 “shift” + 按两下“z”键) 即可保存退出当前文件

(2)vi实用命令

1.vi的插入模式

按键

功能

a

光标位置右边插入文字

i

光标位置当前处插入文字

o(字母)

光标位置下方开启新行

O(字母)

光标位置上方开启新行

I

光标所在行首插入文字

A

光标所在行尾插入文字

2.vi的退出

注意:必须是命令行模式!!!

按键

功能

ZZ(shift+z+z)

保存退出

:wq

保存退出

:x(小写)

保存退出

:w filename

保存到指定文件

:q

退出,如果文件修改但没有保存,会提示无法退出

:q!

退出,不保存

:!命令

暂时离开vi,执行命令

3.vi的删除和修改功能

按键

功能

[n]x

删除光标后 n 个字符

[n]X

删除光标前 n 个字符

D

删除光标所在开始到此行尾的字符

[n]dd

删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除)

[n]yy

复制从当前行开始的 n 行(向下复制,“-3yy”仍然是向下复制)

p

把粘贴板上的内容插入到当前行

dG

删除光标所在开始到文件尾的所有字符

J

合并两行

.

执行上一次操作

u

撤销前一个命令

4.vi的行定位功能

按键

功能

Ctrl + f

向前滚动一个屏幕

Ctrl + b

向后滚动一个屏幕

gg

到文件第一行行首

G(大写)

到文件最后一行行首,G必须为大写

:$

到文件最后一行行首

mG或mgg

到指定行,m为目标行数

/内容

查找指定内容(定位到第一个查找到的首字符)

5.vi的文本查找功能

按键

功能

/字符串

查找指定字符串

n

寻找下一个

N

回到前一个

寻找上一个

/^字符串

查找以字符串开始的行

/字符串$

查找以字符串结尾的行

/a.b

查找字符串a任意字符b

6.vi的替换功能

按键

功能

r

替换当前光标字符

:r 文件名

在光标当前位置(下一行)载入另一个文件(不能插入目录)

:s/p1/p2/g

将当前行中所有p1均用p2替代

:g/p1/s//p2/g

将文件中所有p1均用p2替代

:n1,n2s/p1/p2/g

将n1到n2行中所有p1均用p2替代

7.vi的set指令

按键

功能

:set ic

搜寻时忽略大小写

:set noic

搜寻时不忽略大小写

:set nu

显示行号

:set nonu

不显示行号

5 远程操作

Windows远程登录Linux

1.安装软件Xshell

2.打开Linux服务器,选择网络连接模式:选择“桥接模式”并且勾选“复制网络连接状态”

3.重启Linux服务器

4.通过Xshell建立连接:选择“ssh”协议,并设置ip地址(在Linux:ifconfig)

5.如果没有连接上,检查:(1)Windows防火墙是否关闭;(2)Ping命令是否连接

注意:在Xshell中一定不要用Windows的Ctrl+C等快捷键!!!如果卡死,只能关闭重启!

Linux系统远程连接到Linux服务器

命令:sudo ssh -l username hostip

参数

含义

-l

选项, 是字母“l”,不是数字“1”

username

被远程登录的用户名

hostip

被远程登录的ip地址

上传下载:

lcd切换本地路径

cd远程服务器路径

上传:put 文件1 文件2

下载:get 文件1 文件2

6 webserver环境搭建

搭建服务器:

1.通过lcd和put上传文件http.tar.gz

2.tar -zxvf http.tar.gz;转到目录:cd http

3.切换超级用户;重新编译代码:make

4.启动程序:./myhttp start

5.通过ip地址192.168.20.32访问网页

创建网页:

1.确定http目录

2.vi hello.c——>添加代码

3.gcc -o hello.cgi hello.c

4.启动程序:./myhttp start

5.通过ip地址192.168.20.32访问网页

在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

C基础学习笔记——01-C基础第02天(用户权限、VI操作、Linux服务器搭建)相关推荐

  1. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  2. Spark基础学习笔记01:初步了解Spark

    文章目录 零.本讲学习目标 一.大数据开发总体架构 二.Spark简介 三.Spark发展史 四.Spark特点 (一)快速 (二)易用 (三)通用 (四)随处运行 (五)代码简洁 1.采用MR实现词 ...

  3. 深度学习-计算机视觉-基础学习笔记-01

    图像分类的思想:收集大量已知图像数据并带有正确的标签,将以往通过一个函数传入一张图片并返回图片的类型的这个思想转变成,通过俩个函数,第一个函数传入大量的图片并通过该函数训练返回一个模型,该模型通过训练 ...

  4. 密码算法学习笔记01:基础知识-公钥密码和混合密码系统

    来自书籍<图解密码技术 第三版.pdf> 密码算法基础知识-公钥密码和混合密码系统 一.公钥密码 公钥密码--用公钥加密,用私钥解密. 公钥密码无需向接收者配送用于解密的钥匙,只需向发送者 ...

  5. MATLAB基础学习笔记01:初探MATLAB世界

    文章目录 一.安装MATLAB2016 (一)下载MATLAB2016 (二)安装MATLAB2016 二.启动MATLAB2016 --解决远程桌面启动报错的问题 三.变量操作 (一)给变量赋值 ( ...

  6. Spring Boot基础学习笔记01:Spring Boot入门程序

    文章目录 零.学习目标 1.了解Spring Boot框架的优点 2.掌握使用Maven方式构建Spring Boot项目 3.掌握使用Spring Initializr方式构建Spring Boot ...

  7. 学习笔记(01):C++基础入门21 精讲-01_C++基础课程的安排和需要持之以恒的学习态度...

    立即学习:https://edu.csdn.net/course/play/885/12312?utm_source=blogtoedu 李担心

  8. Docker基础学习笔记01:Docker安装

    文章目录 一.Docker概述 (一)Docker为何物 (二)Docker思想 1.集装箱 2.标准化 3.隔离性 二.在私有云上创建虚拟机 (一)登录OpenStack私有云 1.查看[概览] 2 ...

  9. WEB基础学习笔记01

    目录 第一课 什么是CSS 执行HTML和CSS 版本和兼容性 第一个网页 注释 元素 元素嵌套 标准的文档结构 语义化 什么是语义化 为什么要语义化? 文本元素 h p span [无语义] pre ...

  10. UE5学习笔记01(基础操作二)

    1.Outliner被翻译成"大纲". 2.当按住Shift键移动一个物体时,摄像机会追随被移动的物体,形成一种第三人称视角的感觉. 3.在Outliner中选择一个或者多个物体之 ...

最新文章

  1. LeetCode-笔记-231-2的幂
  2. BZOJ4129: Haruna’s Breakfast
  3. Buffer Pool--内存总结1
  4. Deeplearning.ai深度学习课程笔记-在线版
  5. [转] 移动平台Html5的viewport使用经验
  6. 线程间通信: Handler , Looper, MessageQueue, Message (完结)
  7. pyqt 界面关闭信号_PyQt从类(子窗口)发送信号返回到MainWindow(类)
  8. 软件巨头Salesforce带来AutoML杀手TransmogrifAI
  9. 今日头条首次公开算法原理(附全文详解)
  10. IEEE1394宽带局域网组建
  11. linux下pcie串口卡驱动安装,pci串口卡万能驱动
  12. msfvenom 生成php木马,利用msfvenom生成木马程序
  13. php excel 高度,PHPExcel,自动调整行高
  14. docker android模拟器,Docker中的Android模拟器
  15. 神经网络模型的实际案例,神经网络模型应用实例
  16. 怎么用电脑把mp4格式转换成mp3格式
  17. 摔手机 蓝桥 Python
  18. 锐捷服务器系统安全,更安全 锐捷网络发布RG-ESS易安全系统
  19. 三维立体切块效果制作
  20. 06_基于树莓派wiringPi的温湿度采集实验

热门文章

  1. win10怎么用计算机,win10专业版如何通过简单设置,让你的电脑更流畅
  2. 浅谈研究生对科研工作的那些认知误区
  3. Every Document Owns Its Structure: Inductive Text Classification via GNN (TextING)
  4. 【经济学视频课程】科斯定理的本质…
  5. RK3399 GT1X触摸屏驱动调试笔记
  6. 【flutter】type ‘Null‘ is not a subtype of type ‘bool‘
  7. java 仓库类_仓库类型和功能分别是什么?
  8. android 腾讯微博授权,5腾讯微博Android客户端开发获取请求用户授权Request Token.pdf...
  9. 【雕爷学编程】Arduino动手做(2)---光敏电阻模块
  10. 观察 | 从0到700万,钉钉只用3年,原因就是快准狠!