linux xargs命令 find . -name *.c -print!xargs grep $1是什么意思

&&国之画&&&&&&
&& &&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!Linux Shell编程从初学到精通的目录_百度知道17.Linux系统常用命令(原创)
1.通过su命令切换用户
su - root从当前普通用户切换到root超级用户,需要输入密码
su - user从root超级用户切换到其他普通用户,无需输入密码
如果是从一个普通用户到另一个普通用户,需要输入密码
2.1 useradd:添加用户账号。
useradd [选项] 用户名
useradd yul useradd添加用户账号,系统会新建&/home/yul&作为新用户工作目录,即:在&/home&目录下为对应账号建立一个名为同名的主目录,并且还为该用户单独建立一个与用户名同名的组;
useradd所建立的账号保存在&/etc/passwd&文本文件中,文件中每一行包含一个账号信息;
useradd必须用root权限;
adduser是useradd的符号链接
2.2 passwd:更改对应用户账号密码。
passwd [选项] [用户名]
passwd yul回车后,需要输入密码;
也可以用于普通用户修改账号密码
3.1 ps:显示当前系统中由该用户运行的进程列表。
ps -ef 查看所有进程及其PID进程号,系统时间,命令详细目录,执行者等。
ps -aux 显示-ef内容,还可显示CPU及内存占用率,进程状态
ps -w 显示加宽并且可以显示较多的信息,通常最多加宽三次ps &auxwww
ps &ef|grep ntp ps &ef的结果直接输入到grep ntp的程序中,使用管道;
管道即:把一个程序的输出直接连接到另一个程序的输入,而不经过任何中间文件
3.2kill:输出特定的信号给指定PID(进程号)的进程,并根据该信号而完成指定的行为。其中可能的信号有进程挂起、进程等待、进程终止等;
当选项是缺省时为输出终止信号给该进程。
kill [选项] 进程号(PID)
kill 7421终止进程号为7421的进程
4 fdisk &l查看硬件分区情况(文件系统分区情况);
必须拥有root权限;
IDE硬盘对应的设备名称分别为hda、hdb、hdc和hdd,SCSI硬盘对应的设备名称则为ssda、sdb、&此外,hda1代表hda的第一个硬盘分区,hda2代表hda的第二个分区,依此类推;
通过查看/var/log/messages文件,可以找到Linux系统已辨认出来的设备代号。
5 mount 磁盘挂载命令,挂载文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者;
挂载是指把分区和目录对应的过程,而挂载点是指挂载在文件树中的位置;
mount 命令就可以把文件系统挂载到相应的目录下,并且由于Linux中把设备都当作文件一样使用;
在Linux下&/mnt&目录是专门用于挂载不同的文件系统的,它可以在该目录下新建不同的子目录来挂载不同的设备文件系统。
mount [选项] [类型] 设备文件名 挂载点目录
例:Linux下使用U盘呢?
一般U盘为SCSI格式的硬盘,其格式为vfat格式,其设备号可通过&fdisk &l&进行查看,假若设备名为&/dev/sda1&,则可用如下命令就可将其挂载:
mount-t vfat /dev/sda1 /mnt/u (/mnt/u为手动建立的文件夹)
& 若想设置在开机时自动挂载,可在文件&/etc/fstab&中加入相应的设置行即可。
使用mount命令主要通过以下几个步骤。
①确认是否为Linux可以识别的文件系统,Linux可识别的文件系统只要是以下几种。
& Windows95/98常用的FAT32文件系统:vfat。
& WinNT/2000的文件系统:ntfs。
& OS/2用的文件系统:hpfs。
& Linux用的文件系统:ext2、ext3、nfs。
& CD-ROM光盘用的文件系统:iso9660。
②确定设备的名称,确定设备名称可通过使用命令&fdisk -l&查看。
③查找挂接点。
必须确定挂载点已经存在,也就是在&/mnt&下的相应子目录已经存在,一般建议在&/mnt&下新建几个如&/mnt/windows&,&/mnt/usb&的子目录,现在有些新版本的Linux(如红旗Linux、中软Linux、MandrakeLinux)都可自动挂载文件系统,Red Hat仅可自动挂载光驱。
④ 在使用完该设备文件后可使用命令umount将其卸载
6.1 cd 回主目录(缺省cd),为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。
cd - 回到前次工作目录(cd加一杠,减号的那一杠)
cd .. 回上级目录
&./&代表当前目录,&../&代表上级目录。(本目录下创建目录很有用)
6.2 ls -l 查看当前目录下的所有文件,并通过选项&-l&显示出详细信息
显示格式说明如下:
文件类型与权限 链接数 文件属主 文件属组 文件大小 修改的时间 名字
ls-a 显示出所有&.&开头的文件
6.3 mkdir 创建一个目录,或者说文件夹
mkdir -p ./hello/my -p一次创建多级目录,若目录不存在,自动创建
mkdir -m777 ./why -m创建相应权限的目录(777表示三个组的读写执行权限,读:4,写:2,执行:1)
该命令要求创建目录的用户在创建路径的上级目录中具有写权限,并且路径名不能是当前目录中已有的目录或文件名称。
6.4 cat 连接并显示指定的一个和多个文件的有关信息。
cat [选项] 文件1 文件2&
cat -n hello1.chello2.c 打印hello1.c后紧接着打印hello2.c的所有内容;
并且从第一行开始输出所有行号;
cat -bhello1.c hello2.c 和-n类似,不过对于空白行不编号
6.5 cp 将给出的源文件复制为目标文件;
或将给出的多个源文件复制到目标目录中;
或将给出的目录复制到指定目录中。
cp [选项] 源文件或目录 目标文件或目录
cp -a ./my/why/
./ 将/my/why目录下的所有文件复制到当前目录下,原目录文件不变
6.6 mv:为文件或目录改名或将文件由一个目录移入另一个目录中。
mv [选项] 源文件或目录 目标文件或目录
mv -I . /my/why/ ./ 将/my/why目录下的所有文件移至当前目录,原
目录下文件自动被删除
mv命令根据命令中第二个参数类型的不同(是目标文件还是目标目录)来判断是重命名还是移动文件:
①当第二个参数类型是文件时,mv命令完成文件重命名,此时,它将所给的源文件或目录重命名为给定的目标文件名;
& ②当第二个参数是已存在的目录名称时,mv命令将各参数指定的源文件均移至目标目录中;
③在跨文件系统移动文件时,mv先复制,再将原有文件删除,而链至该文件的链接也将丢失。
6.7 rm:删除一个目录中的一个或多个文件或目录。
rm [选项] 文件或目录
rm -r-I ./why -i参数表示系统会确认是否删除(即交互式删除)
-r参数表示rm将全部目录和子目录均递归地删除
rm -rf test2 命令会将test2子目录及子目录中所有档案删除,并且不用
注意:如果没有使用- r 选项,则rm不会删除目录;
7.1 chown:修改文件所有者和组别。
chown [选项]... 文件所有者 [所有者组名] 文件
-------其中的文件所有者为修改后的文件所有者。
chown rootuClinux-dist.tar
命令的作用:将ls -l 显示出来的一下文件属主(加粗选项)改变名称
文件类型与权限 链接数 文件属主 文件属组 文件大小 修改的时间 名字
7.2chgrp:改变文件的组所有权。
chgrp [选项]... 文件所有组 文件
--------其中的文件所有组为改变后的文件组拥有者。
chgrproot uClinux-dist.tar
命令的作用:将ls -l 显示出来的一下文件属组(加粗选项)改变名称
文件类型与权限 链接数 文件属主 文件属组 文件大小 修改的时间 名字
说明:使用chown和chgrp必须拥有root权限。
8.自动补全:输入文件前几个字母+键的方式
9 .chmod改变文件的访问权限;
可使用符号标记进行更改和八进制数指定更改两种方式,因此它的格式也有两种不同的形式;
①符号标记:chmod [选项]& 符号权限 [符号权限]& 文件
其中的符号权限可以指定为多个,也就是说,可以指定多个用户级别的权限,但它们中间要用逗号分开表示,若没有显示指出则表示不作更改。
②八进制数: chmod [选项] & 八进制权限 文件&
其中的八进制权限是指要更改后的文件权限。
说明:文件的访问权限可表示成:- rwx rwx rwx。在此设有三种不同的访问权限:读(r)、写(w)和运行(x)。三个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。在此,可增加一个用户级别a(all)来表示所有这三个不同的用户级别。
①对于第一种符号连接方式的chmod命令中,用加号&+&代表增加权限,用减号&?&删除权限,等于号&=&设置权限。
chmod a+rx,u+wuclinux.tgz 所有三个不同用户级别全部增加r和x权限,
文件拥有者(u)增加w权限
chmod u=rwx,g=rw,o=rx uclinux.tgz文件拥有者(u)增加rwx,所属的用户组(g)增加rw,系统里的其他用户(o)增加rx
② 对于第二种八进制数指定的方式,将文件权限字符代表的有效位设为&1&,即&rw-&、&rw-&和&r--&的八进制表示为&110&、&110&、&100&,把这个2进制串转换成对应的8进制数就是6、6、4,也就是说该文件的权限为664(三位八进制数)。
10. grep 在指定文件中搜索特定的内容,并将含有这些内容的行标准输出
grep[选项] 格式[文件及路径]
--------其中的格式是指要搜索的内容格式,若缺省&文件及路径&则默认表示在当前目录下搜索。
grep &hello& /-r&hello&是要搜索的内容,&/ -r&是指定文件,表示搜索根目录下的所有文件。
在缺省情况下,&grep&只搜索当前目录。如果此目录下有许多子目录,&grep&会以如下形式列出:&grep:sound:Is a directory&这会使&grep&的输出难于。但有两种解决的方法:
①明确要求搜索子目录:grep &r(正如上例中所示);
②忽略子目录:grep -d skip。
当预料到有许多输出,可以通过管道将其转到&less&(分页器)上阅读:
如grep &h& ./-r | less分页阅读。
grep特殊用法:
grep pattern1|pattern2 files:显示匹配pattern1或pattern2的行;
grep pattern1 files|grep pattern2:显示既匹配pattern1又匹配pattern2的行;
正则表达式
在文件命令中经常会使用pattern正则表达式,它是可以描述一类字符串的模式(Pattern),如果一个字符串可以用某个正则表达式来描述,就称这个字符和该正则表达式匹配。这和DOS中用户可以使用通配符&*&代表任意字符类似。
在Linux上,正则表达式通常被用来查找文本的模式,以及对文本执行&搜索-替换&操作等。正则表达式的主要参数有:
&\:忽略正则表达式中特殊字符的原有含义;
&^:匹配正则表达式的开始行;
&$:匹配正则表达式的结束行;
&&:从匹配正则表达式的行开始;
&&:到匹配正则表达式的行结束;
&[ ]:单个字符,如[A]即A符合要求;
&[-]:范围,如[A-Z],即A、B、C一直到Z都符合要求;
&。:所有的单个字符;
&*:所有字符,长度可以为0。
11. 系统的压缩和解压缩,打包和解包命令
11.1 gziphello.c 将文件hello.c压缩为hello.gz,删除源文件hello.c
gzip-c hello.c将hellow.c压缩为hello.gz,不删除源文件(显示压缩信息)
(我的Linux版本可能有问题,-c选项指令始终无法生效
还显示一堆乱码)
gzip-v hello.c 显示压缩前后的文件名和压缩比(-l是文件大小,区分)
gzip -t hello.c 验证压缩文件的完整性。如果文件完整则不显示任何信息
gzip -fhello.c 压缩/解压缩时强制覆盖已存在的文件
gzip -r test递归压缩/解压缩test文件夹中的所有文件(如果文件夹里面还有文件夹,也要把最底层文件夹里面的问价压缩)
gzip-d hello.gz 解压缩文件hello.gz
= gunziphello.gz
gzip -l hello.gz 对已压缩文件,仅显示压缩前后文件大小,以及压缩比,压
缩前文件名,不解压(我的Linux版本依然无法生效)
11.2 gunziphello.gz 解压缩文件
gunzip -lhello.gz 仅显示压缩前后文件大小,以及压缩比,不解压
gunzip -chello.gz 仅显示压缩文件内容,不解压
=zcathello.gz
11.3 zcat hello.gz仅显示压缩文件的内容,不解压
综合上面所述,总结为:
压缩文件用:gzip -cv xxx -r用于文件夹所有文件 -f用于覆盖源文件
解压文件用:gunzip -dtlvxxx.gz -l用于查看文件大小及压缩比
-v用于查看文件名以及压缩比
-c用于查看内容
查看:zcat hello.gz
注意:gzip gunzip zcat都只能压缩单个文件,加-r也还是对单个单个文件
-c :建立一个压缩档案的参数指令(create 的意思);
-r :向打包文件中追加文件
-x :解开一个压缩档案的参数指令!
-f :对普通文件操作,使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数
并且文档名是自己取的。(常用)
-t :查看 tarfile 里面的档案!
-v : 处理过程中输出相关信息
-o : 打印文件到标准输出
-z :调用gzip来压缩打包文件,与-x连用调用gzip完成解压缩
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
打包文件:
tar -cvfxxx.tar ./ 将当前文件夹内的文件全部打包
查看包内容:
tar -tf xxx.tar列出xxx.tar包中的所有内容
tar -xvfxxx.tar 从xxx.tar中解包所有文件,覆盖已有同名文件
打包并且压缩文件:
tar -cvzf xxx.tar.gz ./ 将当前文件夹内的文件全部打包成xxx.tar,再将其压缩
解压,并解包
tar -xvzfxxx.tar.gz 将xxx.tar.gz内容解压为xxx.tar,再将其解包到当前文件夹
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Linux基础(48)
grep是Linux命令行下常用于查找、过滤文本文件内容的命令。
grep [OPTIONS] PATTERN [FILE...]
find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组等。
grep命令是根据文件的内容进行查找,会对文件的每一行按照给定的模式(pattern)进行匹配查找。
-a 在二进制文件中,以文本文件的方式搜索数据
-v 显示不包含匹配文本的所有行
-i:不区分大小写
-o :只输出文件中匹配到的部分
-E:将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
-c:计算找到匹配文本的次数
-n:找到匹配文本后,顺便输出匹配文本所在行号
–color=auto:给匹配到的字符串加颜色,注意不是整行。
[root@muban data]
[root@muban data]
[root@muban data]
[root@muban data]
-E 可以同时过滤多个匹配文本
[root@muban data]
[root@muban data]
-n 与–color=auto
[root@ianLinux data]# alias grep='grep
[root@ianLinux data]# grep -n "3306" /etc/services
416,417都是行号
grep "string" -B 10 greptest.txt
-B:除了显示匹配的一行之外,并显示改行之前的num行
-A:除了匹配的一行之外,并显示该行之后的num行
-C:除了显示匹配的一行之外,并显示该行前面各num行
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22097次
积分:2342
积分:2342
排名:第11632名
原创:217篇
(22)(43)(2)(2)(14)(17)(38)(58)(9)(12)(2)(2)面试题(26)
man 对你熟悉或不熟悉的命令提供帮助解释
eg:man ls 就可以查看ls相关的用法
注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。
2. ls 查看目录或者文件的属*,列举出任一目录下面的文件
eg: ls /usr/man
a.d表示目录(directory),如果是一个”-”表示是文件,如果是l则表示是一个连接文件(link)
b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。
3. cp 拷贝文件
eg: cp filename1 filename2 //把filename1拷贝成filename2
cp 1.c netseek/2.c //将1.c拷到netseek目录下命名为2.c
4. rm 删除文件和目录
eg: rm 1.c //将1.c这个文件删除
5. mv 移走目录或者改文件名
eg: mv filename1 filename2 //将filename1 改名为filename2
mv qib.tgz ../qib.tgz //移到上一级目录
6. cd 改变当前目录 pwd 查看当前所在目录完整路径
eg: pwd //查看当前所在目录路径
cd netseek //进入netseek这个目录
cd //退出当前目录
7. cat,more命令
将某个文件的内容显示出来。两个命令所不同的是:cat把文件内容一直打印出来,而 more则分屏显示
cat&1.c //就可以把代码粘帖到1.c文件里,按ctrl+d 保存代码。
cat 1.c 或more 1.c //都可以查看里面的内容。
gcc -o 1 1.c //将1.c编译成.exe文件,我们可以用此命编译出代码。
8.chmod 命令 权限修改 用法:chmod 一位8进制数 filename。
eg: chmod u+x filenmame //只想给自己运行,别人只能读
//u表示文件主人, g 表示文件文件所在组。 o 表示其他人 ;r 表可读,w 表可写,x 表可以运行
chmod g+x filename //同组的人来执行
9. clear,date命令
clear:清屏,相当与DOS下的date:显示当前时间。
10. mount 加载一个硬件设备
用法:mount [参数] 要加载的设备 载入点
eg: mount /dev/cdrom
cd /mnt/cdrom //进入光盘目录
11. su 在不退出登陆的情况下,切换到另外一个人的身份
用法: su -l 用户名(如果用户名缺省,则切换到root状态)
eg:su -l netseek (切换到netseek这个用户,将提示输入密码)
12.whoami,whereis,which,id
//whoami:确认自己身份
//whereis:查询命令所在目录以及帮助文档所在目录
//which:查询该命令所在目录(类似whereis)
//id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用户只能有一个唯一的UID和 GID)
eg: whoami //显示你自已登陆的用户名
whereis bin 显示bin所在的目录,将显示为:/usr/local/bin
13. grep,find
grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索
eg: grep success *    /*查找当前目录下面所有文件里面含有success字符的文件
14. kill 可以杀死某个正在进行或者已经是dest状态的进程
15. passwd 可以设置口令
16. history 用户用过的命令
eg: history //可以显示用户过去使用的命令
17. !! 执行最近一次的命令
18. mkdir命令
eg: mkdir netseek //创建netseek这个目录
19. tar 解压命令
eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个目录里
20. finger 可以让使用者查询一些其他使用者的资料
eg: finger //查看所用用户的使用资料
finger root //查看root的资料
linux下一些主要目录的功用
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录(呵呵,特权阶级)
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放X window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
二 、linux文件系统
文件系统指文件存在的物理空间,linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。
linux文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。
索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。
linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。
对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
可以用ln命令对一个已经存在的文件再建立一个新的连接,而不复制文件的内容。
连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点是:
硬连接:原文件名和连接文件名都指向相同的物理地址。
目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)
文件在磁盘中只有一个拷贝,节省硬盘空间;
由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。
符号连接:用ln -s命令建立文件的符号连接
符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。
可以删除原有的文件而保存连接文件,没有防止误删除功能。
这一段的的内容过于抽象,又是节点又是数组的,我已经尽量通俗再通俗了,又不好加例子作演示。大家如果还是云里雾里的话,我也没有什么办法了,只有先记住,日后在实际应用中慢慢体会、理解了。这也是我学习的一个方法吧。
三 、挂载文件系统
由上一节知道,linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的挂载。
将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。
举个例子吧:
┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
bin home dev etc lib sbin tmp usr var
┏━┻━┓
rc.d cron.d
┏━━━┳━━━┳━┻━┳━━━━┓
┃ ┃ ┃ ┃ ┃
init.d rc0.d rc1.d rc2.d ……
/usr分区 :
┏━━━━┳━━━╋━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃
X11R6 src lib local man bin
┃ ┏━━━╋━━━┓
┃ ┃ ┃ ┃
linux bin lib src
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:489192次
积分:9907
积分:9907
排名:第1176名
原创:475篇
转载:324篇
评论:23条
(1)(16)(3)(42)(24)(37)(51)(54)(82)(92)(142)(96)(110)(16)(6)(27)}

我要回帖

更多关于 xargs 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信