linux - Documents and directories

系统命令:

1.pwd(print working directory):显示当前所在位置
PWD:当前逻辑路径的系统环境变量
pwd -L 与 echo $PWD功能一样,都是显示逻辑路径
PS1:控制系统bash命令行提示符
echo $PS1:显示当前用户的提示符的格式
PS1 = '[\u@\h \w]\$':在命令行输入该命令,临时修改提示符格式,永久生效需要修改配置文件/etc/bashrc的变量
2.cd(change directory):切换到指定的工作目录
-:切换到系统环境变量“OLDPWD”对应值的目录路径,即当前用户上一次所在路径
~:切换到当前用户家目录中
..:返回上一级目录
3.tree:以树形结构列出指定目录下的所有内容,包括所有文件、子目录以及子目录里的文件和目录。
-d:只显示目录
-L:level,遍历目录最大层数,level为大于0的正整数
-F:在执行文件、目录、Socket、符号链接、管道名称等不同类型文件的结尾加上特殊符号,类似ls命令的-F选项
如果系统中没有需要进行安装
    rpm -qa tree :查看是否安装
    yum -y install tree:安装tree命令
    如果出现乱码问题时,修改字符集LANG=en_US.UTF-8
4.mkdir(make directories):创建目录,默认情况下,目录存在则进行提示,不进行创建
-p:递归创建目录;创建目录已经存在也不会报错提示
5.touch:创建新的空文件;改变已有文件的时间戳属性(选项不是很重要)
-a:只更改指定文件的最后访问时间
-d STRING:使用字符串STRING代表的时间作为模板设置指定文件的时间属性
-m:只更改文件的最后修改时间
-r file:将指定文件的时间属性设置为与模板文件file的时间属性相同
-t STAMP:使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性,格式含义为世纪、年、月、日、时、分、秒
linux的文件有3种类型的时间戳:
    Access:最后访问文件的时间;查看文件内容时,该时间(atime)会改变
    Modify:最后修改文件的时间;修改文件内容,该时间(mtime)会改变
    Change:最后改变文件状态的时间;修改文件内容、移动文件或改变文件属性,该时间(ctime)会改变
6.ls(list):列出目录的内容及其内容的属性信息
-l:使用长格式列出文件及目录信息
-a:显示目录下的所有文件,包括以“.”字符开始的隐藏文件
-t:根据最后的修改时间(mtime)排序,默认是以文件名排序
-r:以相反次序排序
-F:在条目后加上文件类型的指示符号
-i:显示inode节点信息
-d:当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接
-h:以人类可读的信息显示文件或目录大小
--color={never、always、auto}:不同文件类型显示不同的颜色参数,never表示不显示,always表示总是显示,auto表示自动显示
--time-style=“long-iso”:以long-iso时间格式输出
--time={atime、ctime}:以不同的时间属性输出,如果不加此参数,默认为最后修改时间
ls -F 输出内容:结尾为/是目录、结尾为*是可执行的普通文件、结尾为=是套接字、结尾为|是FIFOs、结尾为@时符号链接
ls -lhi 输出内容:
    173670 -rw-r--r-- 2 root root 3.0K Oct 28 11:29 oldboy
    第一列:inode索引节点编号
    第二列:文件类型以及权限(第一个字符为类型,后面9个字符为文件权限符号)
    第三列:硬链接个数
    第四列:文件或目录所属用户(属主)
    第五列:文件或目录所属组
    第六列:文件或目录的大小
    第七、八、九列:文件或目录的最后修改时间,默认为月、日、时、分
    第十列:实际的文件名或目录名,文件名不算文件的属性
7.cp(copy):复制文件或目录
-p:复制文件时保持源文件的所有者、权限信息及时间属性
-d:如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保持符号链接所指向的目标文件或目录
-r:递归复制目录,即复制目录下的所有层级的子目录及文件
-a:等同于上面的p、d、r这三个功能的总和
8.mv(move/rename files):移动或重命名文件(选项不是非常重要)
-f:若目标文件已经存在,则不会询问而是直接覆盖
-i:若目标文件已经存在,则会询问是否覆盖
-n:不覆盖已经存在的文件
-t:指定mv的目标路径,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后,和cp命令的-t选项功能一致
-u:在源文件比目标文件新,或目标文件不存在时,才进行移动
例子:
    mv file1 file2:如果file2不存在,则将file1命名为file2;如果存在,则将file1覆盖为file2
    mv file1 dir1:如果dir1目录不存在,则将file1命名为dir1;如果dir1存在,则将file1移动到dir1目录下
9.rm(remove):删除一个或多个文件或目录
-f:强制删除、忽略不存在的文件,不提示确认
-r:递归删除目录及其内容
10.ln(link):硬链接与软连接
无参数:常见硬链接
-s:创建软连接(符号链接)
硬链接(hard link):创建语法为“ln 源文件 目标文件”,硬链接生成的普通文件(-字符)
硬链接是指通过索引节点(inode)来进行链接的,在linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就称为硬链接。硬链接文件相当于文件的另一个入口。它的作用之一就是允许一个文件拥有多个有效路径名,这样就可以建立硬链接到重要文件,以防止被误删除数据
具有相同inode节点号的多个文件互为硬链接文件;删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;只有删除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除;当所有的硬链接文件及源文件被删除之后,再存放新的数据时会占用这个文件的空间,或者磁盘fsck检查时,删除的数据也会被系统回收;硬链接文件就是文件的另外一个入口;可以通过给文件设置硬链接文件,来防止重要文件被误删;硬链接文件可以用rm命令删除;对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接指数为0(i_link)时,文件就会被删除
软件列或符号链接(soft link or symbolic link):创建语法为“ln -s 源文件 目标文件(目标文件不能事先存在)”,软连接生成的是符号链接文件(l类型)
软连接或符号链接有点像windows里的快捷方式
软连接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体;即使删除了源文件,软连接文件也还是依然存在,但是无法访问指向的源文件路径内容了;失效的时候一般是白字红底闪烁提示;软连接和源文件是不同类型的文件,也是不同的文件,inode号也不相同;删除软连接文件可以使用rm命令;
10.find:查找目录下的文件,同时也可以调用其他命令执行相应的操作
find [选项] [路径] [操作语句]
find -H -L -P path expression(option、tests、actions)
    path:命令所查找的路径,用“.”表示当前目录,用“/”来表示系统根目录
    option:参数
        -maxdepth levels:查找的最大目录级数,levels为自然数
    tests:限定条件
-mtime[-n|n|+n]:按照文件的修改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前,n是距现在第n天
-name:按照文件名查找,只支持*、?、[]等特殊通配符
-size n[cwbkMG]:查找文件长度为n块的文件
-type:查找某一类型的文件:b(块设备文件)、c(字符设备文件)、d(目录)、p(管道文件)、l(符号链接文件)、f(普通文件)、s(socket文件)、D(door)
actions:执行动作
-exec:对匹配的文件执行该参数给出的shell命令
operators:支持的逻辑运算符:!(取反)、-a(取交集,and)、-o(取并集,or)
例子:
    find . -atime -2 :在当前目录查找受到访问的文件时间在两天内的
    find /var/log/ -mtime +5 -name "*.log" :在/var/log/目录下查找5天以前以“.log”结尾的文件
    find . ! -type d :查找不是目录的文件
    find . -maxdepth 1 -type d ! -name "." -o -name "oldboy":查找除了“.”以外的所有文件或文件名为oldboy的文件
    find . -type f -exec ls -l {} \; -exec后面跟的是command命令,最后以分号结尾,考虑系统中分号有不同的意义,所以前面加个反斜杠转义;{}作用是指代前面find找到的内容;
    find . -type f -mtime +14 -exec rm {} \; 在目录中查找更改时间在14天以前的文件,并删除
    find . -type f | xrags ls -l 在目录中查找到的文件显示属性信息
    find . -name "*.txt" | xrags -i mv {} dir2/ 将查找到的以.txt为结尾的文件移动到dir2目录中
    find /root/data -type f -name "*oldboy.txt" | xrags rm -f 查找名字为oldboy.txt为结尾的文件删除掉
    find /root/data -type f -name "*oldboy.txt" -exec rm {} \; 查找名字为oldboy.txt为结尾的文件删除掉:exec方式比xrags方式效率低
    find /data -name "*.sh" -exec sed -i 's#a#b#g' {} \; 查找以.sh为结尾的文件中的a字符替换成b字符
    find /data -name "*.sh" | xrags sed -i 's#a#b#g' 查找以.sh为结尾的文件中的a字符替换成b字符
    sed -i 's#a#b#g' `find /data -name "*.sh"` 查找以.sh为结尾的文件中的a字符替换成b字符
    find /data -type f ! -name "file0" | xrags rm -rf 删除/data中除了file0文件其他都删除
11.xargs:向其他命令传递命令行参数的一个过滤器,能够将管道或标准输入传递的数据转换成xargs命令后跟随的命令的命令行参数
-n:指定每行的最大参数量n,可以将标准输入的文本划分为多行,每个n个参数,默认为空格分隔
-i:以{}替代前面的结果
-0:用null代替空格作为分隔符
例子:
    xargs < test.txt :将test中的内容变成一行,xargs不能直接接文件,需要输入重定向符“<”
    xargs -n 3 < test.txt:将test中内容每行三个输出
    find . -name "*.log" | xrags -i mv {} dir1/ 查找日志文件并地动到dir1目录下
12.rename:重命名文件
13.basename:显示文件名或目录名
14.dirname:显示文件或目录路径
15.chattr:改变文件的扩展属性
16.lsattr:查看文件扩展属性
17.file:显示文件的类型(选项不是很重要)
-b:输出信息使用精简格式,不输出文件名
18.md5sum:计算和校验文件的md5值
-c:从制定文件中读取md5校验值,并进行校验
例子:
    md5sum oldboy.txt:获得oldboy文件的md5值
    md5sum oldboy.txt > md5.log:将oldboy文件的md5值和文件名输入到md5.log文件中
    md5sum -c md5.log:校验md5.log中的文件和文件的md5值是否没有变化
19.chown:改变文件或目录的用户和用户组
-R:递归更改目录的用户和用户组
例子:
    chown xxx file.txt:将file.txt的用户改变为xxx
    chown .xxx file.txt:将file.txt的用户组改变为xxx
    chown xxx.XXX file.txt:将file.txt的用户改变为xxx,用户组改变为XXX
20.chmod:改变文件或目录的权限
-R:递归处理指定目录以及子目录下的所有文件
例子:
    chmod u+x file.txt:设置文件属主执行权限
    chmod o+r file.txt:设置文件其他用户可读权限
    chmod 000 file.txt:设置所有权限为空(等效chmod a= file.txt)
    chmod 753 file.txt:设置文件属主可读可写可执行权限,所属组可读可执行权限,其他用户可写可执行权限
权限示意:
-rwxr-xr-x:第2/3/4位是用户权限位;第5/6/7位是用户组权限位;第8/9/10位是其他用户权限位
r:read,可读权限,对应数值为4
w:write,可写权限,对应数值为2
x:execute,可执行权限,对应数值为1
-:没有任何权限,对应数值为0
特殊权限位:t、T、s、S、X、x
用户类型:u(文件所属用户owner、user)、g(文件所属用户组group)、o(其他用户other)、a(所有all,等效u、g、o的总和)
操作字符:+(加入)、-(减去)、=(设置)
普通文件的读、写、执行权限:
    r:具有读取、阅读文件内容的权限
    w:具有新增、修改文件内容的权限:如果没有r,用vi编辑器,输入“:wq!”可以强制覆盖,但原文件内容会被清除,可以用echo追加内容到文件中;删除文件的权限是受父目录的权限控制,和文件本身的权限无关,文件名在父目录的block里
    x:具有执行文件的权限:文件本身要能够执行;普通用户必须要有r权限才能够执行;root即使没有r权限,只要有x权限就能够执行;root没有执行权限,但其他权限位还有x权限,就能够执行
目录的读、写、执行权限:
    r:具有浏览目录下面文件以及子目录的权限,即ls
    没有x不能进入目录里,无法cd;ls列表可以看到所有的文件名,不过会提示无权访问目录下的文件;如果ls -l列表,则所有的属性会带有问好,也会提示提示无权访问目录下的文件,但是可以看到所有文件名
    w:具有增加、删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合)
    增加的不是文件内容,而是创建一个新文件;修改的不是文件内容(这个看文件本身的权限),只能修改文件名,重命名文件(文件名是在目录的block中,看目录的权限是w就可以);删除也是删除文件而不是看文件本身的权限,是看目录的权限,如果没有x权限则不能删除
    x:具有进入目录的权限,即cd
    没有r则无法列表;没有w则无法新建文件
21.chgrp:更改文件用户组
22.umask:显示或设置权限掩码
根下的目录:
1./bin:该目录为binaries英文的缩写,是常用二进制命令所在的目录,比如ls、cp、mkdir等;/bin目录和/usr/bin类似
2./boot:linux的内核及系统引导程序所需的文件目录。安装系统分区的时候一般要单独分一个boot分区,大小可为128~256MB,该分区数据增长很小
3./dev:英文Device files的缩写,是设备文件的目录,比如声卡、磁盘、光驱等
4./etc:二进制软件安装包(yum、rpm)等配置文件默认路径,例如/etc/exports、/etc/fstab等;服务启动命令存放的目录,主要在/etc/init.d下,例如:/etc/init.d/sshd、/etc/init.d/iptables
5./home:普通用户的家目录默认数据存放目录
6./lib:英文libraries的缩写,启动系统和运行命令所需的共享库文件和内核模块存放目录,例如/bin和/sbin下的某些命令,分为/lib和/lib64(64位)两种
7.lost+found:在ext3文件系统中,当系统意外崩溃或机器意外关机,会在这里产生一些文件碎片,系统在开机启动过程中,fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题时,可能会有文件被移动到这个目录中,这时需要通过手工方式来恢复,或将文件移到原来的位置上。
8.mnt:英文mount point的缩写,一般是用于临时挂载存储设备的挂载点,比如有cdrom、u盘等目录。直接插入光驱无法使用,需要先挂载后再使用
9.opt:英文option的缩写,表示的意思是可选择,有些软件包也会被安装在这里,也就是自定义软件包
10.proc:操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是虚拟文件系统的挂载点,proc并不是真正的文件系统,它的定义可以参见/etc/fstab。系统运行时,很多信息都在这个目录下
    /proc/loadavg #系统负载(系统繁忙程度)
    /proc/meminfo #系统内存信息
    /proc/cpuinfo #系统CPU信息
    /proc/mounts #系统挂载信息
11.root:linux超级权限用户root的家目录
12.sbin:英文system binaries的缩写,大多涉及系统管理命令的存放,是超级权限用户root可执行命令的存放地,这个目录和/usr/bin、/usr/X11R6/sbin或/usr/local/sbin目录是相似的;系统命令,最好通过sudo让普通用户执行这些命令,常见命令有fdisk、reboot、fsck、halt等
13./tmp:英文Temporary files的缩写,为临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就是用来存放临时文件的,权限比较特殊。/var/tmp目录和这个目录像是,这个目录可以被看做是linux系统的回收站
14.usr:英文解释是第二层标准,这是系统存放程序的目录,比如命令、帮助文件等。官方提供的软件包,一般都安装在这里。/usr/local:默认软件安装目录;、usr/src程序源码目录
15./var:英文variable data的缩写,这个目录的内容是经常变动的。/var/log存放系统日志的目录,系统日志目录为/var/log/messages。/var/www目录是存放定义apache服务器站点的存放目录;/var/lib用来存放一些库文件,比如mysql的以及mysql数据的存放地等
重要文件:
1./etc/sysconfig/network-scripts/ifcfg-eth0:网卡配置文件
    当通过执行命令setup-"network configuration"来修改网卡时,实际上就是修改该配置文件,可以通过修改该配置文件对网卡配置的修改,通过命令ifdown eth0 && ifup eth0停止和启动网卡
    配置文件的详细内容:
        DEVICE=eth0:第一个网卡的逻辑设备名,第二块为eth1
        HWADDR=00:0C:29:CC:60:B2:以太网硬件地址即MAC地址,如果是    VMware克隆的虚拟机无法启动网卡,删除此项
        TYPE=Ethernet:上网类型,目前基本都是以太网
        UUID:通用的唯一识别码,如果是VMware克隆的虚拟机无法启动网卡,删除此项
        ONBOOT:为yes,才能保证下次开机启动激活网卡设备
        NM_CONTROLLED:是否通过Network Manager管理网卡设备
        BOOTPROTO:启动协议,获取配置方式,有none、bootp、dhcp三个选项
        IPADDR:局域网linux服务器的固定IP
        NETMASK:子网掩码
        DNS2:第二个DNS,这里默认会覆盖以及优先于/etc/resolv.conf配置生效
       GATEWAY:局域网上网的网关地址
       DNS1:主DNS,这里默认会覆盖以及优先于/etc/resolv.conf配置生效
       IPV6INIT:是否支持IPV6
       USERCTL:
2./etc/resolv.conf:linux系统DNS客户端文件
3./etc/sysconfig/network:主机名配置文件
4./etc/hosts:系统本地的DNS解析文件
5./etc/fstab:配置开机设备自动挂载的文件
    该文件共六列:
        第一列:为设备名称、UUID或者磁盘标签,可以通过blkid查看设备uuid
        第二列:为设备的挂载点,即访问设备的入口
        第三列:设备的文件系统类型。
        第四列:挂载的属性
        第五列:是否进行备份
        第六列:是否开机做磁盘检查,0为不做检查,1、2为检查
6./etc/rc.local:存放开机自启动程序命令的文件
7./etc/inittab:系统启动设定运行级别等配置文件
    系统运行级别:
        0:关机(请不要把系统运行级别设置为0)
        1:单用户模式(root用户密码忘记,可用此模式找回)
        2:没有NFS,多用户模式
        3:命令行模式,文本模式(企业级服务器核心运行状态)
        4:未使用
        5:图形化模式,桌面模式,X11(桌面个人系统运行状态)
        6:重启(不要把系统运行级别设置为6)
    runlevel:可以查看系统运行级别
    永久修改运行级别,需要修改/etc/inittab文件最后一行id:3:initdefault
8./etc/profile以及/etc/bashrc:配置系统环境变量/别名等文件
9./etc/profile.d:用户登录后执行的脚本所在的目录
10./etc/issue和/etc/issue.net:配置在用户登录终端前显示信息的文件,在企业中,为了防止泄露
11./usr/local/:编译安装软件默认的位置路径
12./usr/src/:存放源码文件的目录
13./var/log:记录系统及软件运行信息文件所在的目录
    messages:文本文件,系统级日志文件,这个文件非常重要,当系统及软件遇到运行故障时,可以通过查看这个日志文件获取故障信息,按周轮询
    secure:文本文件,安全日志文件
    dmesg:文本文件,硬件信息加载情况日志文件
    cron:文本文件,定时任务日志文件
    wtmp:二进制文件,记录登陆者信息的文件,执行last命令自动读取该文件
    lastlog:二进制文件,记录用户近期登录情况,执行lastlog命令自动读取该文件
14./proc/:是一个重要虚拟文件系统,记录着内核和进程方面的信息
    cpuinfo:当前cpu信息文件
    mounts:当前设备挂载列表信息文件
    meminfo:当前内存信息文件
    interrupts:当前系统中断信息文件
    loadavg:当前系统的平均负载文件
linux系统启动流程说明:
第一步:开启开机按钮,计算机加载BIOS自检
    打开计算机,计算机首先会加载BIOS信息,进而对CPU信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等进行自检。在正确检查完所有硬件信息后,会根据BIOS里的设置去读取相应的启动系统的硬件设备,如果预先设定了从硬盘启动加载程序,那么BIOS会读取硬盘的MBR,接下来开始加载内核文件,然后交由Linux来控制系统运行
第二步:读取MBR信息
    MBR全称为Master Boot Record,中文意思是主引导记录,它位于磁盘上的0柱面0磁道1扇区,整个大小是512字节,MBR里面存放了系统预启动信息、分区表信息等;MBR第一部分有446字节大小,作用是找到标记为活动的分区,并将活动分区的引导记录读入内存;第二部分为分区表,占有66字节,用于记录磁盘的分区信息,前64字节是磁盘分区表信息,后2个字节是分区的结束;计算机读取BIOS所指定的磁盘MBR信息后,就会将其读入到内存中,被读入到内存中执行的其实就是Boot Loader(引导加载程序),对应Linux系统的Grub信息
第三步:加载Grub菜单(Boot Loader, 引导加载程序)
    引导加载程序(Boot Loader),是在计算机加载操作系统内核之前运行的一段小程序,通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境加载到一个合适的状态,以便为最终调用操作系统内核做好准备。引导加载程序读取了grub.conf文件的配置信息后,根据对应配置信息来启动不同的操作系统。
    在加载Grub菜单过程中,按Esc,可停在原理处于隐藏状态下的Grub菜单。菜单中只有一个选项,底下小字提示可以做一些特殊的设置。随便设置加载Grub启动参数室友安全隐患的,因此在工作中可以为Grub加密码将其锁定
第四步:加载kernel内核以及驱动程序
    根据Grub设定的内核映像所在路径,系统会读取内存映像,并进行解压操作,当解压内核完成后,屏幕会输出“OK,booting the kernel”,其实就是根据grub.conf中的设置加载内核及其参数。此外还会加载内核所需的驱动程序文件,进而挂在并读取根分区的信息,然后加载操作系统文件
第五步:启动init进程,读取inittab文件
    加载完内核相关文件,系统第一个运行的程序为/sbin/init,因此init进程对应的进程号为1;此时init程序会读取/etc/inittab文件,并根据此文件来进行初始化工作,在CentOS6及其以后的版本中/etc/inittab文件最主要的作用是设定Linux的运行等级启动,其设定是":id:3:;initdefault:"
第六步:init进程执行rc.sysinit初始化系统
    在CentOS6及其以后版本中,读取/etc/init/rcS.conf文件加载/etc/rc.d/rc.sysinit,并对系统进行初始化设置,按下Esc,可以看到rc.sysinit脚本初始化硬件信息的执行过程
第七步:init进程加载内核相关模块
    在CentOS6,加载/etc/sysconfig/modules下的内核模块
第八步:init进程执行对应运行级别下的脚本
    根据系统设定运行级别,系统会运行rc0.d到rc6.d中相应的脚本程序,从而完成相应的初始化工作和启动相应的服务,在CentOS以后的版本中,对应脚本目录:/etc/rc.d/
第九步:加载/etc/rc.local
    rc.local就是在系统做好一切初始化工作后,留给管理员自主设置的一个文件,可以把需要跟随计算机启动的程序信息放置在这里
第十步:启动mingetty,进入登录前状态
    系统读取/etc/init/tty.conf,设置对应运行级别的终端,启动mingetty,进入登录前的状态
文件类型:
1.普通文件:符号“-”
    这类文件一般是用相关的应用程序或系统命令创建的,比如touch、cp、echo等工具命令,可分为:文本文件(ASCII,此类文件的内容可以直接读出数据)、二进制文件(binary,常见命令就是属于这种格式,cat)、数据格式文件(data,有些程序在运行的过程中会读取某些特定格式的文件就是数据文件)
2.目录文件:符号“d”
3.符号链接文件(symbolic link):符号“l”
4.字符(character)/块(block)设备文件:符号“c”/“b”
    字符文件一般为串行端口的接口设备,如调制解调器等;块设备文件Ibanez是存储数据供系统及程序访问的接口设备,如硬盘、光驱等
5.套接口文件(socket):符号“s”
    一类特殊文件,通常用在网络之间,进行数据连接
6.管道文件(pipe):符号“p”
    一类特殊文件,主要用于解决多个程序同时访问一个文件所造成的错误
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值