5.1 uname

显示系统信息

uname -a  可以看到更多的信息,显示所有

Linux oldbody 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Linux 代表内核名称 oldboy代表主机名  2.6.32-573.el6.x86_64 内核发行版本号

1 SMP Thu Jul 23 15:44:03 UTC 2015 内核的版本号

cat /etc/redhat-release   可以看到版本

CentOS release 6.7 (Final)

uname -r可以看到内核

2.6.32-573.el6.x86_64

uname -n 显示主机名 或者hostname 或者cat /etc/sysconfig/network

[root@oldbody ~]# hostname

oldbody

[root@oldbody ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=oldbody

[root@oldbody ~]#

5.2 hostname

显示或设置系统的主机名

参数 -I 显示主机的所有IP地址 速度较快 不依赖与DNS解析

修改主机名:hostname liangli   退出后登录才能生效  但是服务器重启后,又恢复到了oldboy了,因为配置文件没有修改  命令行和配置文件都需要修改才能永久生效

sed  -i ‘s#HOSTNAME=oldbody#HOSTNAME=liangli#g’ >/etc/sysconfig/network

注意:在CentOS7中 修改主机名的配置文件换成了/etc/hostname

文件系统:组织管理文件的一种机制,对磁盘一格式化,就是创建文件系统了

5.3 dmesg

系统启动异常诊断

内核环形缓冲区的内容同时保存在/var/log目录中,即名称dmesg的文件里

[root@oldbody ~]# ll -h /var/log/dmesg

-rw-r--r-- 1 root root 84K 10月  8 19:45 /var/log/dmesg

5.4 stat

显示文件或文件系统状态

参数 -c 使用指定输出格式代替默认值

[root@oldbody test]# stat /etc/hosts

  File: `/etc/hosts'    文件名

  Size: 158 文件大小    Blocks: 8 占用block数量    IO Block: 4096 block总大小(8*512)  regular file 普通文件类型

Device: 803h/2051d      Inode: 654109 文件的inode值      Links: 2 文件的硬链接数

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-09-01 00:01:20.993999985 +0800

Modify: 2010-01-12 21:28:22.000000000 +0800

Change: 2018-06-15 15:03:24.607961371 +0800

[root@oldbody test]#

[root@oldbody ~]# stat -c %a /etc/hosts

644

[root@oldbody ~]#

5.5 du

统计磁盘空间使用情况

-h 人类可读

-s  显示文件总大小

-a  显示所有文件大小

–max-depth 显示N级目录的大小

–exclude 略过指定的目录或文件

[root@oldbody ~]# du -ah  显示当前目录下所有文件或目录

4.0K    ./1.txt

4.0K    ./.bashrc

4.0K    ./.bash_logout

4.0K    ./.viminfo

0       ./key1

4.0K    ./.cshrc

4.0K    ./liangli/a.txt

0       ./liangli/a/1.txt

4.0K    ./liangli/a/3

4.0K    ./liangli/a/1

4.0K    ./liangli/a/2

0       ./liangli/a/2.txt

0       ./liangli/a/3.txt

16K     ./liangli/a

4.0K    ./liangli/b.txt

4.0K    ./liangli/b/3

4.0K    ./liangli/b/2

0       ./liangli/b/2.txt

4.0K    ./liangli/b/4

0       ./liangli/b/3.txt

0       ./liangli/b/4.txt

16K     ./liangli/b

44K     ./liangli

4.0K    ./xac

4.0K    ./key/oldgirl

0       ./key/file3.txt

4.0K    ./key/dir2.txt

4.0K    ./key/dir4.txt

4.0K    ./key/oldboy

4.0K    ./key/key

4.0K    ./key/key.gz

0       ./key/file1.txt

0       ./key/file2.txt

4.0K    ./key/dir5.txt

4.0K    ./key/dir1.txt

4.0K    ./key/oldboy.gz.tar

0       ./key/file4.txt

4.0K    ./key/dir3.txt

4.0K    ./key/oldgirl.gz.tar

0       ./key/file5.txt

48K     ./key

4.0K    ./lsab

4.0K    ./.lesshst

0       ./soft_link

4.0K    ./anaconda-ks.cfg

16K     ./.bash_history

8.0K    ./install.log.syslog

4.0K    ./xaa

4.0K    ./.bash_profile

4.0K    ./oldboy.txt

4.0K    ./xab

4.0K    ./liangli2018/dir1.ori/4

4.0K    ./liangli2018/dir1.ori/7

4.0K    ./liangli2018/dir1.ori/6

4.0K    ./liangli2018/dir1.ori/5

20K     ./liangli2018/dir1.ori

4.0K    ./liangli2018/dir2/4

4.0K    ./liangli2018/dir2/7

4.0K    ./liangli2018/dir2/6

4.0K    ./liangli2018/dir2/5

20K     ./liangli2018/dir2

4.0K    ./liangli2018/dir3/4

4.0K    ./liangli2018/dir3/7

4.0K    ./liangli2018/dir3/6

4.0K    ./liangli2018/dir3/5

20K     ./liangli2018/dir3

4.0K    ./liangli2018/oldboy/test

8.0K    ./liangli2018/oldboy

4.0K    ./liangli2018/dir1/7

4.0K    ./liangli2018/dir1/6

4.0K    ./liangli2018/dir1/5

16K     ./liangli2018/dir1

88K     ./liangli2018

4.0K    ./hard_link

4.0K    ./.tcshrc

4.0K    ./lsaa

4.0K    ./lsac

28K     ./install.log

304K    .

[root@oldbody ~]# du -sh   以人类可读的方式显示当前目录的总大小

304K    .

[root@oldbody ~]# du -sh /usr/local/   显示指定目录的总大小

132K    /usr/local/

[root@oldbody ~]#

[root@oldbody ~]# du -h --max-depth=1   显示当前目录下第一层目录大小

44K     ./liangli

48K     ./key

88K     ./liangli2018

304K    .

[root@oldbody ~]# du -h --max-depth=2 /usr/local  只显示第一层 二层目录的大小

4.0K    /usr/local/lib

4.0K    /usr/local/include

4.0K    /usr/local/share/applications

80K     /usr/local/share/man

4.0K    /usr/local/share/info

92K     /usr/local/share

4.0K    /usr/local/lib64

4.0K    /usr/local/sbin

4.0K    /usr/local/src

4.0K    /usr/local/etc

4.0K    /usr/local/games

4.0K    /usr/local/bin

4.0K    /usr/local/libexec

132K    /usr/local

5.6 date

显示与设置系统时间

参数 -s 设置系统时间  -d 显示指定字符串所描述的时间示例

date  -s  是修改时间

[root@oldboy ~]# date -s "2018/09/18 20:21"        年 year 月 month  日 day

[root@oldboy ~]# date

2018年 09月 18日 星期二 17:42:02 CST

[root@oldboy ~]# date +%y-%m-%d

18-09-18

[root@oldboy ~]#

[root@oldboy ~]# date +%Y-%m-%d    等同于%F

2018-09-18

[root@oldboy ~]# date +%F   显示完整日期格式

2018-09-18

[root@oldboy ~]# date +%w     查看周几(week)

2

 

[root@oldboy ~]# date +%X      显示时间

20时27分34秒

[root@oldboy ~]# date +%H:%M:%S   等同于%X   小时 hour  分 minute  秒 second

20:27:56

[root@oldboy ~]#

 

[root@oldboy ~]# date +%Y-%m-%d\ %H:%M:%S

2018-09-18 20:29:52

[root@oldboy ~]#

[root@oldboy ~]# date +%F\ %X

2018-09-18 20时30分33秒

[root@oldboy ~]#

 

[root@oldboy ~]# date +%Y_%m_%d

2018_09_18

[root@oldboy ~]#

[root@oldboy ~]# date +%F

2018-09-18

[root@oldboy ~]# date +%w

2

[root@oldboy ~]# date +%y-%m-%d

18-09-18

[root@oldboy ~]# echo $(date +%F)s

2018-09-18

[root@oldboy ~]#s

tar和时间的结合应用

将liangli目录进行打包

[root@oldboy ~]# tar  zcvf  liangli.tar.gz  liangli

liangli/

liangli/oldboy.sh

liangli/a.txt

liangli/a

liangli/file

liangli/a.sh

liangli/3

liangli/dir2.txt

liangli/1

liangli/dir4.txt

liangli/gongli.txt

liangli/oldgirl.sh

liangli/2

liangli/soft

liangli/dir9.txt

liangli/dir10.txt

liangli/test.sh

liangli/dir7.txt

liangli/oldboy2.txt

liangli/dir5.txt

liangli/dir1.txt

liangli/soft_file

liangli/dir3.txt

liangli/b

liangli/dir6.txt

liangli/dir8.txt

[root@oldboy ~]#

[root@oldboy ~]# ll

总用量 72

drwxr-xr-x  3 root root  4096 9月  13 23:35 a

-rw-------. 1 root root  1151 6月  15 00:31 anaconda-ks.cfg

drwxr-xr-x  2 root root  4096 9月  17 10:03 data

-rw-r--r--. 1 root root 23048 6月  15 00:31 install.log

-rw-r--r--. 1 root root  5890 6月  15 00:30 install.log.syslog

drwxr-xr-x. 3 root root  4096 9月  17 17:59 key

drwxr-xr-x. 2 root root  4096 9月  18 15:44 liangli

drwxr-xr-x  8 root root  4096 9月  17 10:01 liangli1

-rw-r--r--  1 root root   597 9月  18 18:30 liangli.tar.gz

drwxr-xr-x  3 root root  4096 9月  17 10:03 lihao

-rw-r--r--  1 root root    15 9月  13 16:10 xargs

 

[root@oldboy ~]# tar  zcvf  liangli_`date +%F`.tar.gz liangli

liangli/

liangli/oldboy.sh

liangli/a.txt

liangli/a

liangli/file

liangli/a.sh

liangli/3

liangli/dir2.txt

liangli/1

liangli/dir4.txt

liangli/gongli.txt

liangli/oldgirl.sh

liangli/2

liangli/soft

liangli/dir9.txt

liangli/dir10.txt

liangli/test.sh

liangli/dir7.txt

liangli/oldboy2.txt

liangli/dir5.txt

liangli/dir1.txt

liangli/soft_file

liangli/dir3.txt

liangli/b

liangli/dir6.txt

liangli/dir8.txt

[root@oldboy ~]# ll

总用量 76

drwxr-xr-x  3 root root  4096 9月  13 23:35 a

-rw-------. 1 root root  1151 6月  15 00:31 anaconda-ks.cfg

drwxr-xr-x  2 root root  4096 9月  17 10:03 data

-rw-r--r--. 1 root root 23048 6月  15 00:31 install.log

-rw-r--r--. 1 root root  5890 6月  15 00:30 install.log.syslog

drwxr-xr-x. 3 root root  4096 9月  17 17:59 key

drwxr-xr-x. 2 root root  4096 9月  18 15:44 liangli

drwxr-xr-x  8 root root  4096 9月  17 10:01 liangli1

-rw-r--r--  1 root root   597 9月  18 18:32 liangli_2018-09-18.tar.gz

-rw-r--r--  1 root root   597 9月  18 18:30 liangli.tar.gz

drwxr-xr-x  3 root root  4096 9月  17 10:03 lihao

-rw-r--r--  1 root root    15 9月  13 16:10 xargs

[root@oldboy ~]#

也可以用$()

[root@oldboy ~]# tar zcvf lihao_$(date +%F).tar.gz lihao/      

lihao/

lihao/etext.sh

lihao/nihao2/

lihao/nihao2/nihao3/

lihao/ctext.sh

lihao/dtext.sh

[root@oldboy ~]# ll

总用量 80

drwxr-xr-x  3 root root  4096 9月  13 23:35 a

-rw-------. 1 root root  1151 6月  15 00:31 anaconda-ks.cfg

drwxr-xr-x  2 root root  4096 9月  17 10:03 data

-rw-r--r--. 1 root root 23048 6月  15 00:31 install.log

-rw-r--r--. 1 root root  5890 6月  15 00:30 install.log.syslog

drwxr-xr-x. 3 root root  4096 9月  17 17:59 key

drwxr-xr-x. 2 root root  4096 9月  18 15:44 liangli

drwxr-xr-x  8 root root  4096 9月  17 10:01 liangli1

-rw-r--r--  1 root root   253 9月  18 18:34 liangli_2018-09-18.tar.gz

-rw-r--r--  1 root root   597 9月  18 18:30 liangli.tar.gz

drwxr-xr-x  3 root root  4096 9月  17 10:03 lihao

-rw-r--r--  1 root root   253 9月  18 18:34 lihao_2018-09-18.tar.gz

-rw-r--r--  1 root root    15 9月  13 16:10 xargs

[root@oldboy ~]#

显示昨天时间   -d参数

[root@oldboy ~]# date +%F -d "-1day"

2018-09-17

[root@oldboy ~]#

显示两个小时以前的文件

[root@oldboy ~]# date +%F-+%H

2018-09-18-+20

[root@oldboy ~]# date +%F-+%H -d "2H"

2018-09-18-+18

[root@oldboy ~]#

打包昨天以前的文件

[root@oldboy ~]# tar zcvf key_$(date +%F -d "-1day").tar.gz key

[root@oldboy ~]#ll

-rw-r--r--  1 root root   128 9月  18 20:41 key_2018-09-17.tar.gz

5.7 echo

参数 -n 不要自动换行

echo是一个打印输出内容命令,配合> 或者>>可以为文件覆盖及追加内容, >意思为重定向,会清除文件里所有以前数据 >>为内容追加,只在文件尾部追加需要的内容

一对单引号  这条命令后面的oldboy.txt不存在的话,会创建该oldboy.txt文件的,如果文件oldboy.txt存在的话,会覆盖里面的内容进行创建新的

也可以在echo里面进行追加多行文字

echo '   1111                        注意下echo后面的空格

   2222

   3333'>>oldboy.txt

除了echo可以改文件之外   还有cat命令   cat >oldboy.txt  然后输入I am studying linux   回车 按ctrl+c 会写进去    然后再cat oldboy.txt查看下     cat >>oldboy.txt 追加新增内容进去    或者cat >oldboy.txt输入I am studying Linux  回车 输入ctrl+C   可以查看下cat oldboy.txt

还有cat的多行追加  首先得再记事本上写好

在Tech目录下 echo liangli 1>a.txt 2>b.txt    意思是将正确信息输出到a.txt中,将错误的信息输出到b.txt中   此时liangli输出到了a.txt中了,如果将e去掉再回车的话,那么,错误信息会输出到b.txt中了

echo oldboy 1>a.txt 2>a.txt   意思是将正确和错误的输出到a.txt中

或者 echo oldboy 1>a.txt 2>&1 (推荐方法) 也是将正确和错误的信息输出到a.txt中  让2的输出和1放到的位置一样

或者echo oldboy &>a.txt   &>  这两个符号加起来就是将正确和错误信息都放在a.txt中

2>&1    1正确的输出内容放到哪儿,2错误输出内容也放在和1一样的位置

[root@oldboy ~]# echo -n "oldboy"; echo "oldboy"   -n是不换行

oldboyoldboy

[root@oldboy ~]# echo -e "oldboy\toldboy"  -e 可以使用转义字符(\n回车   \t  是tab键)

oldboy  oldboy

[root@oldboy ~]#   

 

cat >>/Tech/oldboy.txt<<liangli

I am studying Linux222

liangli                                                          其中liangli要进行顶格

[root@oldbody b]# echo {1..10}

1 2 3 4 5 6 7 8 9 10

[root@oldbody b]#

 

[root@oldbody /]# echo {1..3}{4..6}

14 15 16 24 25 26 34 35 36

[root@oldbody /]#

特殊环境变量(系统自带的)

PATH   所有命令所在地 用冒号分隔

LANG   字符集变量

设置环境变量 export   例如 export PATH=$PATH:/root   把/root加入到PATH的环境变量

[root@oldboy ~]# PATH="$PATH:/root"

[root@oldboy ~]# echo PATH

PATH

[root@oldboy ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root:/root

[root@oldboy ~]# oldboy

oldboy

[root@oldboy ~]#

5.8 watch

监视命令执行情况 可以动态显示命令或程序的执行情况  类似与tail -f 或者tailf命令

5.9 witch

显示命令的全路径  witch命令查找的范围是PATH环境变量的路径

参数 -a  默认在PATH路径中由前往后查找命令,如果查找到了,就停止匹配了,使用-a选项将遍历所有PATH路径,输出所有匹配项

[root@oldbody ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldbody ~]#

[root@oldboy ~]# which ls

alias ls='ls --color=auto'

        /bin/ls

[root@oldboy ~]# which oldboy

/root/oldboy

[root@oldboy ~]#

查看命令路径的方式

[root@oldboy ~]# which ifconfig

/sbin/ifconfig

[root@oldboy ~]# whereis -b  ifconfig

ifconfig: /sbin/ifconfig

[root@oldboy ~]# locate ifconfig

/sbin/ifconfig

/usr/sbin/pifconfig

/usr/share/man/de/man8/ifconfig.8.gz

/usr/share/man/fr/man8/ifconfig.8.gz

/usr/share/man/man8/ifconfig.8.gz

/usr/share/man/man8/pifconfig.8.gz

/usr/share/man/pt/man8/ifconfig.8.gz

5.10 whereis

显示命令及其相关文件全路径 用于定位指定命令的可执行文件 源码文件及man帮助文件的路径

-b 参数 查找可执行文件

-m 参数 查找man帮助文件

-s  参数 查找源代码文件

[root@oldbody ~]# whereis echo

echo: /bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

[root@oldbody ~]# whereis -b echo

echo: /bin/echo

[root@oldbody ~]# whereis -m echo

echo: /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

[root@oldbody ~]# whereis -s echo

echo:

[root@oldbody ~]#

5.11 locate

快速定位文件路径 从数据库mlocate.db文件中查找文件名及对应的路径信息

-c 参数 只显示匹配的行数

查看数据库

[root@oldbody ~]# ll -h /var/lib/mlocate/mlocate.db

-rw-r----- 1 root slocate 1.6M 10月  8 20:06 /var/lib/mlocate/mlocate.db

[root@oldbody ~]# cat /etc/cron.daily/mlocate.cron

#!/bin/sh

nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "zfs" { print $2 }')

renice +19 -p $$ >/dev/null 2>&1

ionice -c2 -n7 -p $$ >/dev/null 2>&1

/usr/bin/updatedb -f "$nodevs"

[root@oldbody ~]#

查找文件路径 -c 参数 只显示匹配的行数

[root@oldbody ~]# locate pwd

/bin/pwd

/etc/.pwd.lock

/etc/latrace.d/pwd.conf

/lib/modules/2.6.32-573.el6.x86_64/kernel/drivers/watchdog/hpwdt.ko

/sbin/unix_chkpwd

/usr/bin/pwdx

/usr/include/pwd.h

/usr/lib/x86_64-redhat-linux5E/include/pwd.h

/usr/lib64/cracklib_dict.pwd

/usr/lib64/python2.6/lib-dynload/spwdmodule.so

/usr/share/cracklib/cracklib-small.pwd

/usr/share/cracklib/pw_dict.pwd

/usr/share/man/man0p/pwd.h.0p.gz

/usr/share/man/man1/pwd.1.gz

/usr/share/man/man1/pwdx.1.gz

/usr/share/man/man1p/pwd.1p.gz

/usr/share/man/man3/lckpwdf.3.gz

/usr/share/man/man3/ulckpwdf.3.gz

/usr/share/man/man8/unix_chkpwd.8.gz

/usr/share/man/mann/pwd.n.gz

/usr/share/man/overrides/ru/man3/lckpwdf.3.gz

/usr/share/man/overrides/ru/man3/ulckpwdf.3.gz

/usr/share/perl5/pwd.pl

/usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt

/usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt/nmi

/usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt/nmi/decoding.h

[root@oldbody ~]# locate -c pwd

26

[root@oldbody ~]#

[root@oldbody ~]# locate /etc/sh   只要部分符合就输出

/etc/shadow

/etc/shadow-

/etc/shells

[root@oldbody ~]# locate /etc/sh*

/etc/shadow

/etc/shadow-

/etc/shells

[root@oldbody ~]# locate -c /etc/sh*

3

[root@oldbody ~]#

5.12 updatedb

更新mlocate数据库 updatedb命令可以创建或者更新locate命令使用的数据库,updatedb命令会因定时任务定期(每天)执行

-U 参数 更新指定目录相关的数据库信息,默认是扫描整个系统

-v  参数 显示命令的执行过程

查看数据库

[root@oldbody ~]# ll -h /var/lib/mlocate/mlocate.db

-rw-r----- 1 root slocate 1.6M 10月  8 20:06 /var/lib/mlocate/mlocate.db

更新数据库

[root@oldbody ~]# locate oldboy

/root/oldboy.txt

/root/key/oldboy

/root/key/oldboy.gz.tar

/root/liangli2018/oldboy

/root/liangli2018/oldboy/test

[root@oldbody ~]# touch oldboy20181008

[root@oldbody ~]# locate oldboy      

/root/oldboy.txt

/root/key/oldboy

/root/key/oldboy.gz.tar

/root/liangli2018/oldboy

/root/liangli2018/oldboy/test

[root@oldbody ~]# updatedb -vU /root/

/root/1.txt

/root/.bashrc

/root/.bash_logout

/root/oldboy20181008

/root/.viminfo

/root/key1

/root/.cshrc

/root/liangli

/root/xac

/root/key

/root/lsab

/root/.lesshst

/root/soft_link

/root/anaconda-ks.cfg

/root/.bash_history

/root/install.log.syslog

/root/xaa

/root/.bash_profile

/root/oldboy.txt

/root/xab

/root/liangli2018

/root/hard_link

/root/.tcshrc

/root/lsaa

/root/lsac

/root/install.log

/root/key/dir1.txt

/root/key/dir2.txt

/root/key/dir3.txt

/root/key/dir4.txt

/root/key/dir5.txt

/root/key/file1.txt

/root/key/file2.txt

/root/key/file3.txt

/root/key/file4.txt

/root/key/file5.txt

/root/key/key

/root/key/key.gz

/root/key/oldboy

/root/key/oldboy.gz.tar

/root/key/oldgirl

/root/key/oldgirl.gz.tar

/root/liangli/a

/root/liangli/a.txt

/root/liangli/b

/root/liangli/b.txt

/root/liangli/a/1

/root/liangli/a/1.txt

/root/liangli/a/2

/root/liangli/a/2.txt

/root/liangli/a/3

/root/liangli/a/3.txt

/root/liangli/b/2

/root/liangli/b/2.txt

/root/liangli/b/3

/root/liangli/b/3.txt

/root/liangli/b/4

/root/liangli/b/4.txt

/root/liangli2018/dir1

/root/liangli2018/dir1.ori

/root/liangli2018/dir2

/root/liangli2018/dir3

/root/liangli2018/oldboy

/root/liangli2018/dir1/5

/root/liangli2018/dir1/6

/root/liangli2018/dir1/7

/root/liangli2018/dir1.ori/4

/root/liangli2018/dir1.ori/5

/root/liangli2018/dir1.ori/6

/root/liangli2018/dir1.ori/7

/root/liangli2018/dir2/4

/root/liangli2018/dir2/5

/root/liangli2018/dir2/6

/root/liangli2018/dir2/7

/root/liangli2018/dir3/4

/root/liangli2018/dir3/5

/root/liangli2018/dir3/6

/root/liangli2018/dir3/7

/root/liangli2018/oldboy/test

[root@oldbody ~]# locate oldboy       

/root/oldboy.txt

/root/oldboy20181008

/root/key/oldboy

/root/key/oldboy.gz.tar

/root/liangli2018/oldboy

/root/liangli2018/oldboy/test

[root@oldbody ~]#

版权声明:本文为key-oldboy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/key-oldboy/p/9758848.html