Linux 第四章-文件管理

Linux 第四章

1.Linux的哲学思想

1.1.一切皆为文件

​ 在Linux系统中,不仅仅是数据以文件的形势存在,而是Linux把所有的资源,包括硬件设备都组织成了文件。比如硬盘以及硬盘中的每一个分区在Linux系统中都被视为文件。

vim /etc/ssh/sshd_config     		# ssh配置文件
ls /dev/sda							# 硬盘所在文件夹

1.2.整个系统由众多小程序组成

​ 在Linux系统中很少有向Windows系统中动辄上GB的大型程序,整个Linux由众多单一功能的小程序组成,每个 小程序只负责实现一项具体的功能。我们之后学习的各种Linux命令几乎都是对应着一个小程序。如果要想完成一项复杂的任务,只需要将这些命令组合起来即可。

which ls 						   # 查询ls程序所在位置

1.3.尽量避免与用户交互

​ Linux系统主要是操作服务器的系统,其操作方式与Windows系统有很大的区别。由于服务器管理员不能全天候的守在服务器旁,而且一个管理员往往需要管理成百上千台服务器,因为在服务器上操作最好是编写脚本来完成,从而使其自动化的完成其功能。

passwd	ztr							# 更改用户ztr的密码
echo '123' | passwd --stdin ztr		# 更改用户ztr的密码--没有直接和用户进行交互

1.4.使用纯文本文件保存配置信息

​ 无论Linux系统本身还是系统中的应用程序,它们的配置信息往往都是保存在一个纯文本的配置文件中。如果需要改动或者配置程序中的某项功能,只需要编辑相应的配置文件即可。

2.文件和目录的相关概念

​ **在Linux系统中,一切皆为文件。**如果要储存和管理这些文件,则需要借助这些文件所在的目录。

​ 比如文件相当于个人,那么目录则相当于省市区这些行政区划,比如:”中国/四川省/成都市/龙泉驿区/四川城市职业学院/邹堂瑞“就很明确的指出了个人。与此类似,”/etc/httpd/conf/httpd.conf“则指向了一个具体的文件。

​ 对于文件和目录的管理是Linux系统运行维护的基本工作。

2.1.Linux的目录结构

​ 在Windows中,为每个磁盘分区分配一个盘符,在资源管理器中通过盘符就可以访问对应的分区。每个分区使用对立的 文件系统,在每个分区中都会有一个根目录,比如:C:\ 、 D:\等。

​ Linux系统则不同,由于Linux发行版本众多,为了同一规范,绝大多数的Linux发行版都遵循FHS(Filesystem Hirerarchy Stardard)文件系统层次化标准,采用同一的目录结构。按照FHS标准,整个Linux的文件系统是一个倒置的树形结构,整个系统中只存在一个根目录,所有的目录和文件都在一个根目录下

​ 在Linux系统中定位文件或目录的位置时,则用"/"进行分隔,在整个树形结构中使用“/”表示根目录,所以根目录是所有文件的起点。在根目录下按不同的特点划分了众多子目录。因此,**Linux系统的目录结构是固定的,跟磁盘分区没有任何关系。**按典型FHS目录结构划分如下:

在这里插入图片描述

​ Linux系统的目录结构由系统自动创建,每个目录都有其固定的用途。常见目录释义如下:

  • /boot:存放Linux系统启动所必须的文件,Kernel便存放在这个目录里,出于系统安全的考虑,/boot目录通常被划分为独立的分区。
  • /etc:存放系统和各程序的配置文件。Linux很多操作和配置都是通过修改配置文件来实现的。/etc目录类似于Windows的注册表regedit。
  • /dev:存放Linux系统的硬盘、光驱、鼠标等硬件设备。
  • /bin:存放Linux常见的基本命令,任何用户都可以执行。
  • /sbin:存放Linux基本的管理命令,只有管理员权限才能执行。
  • /usr:软件的默认安装位置,类似于Windows的Program Files目录。
  • /home:普通用户家目录(主目录)。类如普通账户"ztr"对应的家目录就是"/home/ztr"。
  • /root:超级用户root的家目录。
  • /mnt:一般是空的,用来临时挂载储存设备。
  • /media:用户系统自动挂载可移动存储设备。
  • /tmp:临时目录。用于存放系统或程序运行时产生的临时文件,可供所有用户写入操作。
  • /var:存放系统运行过程中经常变化的文件,如/var/log用于存放日志文件,/var/spool/mail用于存放邮件等。
  • /lib、/lib64:存放各种链接库文件。
  • /proc:用于存放进程文件。
  • /run:用于存放一些进程产生的临时文件,系统重启后会消失。
  • /lost:存放系统因意外崩溃或关机时产生的碎片。

2.2.根目录和家目录

​ 根目录只"/“下的目录,而家目录有两个:一个是超级管理员root的家目录”/root",其他普通的用户的家目录位于/home下,我们可以通过命令添加用户,添加的用户也存放于"/home"目录下。

useradd  用户						#	添加用户-添加到/home目录下

2.3.绝对路径和相对路径

​ Linux系统中当我们要执行进入的是一个完整的路径的时候,那这个完整的路径就是绝对路径,如"cd /home/ztr"。当直接执行查找的文件,这个文件的目录就是相对目录,如"cd ztr",进入相对目录的前提是你必须要在此目录的父目录才可以执行。

cd 目录名							# 切换进入到一个目录
ls 目录名							# 查看目录下的目录或文件
cd ..							  # 返回上一级目录
history							  # 查询历史执行命令
pwd								  # 查看当前所在位置
cat 文件名							# 查看文件
cd -							  # 回到上一个进入过的目录

2.4.文件和目录的操作命令

2.4.1.ls命令–查看目录内容
ls									# 查看目录显示内容,查看文件显示目录
ls -l /etc/passwd					# 查看文件的详细信息==Windows属性
-rw-r--r--. 1 root root 2301 1029 13:33 /etc/passwd
ls -l /etc
释义:
第一组:文件的类别和权限。其中第一个字符代表文件的类别。"-"代表普通文件,"d"代表目录,"l"代表符号链接
		"c"代表字符设别,"b"代表设备。其余6个字符代表文件的权限。c=character字符,b=block块,l=link
第二组:被硬链接的次数,文件为1,目录为2。
第三组:文件所有者。
第四组:文件所属组
第五组:文件的大小,单位为字节B-文件本身的大小,不包含下级子目录
第六组:文件被创建或最近一次修改时间
第七组:文件所属路径
ls -a 								# 显示所有文件,包含隐藏文件
"."									# 表示当前目录
".."								# 表示当前目录的上一级目录--父目录

在这里插入图片描述

ls -d 								# 显示文件本身的属性--非其文件内部列表
ls -d -l /dev
drwxr-xr-x. 20 root root 3300 1029 10:43 /dev
上述命令可以简写成"ls -ld /dev"
ls -h								# 人性化显示容量信息,以K,M,G为单位表示文件大小,h=human
2.4.2.touch命令–创建空文件
touch [参数] 文件							
touch	a									# 创建a文件--文件名不限
touch命令不能创建目录
2.4.3.mkdir命令–创建目录
mkdir [参数] 目录名
mkdir test1									# 创建test1目录
mkdir a b c									# 同时创建abc3个目录
mkdir -p x/y/z								# 创建一个多级目录
2.4.4.rmdir命令–删除空目录
rmdir  [参数]  目录名
rmdir test1									# 删除test1目录
rmdir -p x/y/z								# 删除多级目录
2.4.5.rm命令–删除文件或目录
rm	[参数]  文件或目录
rm  a										# 删除a文件
rm	b										# 删除b文件
rm  -f  c									# 强制删除文件-不提示
rm  -r  c									# 删除c目录
rm  -rf b									# 强制删除b文件-不提示
-rf选项请谨慎使用
2.4.6.cp命令–复制文件或目录
cp  [选项]  原文件或目录  目标文件或目录
cp  /etc/fstab   /tmp/hi.txt				# 将/etc/fstab文件复制到/tmp并改名为hi.txt
cp -r 										# 复制目录的操作
cp -p										# 复制时保留源文件的属性不变
操作:
mkdir /tmp/test								# 创建目录/tmp/test
cp /etc/issue /tmp/test						# 将文件/etc/issue复制到/tmp/test中
ls /tmp/test								# 查看复制后新生成的文件
---------------------
cp -r /home /tmp/test/						# 复制目录的操作,将/home复制到/tmp/test/
---------------------
ls -ld /home/teacher/			
drwx------. 3 teacher teacher 78 1029 13:33 /home/teacher/
cp -r /home/teacher/ /tmp/test
ls -ld /tmp/test
drwxr-xr-x. 4 root root 46 1029 20:43 /tmp/test
rm -rf /tmp/test/teacher
cp -rp /home/teacher/ /tmp/test
ls -ld /tmp/test/teacher
drwx------. 3 teacher teacher 78 1029 13:33 /home/teacher/

在执行cp命令时,为了区分文件和目录,建议最好在目录后面加上"/"

2.4.7.mv命令–移动文件或目录
mv [选项] 源文件或目录 目标文件或目录

​ 需要说明的是,如果第二个参数中的目标是一个目录,则mv命令会将源文件移动到该目录中。如果第二个参数中的目标是一个文件,则mv命令会将源文件进行重命名。

​ 如果mv移动的是一个目录,并不会和"cp"命令一样加上"-r",而是直接移动。

例如:将/root/test目录中的文件test1.txt改名为test2.txt
touch /root/test/test1.txt
mv /root/test/test1.txt /root/test/test2.txt
------------------
例如:将/root/test/test2.txt移动到/tmp目录中
mv /root/test/test2.txt /tmp/
2.4.8.文件和目录操作的小技巧
  • 用Tab键将命令或路径自动补全。如果连续按两次Tab可以列出所有的以指定字符开头的命令或路径。
system							# 连续按两次Tab键,列出所有的在/root目录下的system开头的文件
  • 用符号“!$”或者组合键"Esc."(先按Esc,再加上.)来调用上一条命令所使用的路径,从而简化操作。
ls /etc/sysconfig/network-scripts/
cd !$							# 调用上一条命令的路径
  • 用"history"查看历史执行命令,用"!+命令编号"再次执行指定编号的命令。
history							# 查询历史执行命令
!120							# 执行历史中第113条命令
  • 通配符:通用的匹配信息符号。
    • 通配符"*"可以匹配任意数量的任意字符。
    • 通配符"?"可以在相应位置匹配任意单个字符。
    • 通配符"[]"可以匹配指定范围内任意的单个字符。
ls -d /etc/pa*				# 显示所有的pa开头的目录和文件
ls -d /etc/*conf*			# 显示etc下所有含有conf的文件或目录
------------------
ls -ld /dev/sd?				# 以长格式列出所有以sd开头的3个字符的文件信息
------------------
ls  /dev/[df]??				# 列出dev目录下以d或者f开头并且文件名为3个字符的文件
ls /dev/[a-c]*				# 列出dev目录下以a,b,c开头的所有文件
ls /dev/[!fhi]*				# 列出dev目录下不是以f,h,i开头的所有文件

“*”可以匹配的字符数量没有限制,可以0个,1个或多个,而"?“和”[]"可以匹配的字符数量只能一个

  • {}扩展,{}中可以包含一个以逗号分隔的列表。并将其展开多个路径或文件名。
mkdir  /tmp/{a,b,c}			# 一次性创建/tmp/a,/tmp/b,/tmp/c三个目录
touch  /tmp/{a,b,c}.txt		# 一次性创建/tmp/a.txt,/tmp/b.txt/tmp/c.txt三个文件

2.5.对文件内容的操作命令

​ Linux中的大多数文件都是文本文件,系统中提供了多个文件内容查看命令,以满足用户不同情形下查看文本内容的需求。另外,通过grep命令还可以在某个文本文件中找到需要的某一部分。

2.5.1.cat命令-显示文本文件内容

​ cat(Concatenate)命令是用来查看文本文件内容的。使用该命令时,只需要指定文件名作为参数即可。

语法:

cat [文本文件]

​ **例如:**查看/etc/redhat-release文件中的内容,获知系统的版本号。

cat /etc/redhat-release						# 和uname -a命令相近
// CentOS Linux release 7.9.2009 (Core)

cat常用的命令选项:

  • -n:显示行号,包括空白行
例如:查看/etc/passwd中的内容,了解Linux中的用户信息
2.5.2.more和less命令-查看多行文本分屏显示

​ 我们在执行cat命令查看文件时,往往会遇到几百上前行的文件,这是我们再去具体找哪一行就有一定的局限性,比如:

cat -n /etc/ssh/sshd_config		

在这里插入图片描述

​ 为了更好的解决行数比较多的文本文档查看问题,我们可以使用more命令进行分屏展示,当使用more命令查看的文本文件,我们可以分为几个部分查看,每个部分按空格键或者回车就可完成切换查看。

more /etc/ssh/sshd_config		
// 空格键为换屏查看,enter键为换行查看

​ 我们在使用more命令来查看文本文件时,只能向下进行查看,如果跳过了想查看的内容,就得退出重新执行一遍,所以非常麻烦。为了解决这个问题,我们使用less命令来查看文件,它具备more命令的空格键和enter键查看的功能,同时还能用上下键移动光标查看对应的内容。但是它不会自动的退出文本内容,而是需要手动执行q命令退出。

less /etc/ssh/sshd_config
2.5.3.head和tail命令-查看文件开头或末尾的部分内容

​ head和tail命令用于显示文件的局部内容。默认条件下,head显示前10行内容,tail显示后10行内容。

​ **例如:**查看/etc/passwd文件的前10行和后10行内容:

head /etc/passwd
tail /etc/passwd

命令选项:

  • -n 数字:展示指定数字的几行内容

    **例如:**查看/etc/passwd文件前3行的内容:

    head -n 3 /etc/passwd
    也可以写成:head -3 /etc/passwd
    
  • -f:实时显示文件内容的增量

    ​ 在生产环境下,tail命令更多的是查看日志文件,以便观察访问数据,服务器信息等。配合“-f”选择跟踪日志文件末尾的变化,实时显示更新内容。

    ​ **例如:**查看系统公共日志文件/var/log/messages的最后10行,并在末尾跟踪显示该文件中的实时更新内容(Ctrl+C键终止):

    tail -f /var/log/messages
    

    为了更方便大家的理解,我们可以在MobaXterm中打开两个连接的窗口,执行如下命令查看具体变化:

    # 1.在窗口1中
    echo 'Hello' > test.txt				# 向test.txt文档中执行增加内容Hello
    # 2.在窗口2中
    tail -f test.txt					# 查看test.txt
    # 3.在窗口1中
    echo 'World' >> test.txt			# 再次向test.txt中增加内容
    # 4.在窗口2中
    tail -f test.txt					# 再次查看test.txt中的变化
    
2.5.4.wc命令-文件内容统计

​ wc(word count)命令是用来统计指定文件中的行数,单词数,字节数的。

wc /etc/resolv.conf
#  3  8 73 /etc/resolv.conf  --3行,8个单词,73个字节

wc命令的常用选项:

  • -l:统计行数;-w:统计单词数;-c:统计字节数。

    wc -l /etc/resolv.conf
    wc -w /etc/resolv.conf
    wc -c /etc/resolv.conf
    
2.5.5.echo命令-输出指定内容

​ echo命令常用来输出指定的字符串或者变量的值。

​ **例如:**在屏幕上输出Hello World:

echo "Hello World"
# 我们常配合>,>>重定向符号使用
echo "Hello World" > a.txt	# 先写进a.txt
cat a.txt					# 再查看内容

​ **例如:**新建一个变量day,赋值为Monday,再输出变量day的内容

day=Monday
echo $day
# 通常在变量前面加上**$符号**,可以引用一个变量的内容 。
a=500
b=100
echo $[$a+$b]				# 600
# 输出环境变量SHELL
echo $SHELL
echo $LANG

在这里插入图片描述

2.5.6.grep命令-文件内容查找

​ **grep命令用于在文本文件中查找并显示包含指定字符串的所在行。**通过该命令。我们可以从杂乱的信息中找到所需要的部分。

语法:

grep [选项] 查找条件 目标文件		

**例如:**在/etc/passwd中查找包含“root”字符串的行,grep会将匹配到的字符串标记为红色。

grep 'root' /etc/passwd
# root:x:0:0:root:/root:/bin/bash
# operator:x:11:0:operator:/root:/sbin/nologin

**注意:**grep命令不支持"*“和”?“这些普通意义的通配符,而是通过正则表达式来设置所要查找的条件。正则表达式定义了很多不同意义的符号,如符号”^“表示以什么字符开头,符号” " 表 示 以 什 么 字 符 结 尾 。 如 " w o r d " 表 示 以 w o r d 开 头 , " w o r d "表示以什么字符结尾。如"^word"表示以word开头,"word ""word"word"word"表示以word结尾。

​ 需要说明的是,如果grep所使用的查找关键字中不包含正则表达式或是空格等特殊符号,那么关键字是否加引号都无所谓,如果关键字出现了这些符号,建议给这些关键字加上引号。

**例如:**在/etc/password查找以“root”开头的行:

grep "^root" /etc/passwd
# root:x:0:0:root:/root:/bin/bash

grep命令的常用选项:

  • -n:输出符合查找条件的行及其行号:
grep -n 'root' /etc/passwd
# 1:root:x:0:0:root:/root:/bin/bash
# 10:operator:x:11:0:operator:/root:/sbin/nologin
  • -v:反转查找,输出与查找条件不符合的行:
grep -v "^#" /etc/passwd				# 查找所有不是以#开头的行
-----------------
grep -v "^$" /etc/ssh/sshd/sshd_config	# 查找不是空白行的内容
  • **-i:不区分大小写:**i=ignore

    grep -i 'a' test.txt				# 在文件中查找不区分大写小写有a的行
    
  • -w:精确匹配单词:

echo "The num is 10" > test2.txt		# 写内容进test2.txt
cat test2.txt
echo "The number is 10" >> test2.txt	# 追加
grep -w 'num' test2.txt
  • -r:递归查找:

通过-r选项可以指定目录及其子目录中查找指定的关键字,有时我们想找一些字符串,但又不知道它在哪个文件中,就可以通过这个选项来实现。

grep -nr "DNS" /ect/ssh					# 找出包含DNS的所有文件及行号
# /etc/ssh/ssh_config:30:#   GSSAPITrustDNS no
# /etc/ssh/sshd_config:115:#UseDNS yes
grep -r 'dhcp' /etc/sysconfig/network-scripts/
2.5.7.diff命令-文件内容对比

​ diff命令用于对比多个文件之间的差异,这是系统安全防范中非常重要的。比如黑客入侵系统后,往往会修改一些配置,从而留下一些后门。所谓系统运维人员最好将重要文件备份,然后定期执行diff命令进行对比,从而发现是否被改动过。

cp .bashrc .bashrc.bak					# 备份
ls -a									# 查看包括隐藏文件的所有文件
echo "cd/tmp" >> .bashrc				# 写内容进去
diff .bashrc .bashrc.bak				# 对比
# 13d12
# < cd/tmp

​ 显示的结果中"a",“d”,"c"分别表示添加、删除、修改的操作。其中以”<“开始的行属于文件1,以”>“开始的行属于文件2。

tc/ssh/ssh_config:30:# GSSAPITrustDNS no

/etc/ssh/sshd_config:115:#UseDNS yes

grep -r ‘dhcp’ /etc/sysconfig/network-scripts/




#### 2.5.7.diff命令-文件内容对比

​		diff命令用于对比多个文件之间的差异,这是系统安全防范中非常重要的。比如黑客入侵系统后,往往会修改一些配置,从而留下一些后门。所谓系统运维人员最好将重要文件备份,然后定期执行diff命令进行对比,从而发现是否被改动过。

cp .bashrc .bashrc.bak # 备份
ls -a # 查看包括隐藏文件的所有文件
echo “cd/tmp” >> .bashrc # 写内容进去
diff .bashrc .bashrc.bak # 对比

13d12

< cd/tmp


​		显示的结果中"a","d","c"分别表示添加、删除、修改的操作。其中以”<“开始的行属于文件1,以”>“开始的行属于文件2。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux+, 第七章: Linux 文件系统》是《Linux+认证教程》中的第七章,重点介绍了Linux操作系统中的文件系统。在这一章中,读者将了解到Linux文件系统的基本概念、常用的文件系统类型以及文件系统的管理和维护等内容。 首先,本章开始介绍了Linux文件系统的基本概念,包括文件和目录的概念以及在Linux中的表示方式。读者将学习到如何使用文件路径和文件名来访问文件和目录。同时,还介绍了Linux系统中的特殊目录,如根目录、用户主目录和共享目录等。 接着,本章继续讲解了常见的文件系统类型。Linux支持多种文件系统类型,如EXT4、XFS、Btrfs等。读者将了解到每种文件系统类型的特点和适用场景,并学习如何在Linux中创建和格式化不同类型的文件系统。 然后,本章讲解了文件系统的管理和维护。读者将学习如何使用命令行工具来管理和操作文件系统,如创建、删除、复制和移动文件等。同时,还介绍了文件系统的权限和属性配置,如设置文件的拥有者和权限等。 最后,本章还涉及了文件系统的备份和恢复。读者将学习如何使用备份工具来对文件系统进行备份,以及如何从备份中恢复数据。 通过学习本章内容,读者将深入了解Linux文件系统的原理和操作方法。这对于Linux系统管理员和开发人员来说非常重要,因为文件系统是Linux操作系统中最基础和核心的部分之一。掌握了文件系统的知识,读者将能够更好地管理和维护Linux系统,并解决文件系统相关的问题。 ### 回答2: 《Linux头歌》是一本关于Linux操作系统的技术书籍,第七章主要讲述了Linux文件系统的管理和操作。本章主要涵盖了以下几个方面的内容。 首先,本章介绍了Linux文件系统的基本概念和特点。Linux文件系统采用了类似于树状结构的层次目录结构,以根目录"/"为起点,通过不同的目录和文件来组织和管理数据。同时,Linux文件系统还具有对文件和目录进行权限管理的功能,确保安全性。 接着,本章详细介绍了如何在Linux系统中创建、删除、复制和移动文件和目录。通过命令行工具或图形界面工具,用户可以轻松地对文件和目录进行操作,满足不同的需求。此外,还介绍了文件和目录的属性和权限设置,确保文件的安全性。 然后,本章讲解了Linux文件系统中的硬链接和软链接的概念和用法。硬链接是指多个文件指向同一个物理存储空间,而软链接是指一个文件指向另一个文件,类似于快捷方式。用户可以根据需要使用不同的链接方式,帮助管理和组织文件。 最后,本章还介绍了Linux文件系统的挂载和卸载操作。在Linux系统中,用户可以通过挂载操作将外部设备或远程文件系统与本地文件系统连接起来,以便访问和操作外部文件。同时,也可以通过卸载操作安全地断开与外部文件系统的连接。 总之,第七章《Linux头歌》详细介绍了Linux文件系统的管理和操作技巧,帮助读者更好地理解和掌握Linux操作系统的文件系统特性和使用方法。无论是初学者还是有一定经验的用户,都可以从中获得实用的知识和技能,提高对Linux系统的操作能力。 ### 回答3: 《Linux内核设计与实现》是一本经典的Linux内核相关书籍,其中第七章主要介绍了Linux内核的关键组成部分——系统调用及库函数。系统调用是操作系统内核提供给用户程序的一组接口,它们允许用户程序通过内核来访问底层系统资源和服务。这一章内容对于深入理解 Linux 内核的使用和开发具有重要意义。 首先,第七章详细介绍了系统调用的实现原理和机制。作者解析了系统调用表的结构和功能,并且详细说明了Linux内核是如何通过系统调用号来定位和调用相应的系统调用函数的。这些系统调用函数在内核空间中运行,并能够处理用户程序发起的请求,实现具体的功能。 其次,本章还介绍了用户空间和内核空间之间的切换机制。当用户程序发起系统调用的时候,会触发用户态和内核态之间的转换,在转换过程中,内核会根据系统调用号找到对应的系统调用函数,并执行相应的操作。这一章详细分析了切换过程的细节以及相关的数据结构。 此外,本章还对一些常用的系统调用进行了详细介绍,如文件操作相关的系统调用(如open、read、write等),进程管理相关的系统调用(如fork、execve、wait等),以及网络通信相关的系统调用(如socket、bind、connect等)。对于开发者来说,熟悉这些系统调用的使用方法和原理非常重要,能够帮助他们更好地设计和开发Linux内核的应用程序。 总之,第七章《Linux内核设计与实现》详细介绍了Linux内核的系统调用和库函数的实现原理和机制,以及常用系统调用的使用方法。通过学习这一章的内容,读者能够深入理解Linux内核的工作原理,对于使用和开发Linux内核应用程序具有指导意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值