linux命令大全

linux命令大全:
su 用户
sudo su 用户

修改密码:passwd 用户名

更改所有者:chown 用户名:用户名(组) /文件

更改权限:chmod 777 文件  以root身份进去

ps -ef 查看进程,可以用grep筛选

查看所有端口:
netstat -antp
查看所有的进程
ps -ef

关机命令:shutdown.up

pwd  查看当前目录


r 4 读
w 2  写
x 1  运行

ll  当前文件夹下面的文件(夹)明细

dir  等同于 ls

马哥讲解:
操作系统组成结构:
硬件,内核(平台,kernel),库(包,api),ide(集成开发环境)
 dll动态链接库(windows系统)
 so(共享对象)
 
认证机制:Authentication
授权:Authorization
审计:Audition(日志)
命令提示符:prompt
命令:
magic number:魔数
shebang(开始的必须写的shell)


命令:command options argument


有些选项是可以带参数的

ls:list 列表,列出
目录也是文件,路径映射文件
路径:从指定起始点到目的地所经过的位置

系统里面所有的位置都是目录

FHS:文件系统标准文件夹

pwd:当前目录(pringting working directory)

ls -l dev
ls -l 显示长的

-rw-------    一共10位
第一位是 文件类型 -:普通文件,d:目录文件,b:块设备文件,c:字符设备文件,l:符号链接文件,p管道文件,s:套接字文件
后面9位是权限:每三位一组,每一组都是由:rwx(读,写,执行)


数字:文件硬链接的次数

文件的属主

文件的属组

文件大小(size,默认是字节)

时间戳(timestamp),最近一次访问时间,最后一次修改时间,最后一次改变的时间,在这里显示的是最后一次修改时间
ls -lh:变成多少kb,多少兆啊

隐藏文件以.开头

ls -a:显示隐藏文件
ls ..:表示显示上级目录
ls -A : 显示所有目录,但是不显示隐藏文件

ls -i 文件的缩影节点(*)
ls -r 逆序的显示
ls -R 显示所有的文件(文件中的文件)

liunx的主目录:home这个目录

cd ~用户名 这是管理员进入指定目录的家目录

cd - 在前一个目录和当前目录来回切换

命令类型:
内部命令(shell内置)
外部命令:在文件系统的某个路径下有一个与命令名称相同的可执行文件

type 命令 显示指定命令属于哪种命令

which 命令 属于哪个文件夹

hash 使用了多少次该命令

缓存为王

ntp 网络时间服务协议

获得命令的使用帮助:
内部命令:help 命令
外部命令:命令 --help

命令使用手册:
man 命令

man这个命令
分章节:
1:用户命令
2:系统调用

whatis 命令  查看该命令出现在哪些章节

[]:可以多选
...:可以出现多次
|:多选一

cal  日历

echo (内置命令)重要脚本命令
printf (内置命令)默认不打印换行符,后面跟字符或者格式

0 000 ---: 无权限
1 001 --x: 
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

777 rwxrwxrwx  这样的 ,一般都是9位


用户:uid /etc/passwd 这里面定义了所有用户的的id
组:gid /etc/group 这里定义了组的id
影子口令:/etc/shadow 用户密码在这里面
          /etc/gshadow 组密码在这里面
          
用户列表:
管理员:id为0
普通用户:1-65535 一般有这么多用户(以二进制的方式)
    (1)系统用户:1-499 在这里面是系统用户(后台自动运行的用户)
    (2)一般用户:500-60000 一般用户的id

组列表:
管理员组;
普通组:
    (1)系统组:
    (2)一般组:
 
 
 加密方法
 (1)对称加密:加密和解密使用同一个密码
 (2)公钥加密:每个密码都成对出现,一个对私,一个对公
(3)单向加密:散列加密:提取数据特征码---》也叫指纹加密

手动添加组
group 组名

手动给用户指定id  -u id号  这样使用
useradd -u 1000 用户名

手动新增用户指定某个组  -g 组id  组一定要先存在,这是指定到基本组
手动新增用户指定某个组  -G 组id  这个加载附加组
用户的注释信息:-c “信息”
用户的家目录:  -d 家目录路径 
                -s shell的路劲
                -m 强制给用户创建家目录,一般与-k一起使用
                -M
                -r 添加一个系统用户(id小于500)
/etc/shells 查看所有可用shell


系统里面的环境变量:
PATH
HISTSIZE
SHELL  使用:echo $SHELL 查看当前用户的shell

/etc/login.defs 这里面有一些基本数据

删除用户:
userdel [选项] 用户名  一般删除用户默认不会删除家目录
        -r 用户名     删除用户的家目录和用户
id:查看用户的基本信息
    -G 当前用户的所属组
    -n 显示名称
finger 用户名    查看用户账号信息

usermod与useradd用法差不多
        -a -G GID  不使用-a会覆盖此前的附加组
        -d -m 修改为新的家目录,并且复制原来里面的文件
        -s 修改shell
        -l 修改用户名
        -L 锁定用户
        -U 解锁用户
chsh 用户   修改用户的默认shell
chfn 用户   修改用户的注释信息

passwd 用户  修改用户密码
    --stdin 从标准输入接收字符串
    -l 锁定用户
    -u 解锁用户
    -d 删除用户密码
    -n 使用最小天数
    -x 使用最大天数
    
pwck 检查用户账户完整性

组管理:
groupadd 创建组
        -g 指定id
        -r 添加一个系统组(id小于500的)
groupmod 修改组的信息
        -g 修改gid
        -n 修改组名
groupdel 删除一个组
gpasswd  组名    给一个组加上密码

chage 修改密码属性
     -d 最近一次修改时间
     -E 过期时间
     -m 最短使用期间
     -I 非活动期限
     -M 最长使用期限
     -w 警告时间

tar zxvf ./jdk-7-Linux-i586.tar.gz  -C /usr/lib/jvm  
echo $LANG 查看编码
locale 查看是否安装了中文包
en_US.UTF-8   这是英文版的
zh_CN.UTF-8   这是中文的
LANG='zh_CN.UTF-8'  这是切换中文

tar

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压


vi etc/profile  在这里面设置环境变量     
权限:
chown :改变文件属组(只有管理员才有)
    用户 文件,.....   可以多个 ,把后面的文件改为该用户
    -R :修改目录及其内部文件的属组
    --reference=/path/to/somefile file,...   参考,把file的文件修改为somefile一样(这是组名和用户一起修改的)
chown USERNAME:GRPNAME file,....  即改变名称和组名
    :GRPNAME  这是只修改组名
    USERNAME.GRPNAME file,..效果是一样的
    
chgrp 组名 文件名,....
    --reference=/文件 修改为的文件
    
修改文件的权限:
chmod :修改文件权限
(1)修改三类用户的权限
chmod 777 file,....
    -R 
    --reference/文件 修改成的文件
    
    
(2)修改某类用户或某些类用户权限
u,g,o,a (u:开始的3位,g:中间3位,o:后面3位,a:所有的)
chmod 用户类别=MODE file,.... 
例子:chmod u=rwx 文件名
      chmod g=r 文件名   这是这组只有读这个功能
      chmod g=r,o=r 文件名  这是组和其他用户有读的功能
      chmod go=r 文件名  这是简写
      chmod g=rx,o= 文件名  这是其他的为空---
      
(3)修改某类用户的某位或某些类权限
u,g,o,a
chmod 用户类别 +|- MODE 文件名  
例子:chmod u+r,g-x 文件名  把用户的权限加上读,把组权限减去执行
      chmod +x 文件名  把3类用户全部加上执行
      chmod -rwx 文件名  可以同时操作多钟权限
      
手动添加用户:
(1)etc/group   添加组
(2)etc/passwd  添加用户
(3)etc/shadow  添加用户基本信息,包括密码这些

手动生成密码:
passwd 
openssl passwd -1 -salt ‘随便输’   这是生成一窜加上掩的密码


bc是计算器
umask:遮罩码
创建文件:666-umask
创建目录:777-umask

umask 查看当前用户的umask
    umask 数字  修改用户的umask   默认数字是0022  第一位不用看

touch 文件名   这是创建的文件  文件默认的是没有执行权限的,如果算的结果又执行权限,则将结果加一
    

站在用户角度,shell的类型:
一,登录式shell
(1)正常通过某终端登录的shell
(2) su -USERNAME   su -l USERNAME
二,非登录式shell
(1)su USERNAME
(2)图形终端下打开命令窗口
(3)自动执行的shell脚本

bash的配置文件:
全局配置
    /etc/profile,/etc/profile.d/*.sh,/etc/bashrc

个人配置
    ~/.bash_profile,~/.bashrc
    
profile类的文件:
    (1)设定环境变脸
    (2)运行命令或脚本
bashrc类的文件:
    (1)设定本地变量
    (2)定义命令别名
    
登录式shell如何读取配置文件
/etc/profile --> /etc/profile.d/*.sh -->~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非登录式shell如何读取配置文件
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

nano .bashrc   在这里面增加别名的
profile这个文件里面是命令这些东西的


alias 别名=‘命令’

find / -name 需要查找的名字

tr 实现字符集转换或删除命令

管道和重定向
运算器,控制器:cpu
存储器:RAM
输入设备/输出设备


程序:指令

系统设定
    默认输出设备:标准输入,STDOUT,1
    默认输入设备:标准输入,STDIN,0
    标准错误输出:STDERR,2
标准输入:键盘
标准输入和错误输出:显示器

I/O重定向:
    > 覆盖输出  这里不能覆盖错误输出 例如:ls /var > /opt/var.out
    >> 不覆盖输出 
set -C 这是禁止覆盖输出
set +C 开启覆盖
在set -C这种情况 还是想强制覆盖  则 >| 这样就可以了

    2> 覆盖输出 这里会覆盖错误输出
    2>> 不覆盖输出
    
&>  重定向所有输出

< 输入重定向 tr ‘a-z’ 'A-Z' < adsSDSSDdsd
<< 符号 文档结束符号

运用这种方式  在脚本中生成文档

管道:前一个命令的输出,作为后一个命令的输入

命令1 | 命令2 | 。。。。

cut -d: -f1 /etc/passwd  查看passwd的第一列

grep和正则表达式:
grep:根据模式搜索文本,并将符合模式的文本行显示出来
grep ‘’  和  grep “” 第一个是强匹配,后面是若匹配  若里面没有正则表达式的话,可以不用''或“”
 -i 忽略大小写
 --color 颜色
 -v 显示没有被匹配的行
 -o 只显示被模式匹配到的字符串
 
 正则表达式:是匹配的贪婪模式
 元字符
 .:表示匹配任意字符
 [];匹配指定范围内的任意单个字符
 [^];匹配指定范围外的任意单个字符
 
字符集合:
 [:digit:];数字  使用方式:grep '[[:digit:]]$' /...  这是最后一个字符是数字的行
 [:lower:]:小写字母
 [:upper:];大写字母
 [:punct:]:标点
 [:space:]:空白
 [:alpha:];所有字母
 [:alnum:]:所有字母和数字
 
 匹配次数:
 *:匹配其前面的字符任意次
 
 .*:任意长度的任意字符
 
 ?:匹配其前面的字符一次或零次(一般要用转义字符\)
 
\{n,m\}:查找出最少n次,最多m次 

位置锚定:
^:这是锚定行首,此字符后面的任意内容必须出现在行首  例如:grep ‘^root’
$:这是锚定行尾,此字符后面的任意内容必须出现在行尾  例如:grep 'bush$'
^$;这是表示空白行
\<或\b:其后面的任意字符必须作为单词首部出现  锚定词首
\>或\b;其前面的任意字符必须作为单词的尾部出现  锚定词尾

fgrep:不支持正则表达式,速度快


shell编程:

编译器,解释器

编程语言:机器语言(0,1),汇编语言,高级语言

静态语言:编译型语言
    强类型(变量)
    关键字:
    c,c++,java,c#
    
动态语言:解释型语言
    弱类型
    边解释边执行
    asp,php,shell,python,perl
    nua

    
变量:内存空间,命令
内存:编址的存储单元
进程:
    
编程能力:
    脚本编程:是面向过程的


bash变量类型:
    环境变量:
    本地变量:
    位置变量:
    特殊变量:
    
本地变量:
    VARNAME=VALUE   作用域为整个bash进程
局部变量:
    local VARNAME=VALUE  作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程
    export VARNAME=VALUE
位置变量:
    $1,$2,.....
特殊变量:
    $?:上一个命令的执行状态返回值
程序执行之后,可能有2类返回值
    程序执行结果
    程序状态返回代码(0-255)
        0:正确执行
        1-255;错误执行  (1,2,127系统预留的,其他的将来我们写脚本可以自己定义)
输出重定向的位置:/dev/null   这里是软件模拟设备  数据黑洞(执行结果不会显示)
>
>>
2>
2>>
&>  不论错误还是正确


撤销变量:
 unset VARNAME  撤销该变量

 查看当前shell的变量
    set  
 
 查看当前shell中的环境变量:
    printenv
    env
    export
    
脚本在执行的时候会启动一个子shell进程
        命令行中启动的脚本会继承当前shell环境变量
        系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
        
        
        
        
    bash:
引用变量:${变量名}
echo  即等于打印
''是强引用的,里面不能用变量


脚本:命令的集合,按照实际需要,结合命令流程控制机制实现
第一行必须是:
    shebang:魔数
#!/bin/bash     这个路径是一个解释器
#注释行,不执行

查看
yum repolist | grep mysql
yum repolist 
yum clear
yum makecahe
yum repolist
cd /etc/yum.repos.d/

bash中条件判断:
判断类型有三种
    整数测试
    字符窜测试
    文件测试
    
条件测试的表达式:
    [ 表达式 ]
    [[ 表达式 ]]
    test 表达式
    

整数比较(一般需要2个):
    -eq:测试两个整数是否相等:比如[ $a -eq $b ]   相等为真,不等为假
    -ne:测试2个整数是否不等  不等为真,相等为假
    -gt:测试一个数是否大于另一个数:大于为真,小于为假
    -lt:测试一个数是否小于另一个数,小于为真,否则为假
    -ge:大于或等于
    -le:小于或等于
bash中语句中的逻辑关系: 
    逻辑与:&&     a&&b    a为真,b执行    a为假,b不执行
        或:||     a||b    a为真,b不执行  a为假,b执行
        非:!     !a      a为真,则为假:a为假,则为真
        

grep,egrep,fgrep   文本查找
文件查找:
locate :
    非实时,模糊匹配,查找是根据全系统文件数据库进行的(大致是一天保存一次到默认数据库)
    updatedb,手动生成文件数据库
    速度快
    
find:
    实时查询,精确,通过遍历指定目录中的所有文件,速度慢,支持许多中查找标准
    例如: find 查找路径 查找标准 查找到以后的处理运作
            查找路径(默认为当前目录)
            查找标准:默认为指定路径下的所有文件
            处理动作:默认为显示
    
匹配标准:
    -name 文件名    对文件名做精确匹配(严格区分大小写)
        支持文件名统配
            *
            ?
            []
    -iname 文件名;   对文件做精确匹配(不区分大小写)
    -regex 模式  正则表达式;  基于正则表达式模式进行匹配
    -user  属主
    -group  属组
    -uid  根据uid查找
    -gid  根据gid查找
    -nouser   查找没有属主的文件
    -nogroup   查找没有属组的文件
    -type   根据文件类型查找
            f:普通文件
            d:目录文件,
            b:块设备文件,
            c:字符设备文件,
            l:符号链接文件,
            p:管道文件,
            s:套接字文件
            
    -size 查找文件大小    find /home -size  1M
        [+|-]#k  前面的加减是大于小于,如果没有,就是精确
        M
        G
组合条件:
    -a 2个都匹配   find /opt -nouser -a -type d -ls 
    -o 其中一个匹配
      -not  没有匹配   find /opt -not -type d
    


文件系统访问列表
tom
    tom,tom基本组
jerry:other:rw-

FACL:filesystem access control list
利用文件扩展保存额外的访问控制权限


进程:
    线性内存
    物理内存

    
TCP/IP:安全
    
    
脚本编写:
 编译器,解释器
 编程语言:机器语言,汇编语言,高级语言
 
 静态语言:编译型语言 
        强类型(变量)
        事先要先转换成可执行格式
        c c++  java
        
动态语言:解释器语言
        弱类型
        边解释边编译
        .net  php  shell   python  perl

bash:脚本解释器
面向过程:shell,c
面向对象:java,python,perl,c++

变量:内存空间,命令

内存:编址的存储单元

变量类型:事先确定数据的存储格式和长度
        
强类型:变量在使用前,必须事先声明,甚至还需要初始
弱类型:shell,变量随时用随时申明,甚至不区分类型
        
编程能力:
    脚本编程
    
bash变量类型:
    环境变量:
        作用为当前shell进程以及子进程
        定义环境变量关键字:export
        脚本在执行时会启动一个子shell进程
            命令行中启动的脚本会继承当前shell环境变量
            系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
        
        
    本地变量:
        bash:
        引用变量:${变量名},避免混淆的时候才加括号
    局部变量:需要加上一个local的关键字,只对当前代码段
    
    位置变量:
        $1,$2....
        shift
    
    特殊变量:
        $?,上一个命令执行状态返回值
        $#:传入参数的个数
        $*:传入参数的列表
        $@:传入参数的列表

输出重定向的位置:/dev/null


变量撤销:unset 变量名  操作变量的时候是不需要加$的

查看当前shell的变量   set  --这是查看所有的变量

shell的默认变量都是字符串的


bash条件判断:
    类型:整数测试,字符串测试,文件测试
    表达式:[ 表达式 ]
            [[ 表达式 ]]
            test 表达式

变量名称:只能包含字母,数字和下划线,并且不能以数字开头,不能跟系统中已有的变量相同

wc -l 查询文件的行数
cut -d 截取


liunx截取:
    var=http://www.google.com/test.htm
    echo ${var#*//} ---结果:www.google.com/test.htm   注释:其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
    echo ${var##*/} ---结果:test.htm                  注释:##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
    echo ${var%/*}  ---结果:http://www.google.com     注释:%/* 表示从右边开始,删除第一个 / 号及右边的字符
    echo ${var%%/*} ---结果:http:                       注释:%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
    echo ${var:0:5} ---结果:http:                     注释:其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
    echo ${var:7}   ---结果:www.google.com/test.htm   注释:其中的 7 表示左边第8个字符开始,一直到结束。
    echo ${var:0-7:3} -结果:test                      注释:其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
    echo ${var:0-7} ---结果:test.htm                  注释:表示从右边第七个字符开始,一直到结束。
 
 
条件判断:(返回的值必须是状态的0)

    单分支的if语句
    if 判断条件;then
        内容。。
    fi(这个必须是单独一行)
    
    
    双分支的if语句
    if 判断条件;then
        内容。。
    else
        内容。。
    fi
    
    多分支的if语句
    if  判断语句;then
        内容。。
    elif
        内容。。
    else
        内容。
    fi
    
    
shell脚本的算数运算:
    前面加let  表名这是一个算数
    a=3
    b=6
    1、let 算数运算表达式
        let c=$a+$b
    2、中括号和$
        c=$[$a+$b]
    3、$(())
        c=$(($a+$b))
    4、expr 算数运算表达式,表达式中各操作数及运算要有空格
        c=`expr $a + $b`
    
exit:退出脚本
exit 数字    这是自定义退出之后的状态
定义退出状态码:如果脚本没有定义退出状态码,那么最后一条命令的执行状态就是退出状态码

如何进行文件测试:
    bash中常用的条件测试
    -gt
    -le
    -lt
    -eq
    -ge
    
    
    文件测试:
    -e FILE:测试文件是否存在
    -f FILE:测试文件是否为普通文件
    -d FILE:测试指定路径是否为目录
    -r FILE:测试指定文件对当前用户是否有可读权限
    -w FILE:测试指定文件对当前用户是否有可写权限
    -x FILE:测试指定文件对当前用户是否有可执行权限
    例如:[ -e /etc/profile ]   [ ! -e /etc/profile ]


测试脚本是否是否有语法错误
bash -n 脚本
bash -x 脚本    会把脚本执行的语句全部显示出来*很重要的测试


脚本带参数
利用的是位置变量    $1,$2......
    位置变量:shift  用于当引用参数过多之后,就用这个轮替(默认踢掉一个,但是后面可以加数字)
    
判断参数不能为空的一个特殊符号  
$#:判断参数的个数
$*:参数列表
$@:参数列表


字符串比较:字符串测试
    ==或=:判断2个字符串是否相等  [ "$a" = "$b" ]  等号2遍要有空格,可以不加引号
    !=    :记住是要加空格
    -n 字符串 ; 测试指定字符串是否为空
    -s 字符串 : 测试指定字符串是否不为空

    bc


脚本for循环
    进入条件,退出条件
    for
       for 变量 in 列表;do
            循环体
        done
    列表的指定数:1、{1..100}这是1到100
                  2、seq [起始数]  [步进长度]  结束数

declare -i SUM=0
        -i 表示整形
        -x 将一个变量申请为环境变量
    
    while
    until

grep,sed(流编辑器),awk

sed的基本用法:stream EDitor
    行编辑器(全屏编辑器:vi编辑器)
sed:模式空间,逐行读取
    默认情况下,不编辑原文件,只对模式空间中的数据做处理
    
    
    
sed [选项] "指定地址(对于哪些行进行)命令" 文件(可以多个)

指定地址:
   1、开始行,结束行   例如:1,,100   这就是1到100行    $:表示最后一行,$-1:倒数第二行
   2、正在表达式    例如:/RegExp/   /^root/
   3、/模式地址1/,/模式地址2/   第一次被模式地址1匹配到的行开始,至第一次被模式地址匹配到的行结束,这中间的所有行
   4、只给一个数值,这表示特定的这行
   5、指定起始行,+n    从指定行开始,向后n行
   
command:命令
   d:删除选定行
   p:显示符合条件的行
   a \内容:    在制定的行后面追加新行,内容为“内容”
   i \内容:    在制定的行前面追加新行,内容为“内容”
   r 文件路径: 将制定文件的内容添加至符合条件处
   w 文件路径: 将地址制定范围内的内容另存至制定的文件中
   s/模式/内容/修饰符:查找并替换    将模式里面的替换成内容(默认每一行中第一次被模式匹配到的字符串)
        加修饰符  g:全局替换
                  i:忽略大小写
                  
    s///=s###=s@@@              
        
选项:
   -n   只显示符合条件的行    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值