一.linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
Linux 文件与目录管理
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
首先需要知道什么是绝对路径与相对路径。
-
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
-
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法啦!
Linux文件系统规范:
1、文件名名称严格区分字符大小写;
2、文件可以使用除/以外任意字符;
3、文件名长度不能超过255字符;
4、以.开头的文件为隐藏文件;
.: 当前目录;
..: 当前目录的上一级目录;
补充bash基础特性之一:
命令补全:
给定的打头字符串如果能惟一标识某命令程序文件,则直接补全;
不能惟一标识某命令程序文件,再击tab键一次,会给出列表;
路径补全:
在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件:
tab:
如果能惟一标识,则直接补全;
否则,再一次tab,给出列表;
处理目录的常用命令
接下来我们就来看几个常见的处理目录的命令吧:
-
ls: 列出目录
-
cd:切换目录
-
pwd:显示目前的目录
-
mkdir:创建一个新的目录
-
rmdir:删除一个空的目录
-
cp: 复制文件或目录
-
rm: 移除文件或目录
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
ls (列出目录)
在Linux系统当中, ls 命令可能是最常被运行的。
语法:
ls [OPTION]... [FILE]...
选项与参数:
-
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
-
-h, –human-readable:对文件大小单位换算;换算后结果可能会非精确值;
-
-r: reverse, 逆序显示;
-
-R: recursive,递归显示;
[root@localhost ~]# ls -l /etc/fstab
-rw-r--r--. 1 root root 500 Nov 12 01:40 /etc/fstab
-:文件类型,-, d, b, c, l, s, p
rw-r–r–
rw-:文件属主的权限;
r–:文件属组的权限;
r–:其它用户(非属主、属组)的权限;
1:数字表示文件被硬链接的次数;
root:文件的属主;
root:文件的属组;
500:数字表示文件的大小,单位是字节;
Nov 12 01:40:文件最近一次被修改的时间;
/etc/fstab:文件名
cd (切换目录)
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
#使用 mkdir 命令创建w3cschool.cc目录
[root@www ~]# mkdir w3cschool.cc
#使用绝对路径切换到w3cschool.cc目录
[root@www ~]# cd /root/w3cschool.cc/
#使用相对路径切换到w3cschool.cc目录
[root@www ~]# cd ./w3cschool.cc/
# ~表示回到自己的家目录,亦即是 /root 这个目录
[root@www w3cschool.cc]# cd ~
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
cd ~USERNAME:切换至指定用户的家目录;
cd -:在上一次所在目录与当前目录之间来回切换;
pwd (显示目前所在的目录)
pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。
[root@www ~]# pwd [-P]
选项与参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。
范例:单纯显示出目前的工作目录:
[root@www ~]# pwd
/root <== 显示出目录啦~
范例:显示出实际的工作目录,而非连结档本身的目录名而已
[root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir (创建新目录)
如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
语法:
mkdir [-mp] 目录名称
选项与参数:
-
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-
-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
范例:请到/tmp底下尝试创建数个新目录看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊![
root@www tmp]# mkdir -p test1/test2/test3/test4
加了这个 -p 的选项,可以自行帮你创建多层目录!
范例:创建权限为rwx–x–x的目录
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx–x–x 的权限。
rmdir (删除空的目录)
语法:
rmdir [-p] 目录名称
选项与参数:
-
-p :连同上一级『空的』目录也一起删除
删除 w3cschool.cc 目录
[root@www tmp]# rmdir w3cschool.cc/
范例:将於mkdir范例中创建的目录(/tmp底下)删除掉!
[root@www tmp]# ls -l <==看看有多少目录存在?
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test <==可直接删除掉,没问题
[root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了!
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。
不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。
cp (复制文件或目录)
cp 即拷贝文件和目录。
语法:
单源复制:cp [OPTION]... [-T] SOURCE DEST
多源复制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
单源复制:cp [OPTION]… [-T] SOURCE DEST
如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
如果DEST存在:
如果DEST是非目录文件:则覆盖目标文件;
如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:错误; 如果DEST存在:
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
选项与参数:
-
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-
-r:递回持续复制,用於目录的复制行为;(常用)
-
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-
-u:若 destination 比 source 旧才升级 destination !
用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
rm (移除文件或目录)
语法:
rm [-fir] 文件或目录
选项与参数:
-
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-
-i :互动模式,在删除前会询问使用者是否动作
-
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
将刚刚在 cp 的范例中创建的 bashrc 删除掉!
[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
*注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
切勿使用~]#rm -fr /*
mv (移动文件与目录,或修改名称)
语法:
[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2
Linux 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
-
cat 由第一行开始显示文件内容
-
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
-
nl 显示的时候,顺道输出行号!
-
more 一页一页的显示文件内容
-
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
-
head 只看头几行
-
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
cat
由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
-
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-
-E :将结尾的断行字节 $ 显示出来;
-
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-
-T :将 [tab] 按键以 ^I 显示出来;
-
-v :列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:
[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
tac
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
[root@www ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
nl
显示行号
语法:
nl [-bnw] 文件
选项与参数:
-
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值); -
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ; -
-w :行号栏位的占用的位数。
范例一:用 nl 列出 /etc/issue 的内容
[root@www ~]# nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
more
一页一页翻动
[root@www ~]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
-
空白键 (space):代表向下翻一页;
-
Enter :代表向下翻『一行』;
-
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
-
:f :立刻显示出档名以及目前显示的行数;
-
q :代表立刻离开 more ,不再显示该文件内容。
-
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
-
空白键 :向下翻动一页;
-
[pagedown]:向下翻动一页;
-
[pageup] :向上翻动一页;
-
/字串 :向下搜寻『字串』的功能;
-
?字串 :向上搜寻『字串』的功能;
-
n :重复前一个搜寻 (与 / 或 ? 有关!)
-
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
-
q :离开 less 这个程序;
head(取出文件前面几行)
语法:
head [-n number] 文件
选项与参数:
-
-n :后面接数字,代表显示几行的意思
[root@www ~]# head /etc/man.config
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~]# head -n 20 /etc/man.config
tail(取出文件后面几行)
语法:
tail [-n number] 文件
选项与参数:
-
-n :后面接数字,代表显示几行的意思
-
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config
二.bash的工作特性之命令执行状态返回值和命令行展开所所涉及的内容及其示例演示。
-
bash的工作基础特性之:命令执行的状态返回值
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
命令正常执行时,有的还回有命令返回值:
根据命令及其功能不同,结果各不相同;
引用命令的执行结果:
$(COMMAND)
或`COMMAND`
bash的基于特性:引用
强引用:''
弱引用:""
命令引用:“
bash基础特性:快捷键
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符;
Ctrl+k:删除光标所在处至行尾的所有字符;
Ctrl+l:清屏,相当于clear
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@localhost ~]# echo $? #上一条命令正确返回值‘0’0
[root@localhost ~]# cat /etc/issue1
cat: /etc/issue1: No such file or directory
[root@localhost ~]# echo $? #上一条命令执行错误返回值‘1’1
-
bash的工作基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
[root@localhost log]# cd /var/log
[root@localhost log]# cd ~
[root@localhost ~]# #切换至root用户的家目录
[root@localhost ~]# mkdir -pv /tmp/{a,b}
mkdir: created directory ‘/tmp/a’ #在tmp目录下创建a目录
mkdir: created directory ‘/tmp/b’ #在tmp目录下创建b目录
三. 文件的元数据信息有那些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
-
可以用stat(display file or file system status)来查看文件或文件系统的状态:
文件:两类数据
元数据:metadata
数据: data
[root@localhost ~]# stat /etc/issue
File: ‘/etc/issue’
Size: 23 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 16785283 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-12 01:13:26.156010051 +0800
Modify: 2015-12-09 17:59:15.000000000 +0800
Change: 2016-11-04 01:40:25.995028705 +0800 Birth: -
File:文件名;Blocks:块;IO Block:IO块;Device:设备;Access(第一个):权限;Uid:创建者id;Gid:归属组id;Access(第二个):最近访问;modify:最近修改;change:最近改动
-
可以用touch (change file timestamps)命令来修改文件的时间戳:
一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;
二是用来创建新的空文件。
touch [OPTION]… FILE…
选项和参数:
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
touch [OPTION]… FILE…选项和参数: -c: 指定的文件路径不存在时不予创建; -a: 仅修改access time; -m:仅修改modify time; -t STAMP [[CC]YY]MMDDhhmm[.ss]
[root@localhost ~]# touch test.xxx #将test.php的档案时间改为,当前时间,文件不存在建之
[root@localhost ~]# touch -c -t 05061803 test.xxx #将档案时间改为,5月6日18点3分
[root@localhost ~]# touch -r abc.xxx test.xxx #将test.php文件的时间改成跟abc.xxx一样
四.如何定义一个命令别名,如何在命令中引用另一个命令的执行结果?
-
alias 命令别名:
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME='COMMAND'
注意:仅对当前shell进程有效
撤销别名:
~]# unalias NAME
[root@localhost ~] alias ty=ls #为ls设置别名[
root@localhost ~] ty -al #别名
drwxr-xr-x 4 tnak tnak 4096 4月 27 14:20 .
drwxr-xr-x 4 root root 4096 4月 27 12:34 ..
-rw-r--r-- 1 root root 255 4月 26 12:44 abc.sh
drwxr-xr-x 2 root root 4096 4月 26 13:44 ar_test
[root@localhost ~] alias yy='ls -ar' #设置别名,可以是命令带参数
五.练习
1.创建/tmp目录下的:a_c,a_d,b_c,b_d
[root@localhost ~]# mkdir /tmp/{a,b}_{c,d} [root@localhost ~]# ls /tmp a hogsuspend a_c systemd-private-2d996ddd27de4e6b929d5c64200c9058-cups.service-ymoNeI a_d systemd-private-2d996ddd27de4e6b929d5c64200c9058-vmtoolsd.service-zteDS8 b systemd-private-f96fe84bd1d54e52912dc82f3f0ba9b0-cups.service-N44lfN b_c systemd-private-f96fe84bd1d54e52912dc82f3f0ba9b0-vmtoolsd.service-NmTZSh b_d
2.创建/tmp/mylinux如下目录:
[root@localhost ~]# mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scrips},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}} [root@localhost ~]# tree /tmp/mylinux #tree以树状图列出目录的内容 /tmp/mylinux ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scrips ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 24 directories, 0 files
3. 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录。
[root@localhost ~]# ls -d /var/l?[a-z] /var/lib /var/log
4. 显示/etc目录下,以任何一个数字开头,且以非数字结尾的文件或目录。
[root@localhost ~]# ls -d /etc/[0-9]*[^[:digit:]]
5. 显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
[root@localhost ~]# ls /etc/[^[:alpha:]][a-z]*
6. 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile=2016-05-27-09-32-22.
[root@localhost ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S) [root@localhost ~]# ls /tmp hogsuspend mylinux tfile-2016-12-12-21-10-55
7. 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost ~]# mkdir /tmp/mytest1 #创建目录mytest1 [root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1 cp: overwrite ‘/tmp/mytest1/pam.d/config-util’? y cp: overwrite ‘/tmp/mytest1/pam.d/other’? y #后面还有很多文件,暂不一一列举 [root@localhost ~]# ls /tmp/mytest1/pam.d pbm2ppa.conf plymouth popt.d prelink.conf.d profile.d purple #和CP的结果一样,暂不一一列举
8. 复制/etc目录下所有以.d结尾的或目录至/tmp/mytest2目录中。
[root@localhost ~]# mkdir /tmp/mytest2 #创建目录mytest2 [root@localhost ~]# cp -r /etc/*.d /tmp/mytest2 [root@localhost ~]# ls /tmp/mytest2 bash_completion.d ipsec.d profile.d rwtab.d binfmt.d ld.so.conf.d rc0.d sane.d chkconfig.d libibverbs.d rc1.d setuptool.d cron.d logrotate.d rc2.d statetab.d depmod.d modprobe.d rc3.d sudoers.d dnsmasq.d modules-load.d rc4.d sysctl.d dracut.conf.d my.cnf.d rc5.d tmpfiles.d exports.d oddjobd.conf.d rc6.d usb_modeswitch.d gdbinit.d pam.d rc.d xinetd.d grub.d popt.d request-key.d yum.repos.d init.d prelink.conf.d rsyslog.d
9. 复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@localhost ~]# mkdir /mytest3 #在/目录下创建目录mytest3 [root@localhost ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3 cp: target ‘/tmp/mytest3’ is not a directory #如上,未在/tmp/创建目录mytest3,所以在COPY的时候提示目标不是目录 [root@localhost ~]# mkdir /tmp/mytest3 #在/tmp/下创建mytest3目录 [root@localhost ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3 #复制成功 [root@localhost ~]# ls /tmp/mytest3 ld.so.conf locale.conf mke2fs.conf nsswitch.conf libaudit.conf logrotate.conf mtools.conf numad.conf libuser.conf man_db.conf nfsmount.conf
补充说明:globbing(文件名通配)的格式:
*:匹配任意长度的任意字符; ?:匹配任意单个字符 []:匹配制定范围内的任意单个字符 [^]:匹配制定范围外的任意单个字符
特殊格式:
[a-z],[A-Z],[0-9],[a-z 0-9] 他们不区分大小写
[:upper:]:所有大写字母 [:lower:]:所有小写字母 [:alpha:]:所有字母 [:digit:]:所有数字
[:alnum:]:所有字母和数字 [:space:]:所有空白字符 [:punct:]:所有标点符号
示例:2[0-9][0-9] :表示200-299
原创文章,作者:小飝,如若转载,请注明出处:http://www.178linux.com/63327
评论列表(1条)
赞~总结的不错~注意下整体排版的风格~继续加油~