Linux系统编程1(基本命令学习)

Linux系统编程1(基本命令学习)

1 Bash解析器常用快捷键(熟练)

1.1 Tab键

  1. 补齐命令
  2. 补齐路径
  3. 显示当前目录下的所有目录

1.2 清屏

clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + L ( “L” 为字母 )。

[wiggins@localhost ~]$ clear

1.3中断进程

ctlr+c的作用是中断终端的操作。

[wiggins@localhost ~]$ sleep 3000

1.4 遍历输入的历史命令

  1. 从当前位置向上遍历:ctrl + p (↑)
  2. 从当前位置向下遍历: ctrl + n(↓)

1.5 光标相关操作

  1. 光标左移: ctrl + b (←)
  2. 坐标右移: ctrl + f (→)
  3. 移动到头部: ctrl + a(Home)
  4. 移动到尾部:ctlr + e(End)

1.6 字符删除

  1. 删除光标前边的字符:ctrl + h(Backspace)
  2. 删除光标后边的字符:ctrl +d
  3. 光标后边的字符即光标覆盖的字符删除光标前所有内容:ctrl + u
  4. 删除光标后所有内容:ctrl + k

2. 内建命令和外部命令(掌握)

2.1 什么是内建命令

shel内建命令是指bash(或其它版本)工具中集成的命令。一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他们行为大体相仿。当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。

2.2 外部命令

外部命令是安装外部软件所带的命令

2.3 内建命令和外部命令对比

内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出(产生出)一个子进程,而内建命令一般不用。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin…等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等。

2.4 命令类型查看方法

使用type命令查看:

格式:

type [-afptP] 名称 [名称 ...]​ 显示命令类型的信息。

type [-afptP] 名称 [名称 ...]​ 显示命令类型的信息

3. Linux命令格式(掌握)

command  [ -options] [parameter1]

说明:

command:命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选
parameter1 …:传给命令的参数,可以是零个一个或多个
linux命令格式

4. 帮助文档查看方法

4.1 man(有问题找男人)

man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。

该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览不同的内容。

man 中各个 section 意义如下:

[wiggins@localhost ~]$ man man
1).Standard commands(标准命令)2).System calls(系统调用,如open,write)3).Library functions(库函数,如printf,fopen)4).Special devices(设备文件的说明,/dev下各种设备)5).File formats(文件格式,如passwd)6).Games and toys(游戏和娱乐)7).Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)8).Administrative Commands(管理员命令,如ifconfig)

man使用格式如下:

man [选项] 命令名

man设置了如下的功能键:

功能键功能
空格键显示手册页的下一屏
Enter键一次滚动手册页的一行
f键前滚一屏
b键回滚一屏
q键退出man命令
h键列出所有功能键
/word搜索word字符串

man的部分使用实例

命令查询(其中1,代表标准命令。具体见4.1的man 中各个 section 意义如下)

[wiggins@localhost ~]$ man 1 tar

命令查询查询结果

函数查询(3,代表库函数)

[wiggins@localhost ~]$ man 3 stat

函数查询
函数查询结果

vim编辑器
vim编辑器

4.2 内建命令(help)

格式:

help + 内建命令

应用示例:
help命令

4.3 外部命令(–help)

一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。

如我们想查看命令 ls 的用法(由于页面受限查询结果并没有全部展示):ls --help
--help命令

5. 绝对路径和相对路径

Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。

路径分为绝对路径相对路径

1)绝对路径

  1. 绝对路径是从目录树的树根“/”目录开始往下直至到
  2. 达文件所经过的所有节点目录。 下级目录接在上级目录后面用“/”隔开。
  3. 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
/home/testtest/var/ftp/pub

2)相对路径

  1. 相对路径是指目标目录相对于当前目录的位置。
  2. 如果不在当前目录下,则需要使用两个特殊目录“.”和“…”了。目录“.”指向当前目录,而目录“…”。

6. 目录相关的命令

6.1 pwd

格式:

pwd [-LP]​ 打印当前工作目录的名字。

使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。

[wiggins@localhost ~]$ pwd

/home/wiggins

6.2 cd
在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感。

cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。

命令含义
cd切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。
cd~切换到当前用户的主目录(/home/用户目录)
cd .切换到当前目录
cd …切换到上级目录
cd -可进入上一个进入的目录

命令使用实例:

cd 命令使用
6.3 mkdir

用法:mkdir [选项]… 目录…

通过mkdir命令可以创建一个新的目录(不能新建普通文件)。参数-p可递归创建目录。

需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。

使用实例:
mkdir使用

6.4 rmdir

用法:

rmdir [选项]… 目录… 删除指定的空目录

可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。

使用实例:

rmdir使用

7. 文件类型

Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。

在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。

文件类型分类

通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文件、链接文件和套接字。

linux文件分类
1)普通文件

普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。

在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。

2)目录文件

Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。

目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。

每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。

3)设备文件

Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。

字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。

deng@itcast:~/share$ echo “hello world” > /dev/pts/22 hello world

4)管道文件

管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。

5)链接文件

似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。

使用实例:

普通文件

[wiggins@localhost blog]$ ls -l /etc/passwd
-rw-r--r--. 1 root root 2313 823 05:48 /etc/passwd

目录文件

[wiggins@localhost blog]$ ls -ld /etc/
drwxr-xr-x. 145 root root 8192 825 14:13 /etc/

字符文件

[wiggins@localhost blog]$ ls -l /dev/input/mouse0
crw-rw----. 1 root input 13, 32 828 10:50 /dev/input/mouse0

块设备

[wiggins@localhost blog]$ ls -l /dev/sda1
brw-rw----. 1 root disk 8, 1 828 10:50 /dev/sda1

创建一个管道文件

[wiggins@localhost blog]$ ls -l fifo
prw-rw-r--. 1 wiggins wiggins 0 828 14:58 fifo

符号链接

[wiggins@localhost blog]$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 825 10:20 /bin/sh -> bash

套接字文件

[wiggins@localhost blog]$ ls -l /run/systemd/notify 
srwxrwxrwx. 1 root root 0 828 10:49 /run/systemd/notify

实例展示图
Linux文件类型展示

8. 文件相关命令

8.1 ls
ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。

Linux文件或者目录名称最长可以有256个字符,“.”代表当前目录,“…”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。

用法:ls [选项]… [文件]…

ls常用参数:

参数含义
-a显示指定目录下所有目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合-l以人性化的方式显示文件大小

使用实例:
ls命令使用
图中列出的详细信息含义解读如下图所示:
ls -l
与DOS下的文件操作类似,在Unix/Linux系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。

通配符含义
*文件代表文件中所有字符
ls te*查找te开头的文件
ls *html查找结尾为html的文件
代表文件名中任意一个字符
ls ?.c只找第一个字符任意,后缀为.c的文件
ls a.?只找只有3个字符,前2字符为a.,最后一个字符任意的文件
[][”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
[abc]匹配a、b、c中的任意一个
[a-f]匹配从a到f范围内的的任意一个字符
ls [a-f]*找到从a到f范围内的的任意一个字符开头的文件
ls a-f查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用
\如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。
ls *a查找文件名为*a的文件

8.2 touch

用法:

touch [选项]… 文件…

  1. 如果文件不存在, 创建新文件(只能是普通文件,不能是文件夹)
  2. 如果文件存在, 更新文件时间

使用示例:

touch file 创建file空文件,如果file存在则更新file的存取和修改时间 touch file{2,3,4} 同时创建file2,file3,file4三个空文件 touch “file{2,3,4}” 创建file{2,3,4}一个空文件

[wiggins@localhost blog]$ ls
001  bolg{..}  code.txt  fifo  test.tar
[wiggins@localhost blog]$ touch file{1..10}
[wiggins@localhost blog]$ ls
001       code.txt  file1   file2  file4  file6  file8  test.tar
bolg{..}  fifo      file10  file3  file5  file7  file9
[wiggins@localhost blog]$ rm file{1..10}
[wiggins@localhost blog]$ ls
001  bolg{..}  code.txt  fifo  test.tar
[wiggins@localhost blog]$ touch file{1,2,3}
[wiggins@localhost blog]$ ls
001  bolg{..}  code.txt  fifo  file1  file2  file3  test.tar

8.3 cp

cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令 。

常用选项说明:

选项含义
-a该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f删除已经存在的目标文件而不提示
-i交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v显示拷贝进度

8.4 rm

可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。

常用参数及含义如下表所示:

参数含义
-i以进行交互式方式执行
-f强制删除,忽略不存在的文件,无需提示
-r递归地删除目录下的内容,删除文件夹时必须加此参数

8.5 mv

用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。

常用选项说明:

选项含义
-f禁止交互式操作,如有覆盖也不会给出提示
-i确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v显示移动进度

9. 文件内容查看命令

9.1 cat

cat 将文件内容一次性输出到终端。

缺点:终端显示的内容有限,如果文件太长无法全部显示。

[wiggins@localhost blog]$ cat code.txt 
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
6666666666
6666666666

9.2 more(了解)

more命令将文件内容分页显示到终端,但是只能一直向下浏览,不能回退:

命令作用
回车显示下一行
空格显示下一页
q(ctrl + c)退出
h获取帮助

9.3 less
less命令将文件内容分页显示到终端,可以自由上下浏览

命令作用
回车(ctrl + n)显示下一行
ctrl + p显示上一行
空格(PageDown)显示下一页
PageUp显示上一页
q退出
h获取帮助

9.4 head

  1. head命令从文件头部开始查看前 n 行的内容。
  2. 如果没有指定行数,默认显示前10行内容。

命令格式:

head –n[行数] 文件名

9.5 tail

  1. 从文件尾部向上查看最后 n 行的内容
  2. 使用方式:

tail –n[行数] 文件名

  1. 如果没有指定行数,默认显示最后10行内容

10. du和df命令 (了解)

10.1 du

  1. du命令用于查看某个目录大小。
  2. du命令的使用格式如下:

du [选项] 目录或文件名

选项含义
-a递归显示指定目录中各文件和子目录中文件占用的数据块
-s显示指定文件或目录占用的数据块
-b以字节为单位显示磁盘占用情况
-h以K,M,G为单位,提高信息的可读性

10.2 df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。

选项含义
-a显示所有文件系统的磁盘使用情况
-m以1024字节为单位显示
-h以K,M,G为单位,提高信息的可读性

含义
-a 显示所有文件系统的磁盘使用情况
-m 以1024字节为单位显示
-h 以K,M,G为单位,提高信息的可读性

11. 查找相关命令(重点)

11.1 find
find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

按文件名查询:使用参数 -name

命令:

find + 路径 + -name +“文件名”

示例:

find /home -name “a.txt”

按文件大小查询:使用参数 -size

命令:

find + 路径 + -size + 范围

范围

Ø 大于:+表示 – +100k

Ø 小于:-表示 – -100k

Ø 等于: 不需要添加符号 – 100k

大小

Ø M 必须大写(10M)

Ø k 必须小写(20k)

例子: 查询目录为家目录

等于100k的文件: find ~/ -size 100k

大于100k的文件: find ~/ -size +100k

大于50k, 小于100k的文件: find ~/ -size +50k -size -100k

按文件类型查询:使用参数 -type

命令:

find + 路径 + -type + 类型

类型

Ø 普通文件类型用 f 表示而不是-

Ø d -> 目录

Ø l -> 符号链接

Ø b -> 块设备文件

Ø c -> 字符设备文件

Ø s -> socket文件,网络套接字

Ø p -> 管道

11.2 grep

Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式为:

grep [-选项] ‘搜索内容串’ 文件名

在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a ’1.txt。

选项含义
-v显示不包括匹配文本的所有行(相当于求反)
-n显示匹配行及行号
-i忽略大小写

命令:

grep -r + “查找的关键字” + 路径

搜索目录需要添加参数: -r

查找 /home/itcast 下包含“hello,world“字符串的文件

grep -r "hello,world" /home/itcast

12. 管道

管道(|):一个命令的输出可以通过管道做为另一个命令的输入。

管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。

cat /etc/passwd | less

13. 压缩包管理(重点)

13.1 tar

计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar使用格式

tar [选项] 打包文件名 文件

tar命令很特殊,其选项前面可以使用“-”,也可以不使用。

常用参数:

参数含义
-c生成档案文件,创建打包文件
-v列出归档解档的详细过程,显示进度
-f指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t列出档案中包含的文件
-x解开档案文件

注意:除了 f 需要放在参数的最后,其它参数的顺序任意。

tar -cvf 创建归档文件

tar -xvf 解除归档文件(还原)

tar -tvf 查看归档文件内容

13.2 gzip

l tar与gzip命令结合使用实现文件打包、压缩。

l tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

gzip使用格式如下:

gzip [选项] 被压缩文件

常用选项:

选项含义
-d解压
-r压缩所有子目录

tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。

压缩用法:

tar cvzf 压缩包包名 文件1 文件2 …

解压用法:

tar zxvf 压缩包包名

解压到指定目录:-C (大写字母“C”)

13.3 bzip2

  1. tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
  2. tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.bz2。
  3. 在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
  4. 压缩用法:tar jcvf
  5. 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)

解压用法:

tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)

13.4 zip和unzip
l 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。

l 压缩文件:

zip -r 目标文件(没有扩展名) 源文件

l 解压文件:

unzip -d 解压后目录文件 压缩文件

14. 文件权限管理

14.1 文件权限

文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。

Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。

在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

14.2 访问用户分类

通过设定权限可以从以下三种访问方式限制访问权限:

1)只允许用户自己访问(所有者)

所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。

2)允许一个预先指定的用户组中的用户访问(用户组)

用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。

3)允许系统中的任何用户访问(其他用户)

用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类

14.3 访问权限说明

用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:

  1. 读权限(r)

对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。

  1. 写权限(w)

对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

  1. 可执行权限(x)

对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。

14.4 chmod(掌握)

chmod 修改文件权限有两种使用格式:字母法与数字法。

字母法:

chmod u/g/o/a +/-/= rwx 文件

被修改对象解读

[u/g/o/a]含义
uuser 表示该文件的所有者
ggroup 表示与该文件的所有者属于同一组( group )者,即用户组
oother 表示其他以外的人
aall 表示这三者皆是

权限操作(增加或者撤销)

[±=]含义
+增加权限
-撤销权限
=设定权限

权限划分(rwx)

rwx含义
rread 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。
wwrite 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
xexcute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

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

r读取权限,数字代号为4
w写入权限,数字代号为 “2”
x执行权限,数字代号为 “1”
-不具任何权限,数字t代号为 “0”

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

如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。

14.5 chown(了解)

l chown用于修改文件所有者

l 使用方法:

chown 用户名 文件或目录名

15.6 chgrp (了解)

l chgrp用于修改文件所属组

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

15. 进程管理(后面再讲)

15.1 ps

进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。

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

选项及含义

  • -a 显示终端上的所有进程,包括其他用户的进程
  • -u 显示进程的详细状态
  • -x 显示没有控制终端的进程
  • -w 显示加宽,以便显示更多的信息
  • -r 只显示正在运行的进程

15.2 top

top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命令时加上-d 来指定显示信息更新的时间间隔。

在top命令执行后,可以按下按键得到对显示的结果进行排序:

按键及含义

  • M 根据内存使用量来排序
  • P 根据CPU占有率来排序
  • T 根据进程运行时间的长短来排序
  • U 可以根据后面输入的用户名来筛选进程
  • K 可以根据后面输入的PID来杀死进程。
  • q 退出
  • h 获得帮助

15.3 kill

kill命令指定进程号的进程,需要配合 ps 使用。

使用格式:

kill [-signal] pid

信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。

15.4 killall

通过进程名字杀死进程


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部