Linux常用的命令

常见快捷键
    ctrl+c:停止进程
    ctrl+l:清屏
    ctrl+q:退出
    善于用tab键
    上下键:查找执行过的命令
    ctrl+alt:linux与windows之间切换
防火墙:
    service iptables status (功能描述:查看防火墙状态)
    chkconfig iptables –list    (功能描述:查看防火墙开机启动状态)
    service iptables stop   (功能描述:临时关闭防火墙)
    chkconfig iptables off  (功能描述:关闭防火墙开机启动)
    chkconfig iptables on   (功能描述:开启防火墙开机启动)
关机重启:
    在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机 。
正确的关机流程为:sync > shutdown > reboot > halt
1)基本语法:
    (1)sync             (功能描述:将数据由内存同步到硬盘中)
    (2)shutdown [选项] 时间 
            选项:
            -h:关机
            -r:重启
    (3)halt             (功能描述:关闭系统,等同于shutdown –h now 和 poweroff)
    (4)reboot           (功能描述:就是重启,等同于 shutdown –r now)
用户管理命令

useradd 添加新用户
1)基本语法:
    useradd 用户名     (功能描述:添加新用户)
2)案例:
    [root@hadoop101 opt]# user atguigu
passwd 设置用户密码
1)基本语法:
    passwd 用户名  (功能描述:设置用户密码)
2)案例
    [root@hadoop101 opt]# passwd atguigu
id 判断用户是否存在
1)基本语法:
    id 用户名
2)案例:
    [root@hadoop101 opt]#id atguigu
su 切换用户
1)基本语法:
su 用户名称                     (功能描述:切换用户)
2)案例
[root@hadoop101 opt]#su atguigu
userdel 删除用户
1)基本语法:
    (1)userdel  用户名     (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名       (功能描述:用户和用户主目录,都删除)
2)案例:
(1)删除用户但保存用户主目录
    [root@hadoop101 opt]#userdel atguigu2)删除用户和用户主目录,都删除
    [root@hadoop101 opt]#userdel –r atguigu

who 查看登录用户信息
1)基本语法
    (1)whoami           (功能描述:显示自身用户名称)
(2)who am i     (功能描述:显示登录用户的用户名)
(3)who          (功能描述:看当前有哪些用户登录到了本台机器上)
2)案例
[root@hadoop101 opt]# whoami
[root@hadoop101 opt]# who am i
[root@hadoop101 opt]# who


设置atguigu普通用户具有root权限
1)修改配置文件
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
atguigu   ALL=(ALL)     ALL
修改完毕,现在可以用atguigu帐号登录,然后用命令 sudo - ,即可获得root权限进行操作。
2)案例
[atguigu@hadoop101 opt]$ sudo mkdir module
[root@hadoop101 opt]# chown atguigu:atguigu module/






cat  /etc/passwd 查看创建了哪些组
    cat  /etc/passwd

usermod修改用户 
    1)基本语法:
    usermod -g 用户组 用户名
    2)案例:
    将用户atguigu加入dev用户组
        [root@hadoop101 opt]#usermod –g dev atguigu


用户组管理命令
    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,
    如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
    用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。


groupadd 新增组
    1)基本语法
    groupadd 组名
    2)案例:
        添加一个atguigu组
    [root@hadoop101 opt]#groupadd atguigu

groupdel删除组
    1)基本语法:
    groupdel 组名
    2)案例
    [root@hadoop101 opt]# groupdel atguigu


groupmod修改组
    1)基本语法:
    groupmod -n 新组名 老组名
    2)案例
        修改atguigu组名称为atguigu1
    [root@hadoop101 atguigu]# groupmod –n atguigu1 atguigu

cat  /etc/group 查看创建了哪些组
    cat  /etc/group
文件命令
pwd 显示当前工作目录的绝对路径
1)基本语法:
    pwd     (功能描述:显示当前工作目录的绝对路径)
    2)案例
[root@hadoop106 home]# pwd
/home


ls 列出目录的内容
1)基本语法:
ls [选项] [目录或是文件]
选项:
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
 每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间 名字 
2)案例
[atguigu@hadoop101 ~]$ ls -al
总用量 44
drwx------. 5 atguigu atguigu 4096 527 15:15 .
drwxr-xr-x. 3 root    root    4096 527 14:03 ..
drwxrwxrwx. 2 root    root    4096 527 14:14 hello
-rwxrw-r--. 1 atguigu atguigu   34 527 14:20 test.txt


mkdir 创建一个新的目录
1)基本语法:
    mkdir [-p] 要创建的目录
    选项:
-p:创建多层目录
2)案例
[root@hadoop106 opt]# mkdir test 
[root@hadoop106 opt]# mkdir -p user/atguigu


rmdir 删除一个空的目录
1)基本语法:
    rmdir 要删除的空目录
2)案例
[root@hadoop106 opt]# mkdir test
[root@hadoop106 opt]# rmdir test


touch 创建空文件
1)基本语法:
    touch 文件名称
2)案例
[root@hadoop106 opt]# touch test.java


cd 切换目录
1)基本语法:
    (1)cd 绝对路径
    (2)cd 相对路径
    (3)cd ~或者cd        (功能描述:回到自己的家目录)
    (4)cd -         (功能描述:回到上一次所在目录)
    (5)cd ..            (功能描述:回到当前目录的上一级目录)
    (6)cd -P            (功能描述:跳转到实际物理路径,而非快捷方式路径,具体软连接的时候用。)
2)案例
(1)使用 mkdir 命令创建atguigu目录
[root@www ~]# mkdir atguigu2)使用绝对路径切换到atguigu目录
[root@www ~]# cd /root/atguigu/3)使用相对路径切换到atguigu目录
[root@www ~]# cd ./atguigu/4)表示回到自己的家目录,亦即是 /root 这个目录
[root@www atguigu]# cd ~5)cd- 回到上一次所在目录
[root@www atguigu]# cd -6)表示回到当前目录的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..


cp 复制文件或目录
1)基本语法:
(1)cp source dest               (功能描述:复制source文件到dest)
(2)cp -r sourceFolder targetFolder  (功能描述:递归复制整个文件夹)
2)案例
(1)复制文件
 [root@hadoop106 opt]# cp test.java test2)递归复制整个文件夹
 [root@hadoop106 opt]# cp -r test test1


rm 移除文件或目录
1)基本语法
    (1rmdir deleteEmptyFolder  (功能描述:删除空目录)
(2)rm -rf deleteFile            (功能描述:递归删除目录中所有内容)
2)案例
1)删除空目录
 [root@hadoop106 opt]# rmdir test
2)递归删除目录中所有内容
 [root@hadoop106 opt]# rm -rf test1


mv 移动文件与目录或重命名
1)基本语法:
    (1)mv oldNameFile newNameFile   (功能描述:重命名)
    (2)mv /temp/movefile /targetFolder  (功能描述:移动文件)
2)案例:
    1)重命名
         [root@hadoop106 opt]# mv test.java  test1.java
    2)移动文件
         [root@hadoop106 opt]# mv test1.java  test1


cat 查看文件内容
查看文件内容,从第一行开始显示。

1)基本语法
    cat  [选项] 要查看的文件
        选项:
        -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
        -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
        -E :将结尾的断行字节 $ 显示出来;
        -n :列出行号,连同空白行也会有行号,与 -b 的选项不同;
        -T :将 [tab] 按键以 ^I 显示出来;
        -v :列出一些看不出来的特殊字符
2)案例
        [atguigu@hadoop101 ~]$ cat -A test.txt 
        hellda  $
        dasadf ^I$
        da^I^I^I$
        das$

tac查看文件内容 
查看文件内容,从最后一行开始显示,可以看出 tac 是 cat 的倒著写。

1)基本语法:
    tac  [选项参数] 要查看的文件
2)案例
        [root@hadoop106 test1]# cat test1.java 
        hello
        atguigu
        atguigu1

        [root@hadoop106 test1]# tac test1.java
        atguigu1
        atguigu
        hello

more 查看文件内容
查看文件内容,一页一页的显示文件内容。

1)基本语法:
    more 要查看的文件
2)功能使用说明
    空白键 (space):代表向下翻一页;
    Enter:代表向下翻『一行』;
    q:代表立刻离开 more ,不再显示该文件内容。
    Ctrl+F 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前行的行号
    :f 输出文件名和当前行的行号
3)案例
    [root@hadoop106 test1]# more test1.java

less 查看文件内容
less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用[pageup] [pagedown]往回滚动。
1)基本语法:
    less 要查看的文件
2)功能使用说明
    空白键   :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup]  :向上翻动一页;
    /字串     :向下搜寻『字串』的功能;n:向下查找;N:向上查找;
    ?字串     :向上搜寻『字串』的功能;n:向上查找;N:向下查找;
    q         :离开 less 这个程序;
3)案例
    [root@hadoop106 test1]# less test1.java

head查看文件内容
查看文件内容,只看头几行。
1)基本语法
    head -n 10 文件      (功能描述:查看文件头10行内容,10可以是任意行数)
2)案例
    [root@hadoop106 test1]# head -n 2 test1.java 
    hello
    atguigu


tail 查看文件内容
查看文件内容,只看尾巴几行。
1)基本语法
    (1)tail  -n 10 文件       (功能描述:查看文件最后10行内容,10可以是任意行数)
    (2)tail  –f  文件     (功能描述:实时追踪该文档的所有更新)
2)案例
    (1)查看文件倒数1行内容
    [root@hadoop106 test1]# tail -n 1 test1.java 
    Atguigu
    (2)实时追踪该档的所有更新
    [root@hadoop106 test1]# tail -f test1.java
    hello
    atguigu
    atguigu


重定向命令
1)基本语法:
    (1)ls –l >文件        (功能描述:列表的内容写入文件a.txt中(覆盖写))
    (2)ls –al >>文件  (功能描述:列表的内容追加到文件aa.txt的末尾)
2)案例
    (1)[root@hadoop101 opt]# ls -l>t.txt2)[root@hadoop101 opt]# ls -l>>t.txt3)[root@hadoop106 test1]# echo hello>>test1.java

echo 

    1)基本语法:
        (1)echo 要显示的内容 >> 存储内容的的文件  (功能描述:将要显示的内容,存储到文件中)
        (2)echo 变量      (功能描述:显示变量的值)
    2)案例
        [root@hadoop106 test1]# echo $JAVA_HOME
        /opt/module/jdk1.7.0_79



ln软链接

    1)基本语法:
        ln –s [原文件] [目标文件]      (功能描述:给原文件创建一个软链接,软链接存放在目标文件目录)
    2)案例:
        [root@hadoop101 module]# ln -s /opt/module/test.txt /opt/t.txt
        [root@hadoop101 opt]# ll
        lrwxrwxrwx. 1 root    root      20 617 12:56 t.txt -> /opt/module/test.txt

    创建一个软链接
    [atguigu@hadoop103 opt]$ ln -s /opt/module/hadoop-2.7.2/ /opt/software/hadoop

    cd不加参数进入是软链接的地址
    [atguigu@hadoop103 software]$ cd hadoop
    [atguigu@hadoop103 hadoop]$ pwd
/opt/software/hadoop

    cd加参数进入是实际的物理地址
    [atguigu@hadoop103 software]$ cd -P hadoop
    [atguigu@hadoop103 hadoop-2.7.2]$ pwd
    /opt/module/hadoop-2.7.2


history查看所敲命令历史

    1)基本语法:
        history     
    2)案例
    [root@hadoop106 test1]# history


时间日期类

1)基本语法

date [OPTION]... [+FORMAT]

date显示当前时间

    1)基本语法:
        (1)date                             (功能描述:显示当前时间)
        (2)date +%Y                         (功能描述:显示当前年份)
        (3)date +%m                         (功能描述:显示当前月份)
        (4)date +%d                         (功能描述:显示当前是哪一天)
        (5)date +%Y%m%d   date +%Y/%m/%d …  (功能描述:显示当前年月日各种格式 )
        (6)date "+%Y-%m-%d %H:%M:%S"        (功能描述:显示年月日时分秒)

    2)案例
    [root@hadoop106 /]# date
    20170619日 星期一 20:53:30 CST
    [root@hadoop106 /]# date +%Y%m%d
    20170619
    [root@hadoop106 /]# date "+%Y-%m-%d %H:%M:%S"
    2017-06-19 20:54:58

date显示非当前时间
    1)基本语法:
        (1)date -d '1 days ago'     (功能描述:显示前一天日期)
        (2)date -d yesterday +%Y%m%d    (同上)
        (3)date -d next-day +%Y%m%d (功能描述:显示明天日期)
        (4)date -d 'next monday'            (功能描述:显示下周一时间)
    2)案例:
        [root@hadoop106 /]# date -d '1 days ago'
        20170618日 星期日 21:07:22 CST
        [root@hadoop106 /]# date -d next-day +%Y%m%d
        20170620
        [root@hadoop106 /]# date -d 'next monday'
        20170626日 星期一 00:00:00 CST

date设置系统时间

    1)基本语法:
        date -s 字符串时间
    2)案例
        [root@hadoop106 /]# date -s "2017-06-19 20:52:18"


cal查看日历
    1)基本语法:
    cal [选项]            (功能描述:不加选项,显示本月日历)
        选项:
            -3 ,显示系统前一个月,当前月,下一个月的日历
            具体某一年,显示这一年的日历。
    2)案例:
    [root@hadoop106 /]# cal
    [root@hadoop106 /]# cal -3
    [root@hadoop106 /]# cal 2016
配置网络ip地址

查看当前ip基本语法:
    [root@hadoop102 /]# ifconfig


2)修改IP地址
[root@hadoop102 /]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
需要修改的内容有5项:
IPADDR=192.168.11.106
GATEWAY=192.168.11.2
ONBOOT=yes
BOOTPROTO=static
DNS1=8.8.8.8
1)修改前

这里写图片描述


2)修改后

这里写图片描述

:wq  保存退出
3)执行service network restart

4)如果报错,reboot,重启虚拟机
配置主机名

0)查看主机名基本语法:
    [root@hadoop102 /]#hostname

VI/VIM编辑器

概述

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
    Vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
    简单的来说vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的一项很好用的工具。连vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。


一般模式
    以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。

    常用语法

    1)yy        (功能描述:复制光标当前一行)
       y数字y (功能描述:复制一段(从第几行到第几行))
    2)p     (功能描述:箭头移动到目的行粘贴)
    3)u     (功能描述:撤销上一步)
    4)dd        (功能描述:删除光标当前行)
    d数字d    (功能描述:删除光标(含)后多少行)
    5)x     (功能描述:删除一个字母,相当于del)
       X        (功能描述:删除一个字母,相当于Backspace)

    6)yw        (功能描述:复制一个词)
    7)dw        (功能描述:删除一个词)
    8shift+^   (功能描述:移动到行头)
    9shift+$  (功能描述:移动到行尾)
    101+shift+g        (功能描述:移动到页头,数字)
    11shift+g          (功能描述:移动到页尾)
    12)数字+shift+g   (功能描述:移动到目标行)

编辑模式

    在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。

    注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

    常用语法
        1)进入编辑模式
            (1)i    当前光标前
            (2)a    当前光标后
            (3)o    当前光标行的下一行

        2)退出编辑模式
            按『Esc』键

指令模式

    在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。
    在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!
    常用语法
        1)基本语法
            (1): 选项
                选项:
                  w 保存
                  q 退出
                  !  感叹号强制执行
            (2)/  查找,/被查找词,n是查找下一个,shift+n是往上查找
            (3)?  查找,?被查找词,n是查找上一个,shift+n是往下查找

        2)案例
            :wq!        强制保存退出

文件权限

文件属性
    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组。

    1)从左到右的10个字符表示:
        如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:
            (11首位表示类型
                在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
                 - 代表文件
                 d 代表目录
                 c 字符流,装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
                 s socket
                 p 管道
                 l 链接文档(link file);
                 b 设备文件,装置文件里面的可供储存的接口设备(可随机存取装置)
            (2)第2-4位确定属主(该文件的所有者)拥有该文件的权限。---User3)第5-7位确定属组(所有者的同组用户)拥有该文件的权限,---Group4)第8-10位确定其他用户拥有该文件的权限 ---Other
             (5) 第11位:链接数
             (6) 第12位:文件拥有者
             (7) 第13位:用户组
             (8) 第14位:文件大小
             (8) 第15位:创建时间
             (9) 第16位: 文件名称

这里写图片描述

    2)rxw作用文件和目录的不同解释
        (1)作用到文件:
            [ r ]代表可读(read): 可以读取,查看
            [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
            [ x ]代表可执行(execute):可以被系统执行
        (2)作用到目录:
            [ r ]代表可读(read): 可以读取,ls查看目录内容
            [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
            [ x ]代表可执行(execute):可以进入该目录

这里写图片描述


chmod改变权限
    1)基本语法:
        chmod  [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421 ]  [文件或目录] 
    2)功能描述
        改变文件或者目录权限
        文件: r-查看;w-修改;x-执行文件
        目录: r-列出目录内容;w-在目录中创建和删除;x-进入目录
        删除一个文件的前提条件:该文件所在的目录有写权限,你才能删除该文件。
    3)案例
        [root@hadoop106 test1]# chmod u+x test1.java
        [root@hadoop106 test1]# chmod g+x test1.java
        [root@hadoop106 test1]# chmod o+x test1.java
        [root@hadoop106 test1]# chmod a+x test1.java
        [root@hadoop106 test1]# chmod 777 test1.java
        [root@hadoop106 test1]# chmod -R 777  testdir

chown改变所有者
    1)基本语法:
        chown [最终用户] [文件或目录]        (功能描述:改变文件或者目录的所有者)
    2)案例
        [root@hadoop106 test1]# chown atguigu:atguigu test1.java 
        [root@hadoop106 test1]# chown atguigu test1.java 
        [root@hadoop106 test1]# ls –al
        -rwxr-xr-x. 1 atguigu atguigu  551 523 13:02 test1.java

这里写图片描述

chgrp改变所属组
    1)基本语法:
        chgrp [最终用户组] [文件或目录]   (功能描述:改变文件或者目录的所属组)
    2)案例
        [root@hadoop106 test1]# chgrp atguigu test1.java

        [root@hadoop106 test1]# ls -al
        -rwxr-xr-x. 1 root atguigu  551 523 13:02 test1.java

su 切换用户
    1)基本语法:
        su –username            (功能描述:切换用户)
    2)案例
        [root@hadoop101 atguigu]# su atguigu
        [atguigu@hadoop101 ~]$

        [atguigu@hadoop101 ~]$ su root
        密码:
        [root@hadoop101 atguigu]#

磁盘分区

fdisk查看分区 
    1)基本语法:
        fdisk –l            (功能描述:查看磁盘分区详情)
        注意:在root用户下才能使用
    2)案例
        [root@hadoop101 /]# fdisk -l

        Disk /dev/sda: 21.5 GB, 21474836480 bytes
        255 heads, 63 sectors/track, 2610 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x0005e654

           Device Boot      Start         End      Blocks   Id  System
        /dev/sda1   *           1          26      204800   83  Linux
        Partition 1 does not end on cylinder boundary.
        /dev/sda2              26        1332    10485760   83  Linux
        /dev/sda3            1332        1593     2097152   82  Linux swap / Solaris


df查看硬盘 
    1)基本语法:
        df  参数      (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
        参数:
        -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
        -k :以 KBytes 的容量显示各文件系统;
        -m :以 MBytes 的容量显示各文件系统;
        -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
        -H :以 M=1000K 取代 M=1024K 的进位方式;
        -T :显示文件系统类型,连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
        -i :不用硬盘容量,而以 inode 的数量来显示
    2)案例
        [root@hadoop106 ~]# df -h
        Filesystem      Size  Used Avail Use% Mounted on
        /dev/sda2        15G  3.5G   11G  26% /
        tmpfs           939M  224K  939M   1% /dev/shm
        /dev/sda1       190M   39M  142M  22% /boot


mount/umount挂载/卸载

    对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构
    Linux中每个分区都是用来组成整个文件系统的一部分,她在用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得。

    1)挂载光盘语法:
        mount [-t vfstype] [-o options] device dir
        (1)-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。
            常用类型有:
            光盘或光盘镜像:iso9660
            DOS fat16文件系统:msdos
            Windows 9x fat32文件系统:vfat
            Windows NT ntfs文件系统:ntfs
            Mount Windows文件网络共享:smbfs
            UNIX(LINUX) 文件网络共享:nfs
        (2)-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
               loop:用来把一个文件当成硬盘分区挂接上系统
              ro:采用只读方式挂接设备
              rw:采用读写方式挂接设备
              iocharset:指定访问文件系统所用字符集
        (3)device 要挂接(mount)的设备
        (4)dir设备在系统上的挂接点(mount point)
    2)案例
    (1)光盘镜像文件的挂载
         [root@localhost ~]# mkdir /mnt/cdrom/                     建立挂载点
         [root@localhost ~]# mount -t iso9660 –o rw /dev/cdrom /mnt/cdrom/     设备/dev/cdrom挂载到 挂载点 :  /mnt/cdrom中
        [root@hadoop101 ~]# ll /mnt/cdrom/
    3)卸载光盘语法:
        [root@localhost ~]# umount 设备文件名或挂载点
    4)案例
        [root@localhost ~]# umount /mnt/cdrom
    5)开机自动挂载语法:
        [root@hadoop101 ~]# vi /etc/fstab
        添加红框中内容,保存退出。

这里写图片描述

搜索查找

find 查找文件或者目录
    1)基本语法:
        find [搜索范围] [匹配条件]
    2)案例
        (1)按文件名:根据名称查找/目录下的filename.txt文件。
            [root@hadoop106 ~]# find /opt/ -name *.txt2)按拥有者:查找/opt目录下,用户名称为-user的文件
            [root@hadoop106 ~]# find /opt/ -user atguigu3)按文件大小:在/home目录下查找大于200m的文件(+n 大于  -n小于   n等于)
            [root@hadoop106 ~]find /home –size +204800


grep 在文件内搜索字符串匹配的行并输出
    1)基本语法
        grep+参数+查找内容+源文件
        参数:
        -c:只输出匹配行的计数。
        -I:不区分大小写(只适用于单字符)。
        -h:查询多文件时不显示文件名。
        -l:查询多文件时只输出包含匹配字符的文件名。
        -n:显示匹配行及行号。
        -s:不显示不存在或无匹配文本的错误信息。
        -v:显示不包含匹配文本的所有行。
    2)案例
        [root@hadoop106 opt]# ls | grep -n test
        4:test1
        5:test2

which 文件搜索命令
    1)基本语法:
        which 命令        (功能描述:搜索命令所在目录及别名信息)
    2)案例
        [root@hadoop101 opt]# which ls
        /bin/ls

进程线程类
    进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

ps查看系统中所有进程
    1)基本语法:
        ps –aux     (功能描述:查看系统中所有进程)
    2)功能说明
        USER:该进程是由哪个用户产生的
        PID:进程的ID号
        %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
        %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
        VSZ:该进程占用虚拟内存的大小,单位KB;
        RSS:该进程占用实际物理内存的大小,单位KB;
        TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
        STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
        START:该进程的启动时间
        TIME:该进程占用CPU的运算时间,注意不是系统时间
        COMMAND:产生此进程的命令名
    3)案例
        [root@hadoop102 datas]# ps –aux

这里写图片描述

top查看系统健康状态
    1)基本命令
        top [选项]    
        (1)选项:
            -d 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
            -i:使top不显示任何闲置或者僵死进程。
            -p:通过指定监控进程ID来仅仅监控某个进程的状态。
            -s : 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
        (2)操作选项:
            P:      以CPU使用率排序,默认就是此项 
            M:      以内存的使用率排序 
            N:      以PID排序 
            q:      退出top
    2)案例
        [root@hadoop101 atguigu]# top –d 1
        [root@hadoop101 atguigu]# top -i
        [root@hadoop101 atguigu]# top –p 2575
        [root@hadoop101 atguigu]# top –s

    执行上述命令后,可以按P、M、N对查询出的进程结果进行排序。


pstree查看进程树
    1)基本语法:
        pstree [选项]
        选项
          -p:  显示进程的PID 
          -u:  显示进程的所属用户
    2)案例:
        [root@hadoop102 datas]# pstree -u
        [root@hadoop102 datas]# pstree -p

kill终止进程
    1)基本语法:
        kill -9 pid进程号
        选项
            -9 表示强迫进程立即停止
    2)案例:
        启动mysql程序
        切换到root用户执行
        [root@hadoop102 桌面]# kill -9 5102

netstat显示网络统计信息
    1)基本语法:
        netstat –anp(功能描述:此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容)
        选项:
            -an 按一定顺序排列输出
            -p  表示显示哪个进程在调用
            -nltp 查看tcp协议进程端口号
    2)案例

    查看端口50070的使用情况

    [root@hadoop106 hadoop-2.7.2]# netstat -anp | grep 50070
    tcp     0   0 0.0.0.0:50070    0.0.0.0:*          LISTEN      6816/java  
                           端口号                                进程号

压缩和解压

gzip/gunzip压缩
    1)基本语法:
        gzip+文件     (功能描述:压缩文件,只能将文件压缩为*.gz文件)
        gunzip+文件.gz    (功能描述:解压缩文件命令)
    2)特点:
        (1)只能压缩文件不能压缩目录
        (2)不保留原来的文件
    3)案例
        (1)gzip压缩
            [root@hadoop106 opt]# ls
            test.java
            [root@hadoop106 opt]# gzip test.java
            [root@hadoop106 opt]# ls
            test.java.gz2)gunzip解压缩文件
            [root@hadoop106 opt]# gunzip test.java.gz 
            [root@hadoop106 opt]# ls
            test.java

zip/unzip压缩
    1)基本语法:
        zip + 参数 + XXX.zip + 将要压缩的内容 (功能描述:压缩文件和目录的命令,window/linux通用且可以压缩目录且保留源文件)
        参数:
            -r 压缩目录
    2)案例:
        (1)压缩 1.txt 和2.txt,压缩后的名称为mypackage.zip 
            [root@hadoop106 opt]# zip test.zip test1.java  test.java 
            adding: test1.java (stored 0%)
            adding: test.java (stored 0%)

            [root@hadoop106 opt]# ls
            test1.java  test.java  test.zip2)解压 mypackage.zip
            [root@hadoop106 opt]# unzip test.zip 
            Archive:  test.zip
             extracting: test1.java              
             extracting: test.java        

            [root@hadoop106 opt]# ls
            test1.java  test.java  test.zip 

tar打包
    1)基本语法:
        tar + 参数 + XXX.tar.gz + 将要打包进去的内容       (功能描述:打包目录,压缩后的文件格式.tar.gz)
        参数:
            -c 产生.tar打包文件
            -v 显示详细信息
            -f 指定压缩后的文件名
            -z 打包同时压缩
            -x 解包.tar文件
    2)案例
    (1)压缩:tar -zcvf  XXX.tar.gz   n1.txt    n2.txt
        压缩多个文件
        [root@hadoop106 opt]# tar -zcvf test.tar.gz test1.java test.java 
        test1.java
        test.java
        [root@hadoop106 opt]# ls
        test1.java  test.java  test.tar.gz 
        压缩目录
        [root@hadoop106 opt]# tar -zcvf test.java.tar.gz test1
        test1/
        test1/hello
        test1/test1.java
        test1/test/
        test1/test/test.java
        [root@hadoop106 opt]# ls
        test1 test.java.tar.gz2)解压:tar -zxvf  XXX.tar.gz
        解压到当前目录
        [root@hadoop106 opt]# tar -zxvf test.tar.gz
        解压到/opt目录
        [root@hadoop106 opt]# tar -zxvf test.tar.gz –C /opt

crond系统定时任务

crond服务管理
    [root@localhost ~]# service crond restart          (重新启动服务)
crontab定时任务设置
    1)基本语法
    crontab [选项]
        选项: 
          -e:    编辑crontab定时任务 
          -l:    查询crontab任务 
          -r:    删除当前用户所有的crontab任务
    2)参数说明
        [root@localhost ~]# crontab -e 

这里写图片描述

rpm

概述
    RPM(RedHat Package Manager),Rethat软件包管理工具,类似windows里面的setup.exe 是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
    RPM包的名称格式
    Apache-1.3.23-11.i386.rpm
        -   “apache” 软件名称
        -   “1.3.23-11”软件的版本号,主版本和此版本
        -   “i386”是软件所运行的硬件平台
        -   “rpm”文件扩展名,代表RPM包


常用命令
    查询
        1)基本语法:
            rpm –qa             (功能描述:查询所安装的所有rpm软件包)
            过滤
            rpm –qa | grep rpm软件包
        2)案例
            [root@hadoop100 Packages]# rpm -qa |grep firefox 
            firefox-45.0.1-1.el6.centos.x86_64

    卸载
        1)基本语法:
            (1)rpm -e RPM软件包   
            或者(2) rpm -e --nodeps 软件包  
            --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
        2)案例
            [root@hadoop100 Packages]# rpm -e firefox
    安装
        1)基本语法:
            rpm –ivh RPM包全名
            -i=install,安装
            -v=verbose,显示详细信息
            -h=hash,进度条
            --nodeps,不检测依赖进度

        2)案例
            [root@hadoop100 Packages]# pwd
            /media/CentOS_6.8_Final/Packages

            [root@hadoop100 Packages]# rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm 
            warning: firefox-45.0.1-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
            Preparing...                ########################################### [100%]
               1:firefox                ########################################### [100%]

Shell编程

概述
    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

这里写图片描述

Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell是解释执行的脚本语言,在Shell中可以调用Linux系统命令。

shell脚本的执行方式
        1) echo输出命令
            (1) 基本语法:
                echo [选项][输出内容]
                选项:
                    -e: 支持反斜线控制的字符转换

这里写图片描述

            (2)案例
            [atguigu@hadoop102 sbin]$ echo "helloworld"
            helloworld
        2)第一个Shell脚本
            (1)需求:创建一个Shell脚本,输出helloworld
            (2)实操:
                [atguigu@hadoop102 datas]$ touch helloworld.sh
                [atguigu@hadoop102 datas]$ vim helloworld.sh

                在helloworld.sh中输入如下内容
                #!/bin/bash   
                echo "helloworld"
        3)脚本的常用执行方式
            第一种:输入脚本的绝对路径或相对路径
                (1)首先要赋予helloworld.sh 脚本的+x权限
                [atguigu@hadoop102 datas]$ chmod 777 helloworld.sh
                (2)执行脚本
                    /root/helloWorld.sh
                    ./helloWorld.sh
            第二种:bash或sh+脚本(不用赋予脚本+x权限)
                sh /root/helloWorld.sh
                sh helloWorld.sh

shell中的变量
    1)Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看系统变量。
    2)系统变量:$HOME$PWD$SHELL$USER等等
        输出变量的方式:echo $HOME
    3)显示当前shell中所有变量:set

    定义变量
        1)基本语法:
            变量=值
        2)变量定义规则
            (1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
            (2)等号两侧不能有空格
            (3)变量名称一般习惯为大写
            (4)双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意 比如说 
                SJ="song\tjiang"
                echo -e $SJ > song jiang

                echo -e $SJ > song\tjiang

        3)案例
            (1)定义变量A
                A=82)撤销变量A
                unset A       
            (3)声明静态的变量B=2,不能unset
                readonly B=24)可把变量提升为全局环境变量,可供其他shell程序使用
                export 变量名  

    将命令的返回值赋给变量
        A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
        A=$(ls -la) 等价于反引号

    设置环境变量
        1)基本语法:
            (1export 变量名=变量值   (功能描述:设置环境变量的值)
            (2echo $变量名           (功能描述:查询环境变量的值)
            (3source 配置文件          (功能描述:让修改后的配置信息立即生效)
        2)案例:
            (1)在/etc/profile文件中定义JAVA_HOME环境变量
            export JAVA_HOME=/opt/module/jdk1.7.0_79
            export PATH=$PATH:$JAVA_HOME/bin

            (2)查看环境变量JAVA_HOME的值
            [atguigu@hadoop102 datas]$ echo $JAVA_HOME
            /opt/module/jdk1.7.0_79

    位置参数变量
        1)基本语法
            $n	(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
            $*	(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
            $@	(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
            $# (功能描述:这个变量代表命令行中所有参数的个数)
        2)案例
            (1)计算输入的参数1和参数2的两个数的和,并输出到控制台
                #!/bin/bash 
                num1=$1 
                num2=$2 
                sum=$(( $num1 + $num2)) 
                #变量sum的和是num1加num2 
                echo $sum 
                #打印变量sum的值2)打印输入的参数总数、所有参数
                #!/bin/bash 
                echo "A total of $# parameters" 
                #使用$#代表所有参数的个数 
                echo "The parameters is: $*" 
                #使用$*代表所有的参数 
                echo "The parameters is: $@" 
                #使用$@也代表所有参数 3)$*与$@的区别
                #!/bin/bash 
                for i in "$*" 
                #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次 
                        do 
                                echo "The parameters is: $i" 
                        done 
                                x=1 
                                for y in "$@" 
                        #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次 
                        do 
                                    echo "The parameter$x is: $y" 
                                    x=$(( $x +1 )) 
                        done
            a)$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2$n的形式输出所有参数
            b)当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数

    预定义变量
        1)基本语法:
            $?     (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
            $$		(功能描述:当前进程的进程号(PID))
			$!		(功能描述:后台运行的最后一个进程的进程号(PID))
		2)案例
			#!/bin/bash 
			#输出当前进程的PID,这个PID就是当前这个脚本执行时,生成的进程的PID
			echo "The current process is $$" 

            #使用find命令在root目录下查找hello.sh文件,符号&的意思是把命令放入后台执行
            find /root -name hello.sh & 

            echo "The last one Daemon process is $!"

            echo "$?"

运算符
    1)基本语法:
        (1)“$((运算式))”或“$[运算式]”
        (2)expr m + n 
            注意expr运算符间要有空格
    2)案例:计算(2+3)X4的值
        (1)采用$[运算式]方式
            [root@hadoop102 datas]# S=$[(2+3)*4]
            [root@hadoop102 datas]# echo $S2)expr分布计算
            S=`expr 2 + 3`
            expr $S \* 43)expr一步完成计算
            expr `expr 2 + 3` \* 4
            echo `expr \`expr 2 + 3\`\*4`

条件判断

判断语句
    1)基本语法:
        [ condition ](注意condition前后要有空格)
        #非空返回true,可使用$?验证(0为true,>1为false)

    2)案例:
        [atguigu]   返回true
        []          返回false
        [condition] && echo OK || echo notok            条件满足,执行后面的语句

常用判断条件
    1)两个整数之间比较
        = 字符串比较
        -lt 小于
        -le 小于等于
        -eq 等于
        -gt 大于
        -ge 大于等于
        -ne 不等于
    2)按照文件权限进行判断
        -r 有读的权限
        -w 有写的权限
        -x 有执行的权限

    3)按照文件类型进行判断
        -f 文件存在并且是一个常规的文件
        -e 文件存在
        -d 文件存在并是一个目录

    4)案例
        (1)23是否大于等于22
        [root@localhost ~]# [ 23 -ge 22 ]
        (2)student.txt是否具有写权限
        [root@localhost ~]# [ -w student.txt ]
        (3)/root/install.log目录中的文件是否存在
        [root@localhost ~]# [ -e /root/install.log ]

流程控制

if判断
    1)基本语法:
        if [ 条件判断式 ];then 
          程序 
        fi 

        或者 
        if [ 条件判断式 ] 
          then 
            程序 
        fi
            注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
    2)案例
        #!/bin/bash
        read –p “please input your name:” NAME
        #printf ‘%s\n’ $NAME
        if[ $NAME = root ]
        then 
            echo “hello ${NAME}, welcome !”
        elif [ $NAME = atguigu]
            then
                echo “hello ${NAME}, welcome !”
        else
            echo “sorry ”
        fi



case语句

    1)基本语法:
        case $变量名 in 
          "值1") 
            如果变量的值等于值1,则执行程序1 
            ;; 
          "值2") 
            如果变量的值等于值2,则执行程序2 
            ;; 
          …省略其他分支… 
          *) 
            如果变量的值都不是以上的值,则执行此程序 
            ;; 
        esac
    2)案例
        case $1 in
        "1")
            echo1”
        ;;
        "2")
            echo2”
        ;;
        *)
            echo “other”
        ;;
        esac


for循环
    1)基本语法1for 变量 in123do 
        程序 
      done

    2)案例:
    (1)打印时间
        #!/bin/bash 
        #打印时间 

        for time in morning noon afternoon evening 
            do 
              echo "This time is $time!" 
            done 

    3)基本语法2for (( 初始值;循环控制条件;变量变化 )) 
          do 
            程序 
          done

    4)案例
        (1)从1加到100
            #!/bin/bash 
            #从1加到100
            s=0 
            for (( i=1;i<=100;i=i+1 )) 
            do 
                    s=$[$s+$i] 
            done 
            echo "The sum is : $s" 

    while循环
        1)基本语法:
            while [ 条件判断式 ] 
              do 
                程序 
              done

        2)案例
            (1)从1加到100
            #!/bin/bash 
            #从1加到100 

            i=1 
            s=0 
            while [ $i -le 100 ] 
            #如果变量i的值小于等于100,则执行循环 
            do 
                s=$[$s+$i] 
                i=$[$i+1] 
            done 
            echo "The sum is: $s"

read读取控制台输入

1)基本语法:
    read(选项)(参数)
    选项:
    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒)。
    参数  
        变量:指定读取值的变量名
2)案例
    读取控制台输入的名称
    [atguigu@hadoop101 etc]$ read -p "please input your name:" NAME
    please input your name:lilei
    [atguigu@hadoop101 etc]$ echo $NAME
    lilei

函数

    系统函数
        1basename基本语法
        basename [pathname] [suffix]        
        basename [string] [suffix]      (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
        选项:
        suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
        2)案例
        [atguigu@hadoop102 opt]$ basename /opt/test.txt 
        test.txt
        [atguigu@hadoop102 opt]$ basename /opt/test.txt .txt
        test
        3dirname基本语法
            dirname 文件绝对路径      (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
        4)案例
            [atguigu@hadoop102 opt]$ dirname /opt/test.txt 
        /opt

自定义函数

    1)基本语法:
        [ function ] funname[()]
        {
            Action;
            [return int;]
        }

        function start() / function start / start()

    注意:
        (1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。
        (2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)

    2)案例
        (1)打印出比你输入小的所有数(单参)
        #!/bin/bash   
        function LoopPrint()    
        {    
            count=0;    
            while [ $count -lt $1 ] ;    
            do    
                echo $count;   
                expr ++count;  
                sleep 1;    
            done    
            return 0;    
        } 
        read -p "Please input the number: " n;    
        LoopPrint $n;  


        (2)多参
        #!/bin/bash   
        function LoopPrint()    
        {    
            echo $2  
            count=0;    
            while  [ $count -lt $1 ];    
            do    
                echo $count;    
                expr ++count;    
                sleep 1;    
            done    
            return 0;    
        }  
        read -p "Please input the num1: " n;    
        read -p "Please input the num2: " m;  
        LoopPrint $n $m;




        #!/bin/bash   
        function sum(){    
                s=0 
                s=$[$1+$2]
                echo "$s"
        }
        read -p "input num1 " NUM1
        read -p "input num2 " NUM2
        sum $NUM1 $NUM2;

yum仓库配置

 概述
    YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
    在Linux上使用源码的方式安装软件非常满分,使用yum可以简化安装的过程

yum的常用命令
    1)基本语法:
        yum install -y httpd            (功能描述:安装httpd并确认安装)
        yum list                    (功能描述:列出所有可用的package和package组)
        yum clean all               (功能描述:清除所有缓冲数据)
        yum deplist httpd           (功能描述:列出一个包所有依赖的包)
        yum remove httpd            (功能描述:删除httpd)
    2)案例实操
        yum install -y tree


关联网络yum源
    1)前期文件准备
        (1)前提条件linux系统必须可以联网
        (2)在Linux环境环境中访问该网络地址:http://mirrors.163.com/.help/centos.html,在使用说明中点击CentOS6->再点击保存

这里写图片描述

        (3)查看文件保存的位置

这里写图片描述

                在打开的终端中输入如下命令,就可以找到文件的保存位置。

            [atguigu@hadoop101 下载]$ pwd

            /home/atguigu/下载
    2)替换本地yum文件
        (1)把下载的文件移动到/etc/yum.repos.d/目录
            [root@hadoop101 下载]# mv CentOS6-Base-163.repo /etc/yum.repos.d/2)进入到/etc/yum.repos.d/目录
            [root@hadoop101 yum.repos.d]# pwd
            /etc/yum.repos.d3)用CentOS6-Base-163.repo替换CentOS-Base.repo
            [root@hadoop101 yum.repos.d]# mv CentOS6-Base-163.repo  CentOS-Base.repo
    3)安装命令
        (1)[root@hadoop101 yum.repos.d]#yum clean all2)[root@hadoop101 yum.repos.d]#yum makecache
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值