=======================================linux===========================================
1 用户管理
2 常用目录
3 linux下的文件和目录权限
4 授权管理
5 文件和目录管理
6 关于PATH
7 vi 的使用
8 网络管理
==========================================================================================
==== 1 用户管理
必须是root用户才可以进行用户的创建,删除等操作

who 可以查看当前有哪些用户处理登录状态

useradd 用户名
创建完用户以后,会在 /home目录下同时创建用户目录
比如
useradd cat ,会创建cat用户,并且在 /home下创建 cat目录

passwd 用户名
passwd cat 给cat用户改密码,然后它会提示输入密码

userdel 用户
删除用户
userdel cat 删除用户以后,它的用户目录还存在
userdel -r cat 删除用户以后,它的用户目录也会删除

==== 2 常用目录
/ 根目录,所有的目录都是有它衍生的
lrwxrwxrwx. 1 root root 7 12月 9 10:58 bin -> usr/bin // ***** 装的都是命令,可以被root和一般用户使用 cat, date, mv , mkdir, pwd 等等
dr-xr-xr-x. 5 root root 4096 12月 9 11:04 boot //启动相关内容
drwxr-xr-x. 20 root root 3340 12月 10 08:45 dev //设备文件
drwxr-xr-x. 75 root root 8192 12月 10 08:58 etc // ***** 系统的主要配置文件 比如ip,主机名等等
drwxr-xr-x. 3 root root 19 12月 10 08:58 home //***** 普通用户的家目录,都在home下
lrwxrwxrwx. 1 root root 7 12月 9 10:58 lib -> usr/lib //开机用的函数库等
lrwxrwxrwx. 1 root root 9 12月 9 10:58 lib64 -> usr/lib64 //开机用的函数库等
drwxr-xr-x. 2 root root 6 11月 5 2016 media //可移除装置,比如光盘,DVD等要挂载这个目录上
drwxr-xr-x. 2 root root 6 11月 5 2016 mnt //也是用于挂载某些装置的
drwxr-xr-x. 2 root root 6 11月 5 2016 opt //第三方协力软件放到这
dr-xr-xr-x. 115 root root 0 12月 10 08:45 proc //
dr-xr-x---. 2 root root 135 12月 9 13:52 root //***** root用户的家目录
drwxr-xr-x. 24 root root 700 12月 10 08:45 run //系统开机的时候产生的信息
lrwxrwxrwx. 1 root root 8 12月 9 10:58 sbin -> usr/sbin /里面是一些用来设置系统环境的命令,要有一定的权限才能执行
drwxr-xr-x. 2 root root 6 11月 5 2016 srv //一些网络服务相关的东西
dr-xr-xr-x. 13 root root 0 12月 10 08:45 sys //系统相关
drwxrwxrwt. 10 root root 4096 12月 10 08:46 tmp //***** 临时目录
drwxr-xr-x. 13 root root 155 12月 9 10:58 usr //***** 用户安装的一些软件放在这里
drwxr-xr-x. 19 root root 267 12月 9 12:34 var //装的是一些容易发生变动的内容

 bin  //命令
 etc  //配置
 home //普通用户的家
 tmp  //临时
 usr  //软件

==== 3 linux下的文件和目录权限
linux 下的所有的文件,都有三个属性
所有者, 所属组, 其他组

    >ls -al /etc 
       得到的内容:

 文件类型与权限 连接数   所有者   所属组    大小  日期            名件
            rwxr-xr-x.  75             root             root     8192   12月 10 08:58     .
            dr-xr-xr-x. 18             root             root      237   12月  9 14:17     ..
            -rw-r--r--.  1             root             root       16   12月  9 11:03     adjtime
            -rw-r--r--.  1             root             root     1518   6月   7 2013         aliases
            -rw-r--r--.  1             root             root    12288   12月  9 12:35     aliases.db
            drwxr-xr-x.  2             root             root      236   12月  9 10:59     alternatives
            -rw-------.  1             root             root      541   8月   3 2017         anacrontab
            -rw-r--r--.  1             root             root       55   3月   1 2017         asound.conf
            drwxr-x---.  3           root             root       43   12月  9 10:59     audisp
            drwxr-x---.  3           root             root       83   12月  9 12:34     audit
            ....


         drwxr-xr-x 的说明  
         ==>
         d  rwx  r-x  r-x 

         (1) d  代表它是一个目录
             -  代表它是一个普通文件
             l  代表它是一个链接(快捷方式)

         (2) rwx 文件的所有者对该文件所具有的权限 r 可读 ,w 可写, x 可执行
         (3) r-x 文件所属组的其他成员对该文件所具有的权限
         (4) r-x 其他成员对该文件所具有的权限


         //例子 下面的目录, root能干什么  admin能干什么
   drwxr-xr-x.   2 root root    6 12月  9 14:47 tools

   d  rwx    r-x   r-x.   2 root root
   对于root来说,能进入这个目录,能增加文件,删除文件
   对于 admin 只有 r-x  , 能进入这个目录,能读取目录里的内容,但不能进行增,删等动作

==== 4 授权管理
1) chmod 改变权限
chmod 直接改变文件或目录的权限

                   //例
                   >chmod 755 hello.java  给  hello.java 授 777这个权限   ==> rwx(7) rwx(7) rwx(7)
                    r ==> 4
                    w ==> 2
                    x ==> 1

                   //例
                   >chmod 755  hello.java  ==> rwx r-x   r-x

                   //例
                   >chmod  u=rwx ,g=rx, o=r /hello.java 

                   //例
                   >chmod u-x ,g+w hello.java
                   >chmod a+r hello.java 给所有的用户,在  hello.java 这个文件加上一个r权限       

    2) chown 改变所有者
                 //例 
                 >chown admin tools  将tools 这个文件的所有者改成admin
                 >chown -R admin  cluster  将cluster 和里面所有的内容的所有者都改成admin

    3) chgrp 改变所属组
                     //例
                     chown -R admin cluster  把 cluster的所属组改成 admin

     关于文件和目录的 rwx 的意义

      文件 
         r 可以读这个文件  cat a.txt
         w 可以编辑这个文件  vi a.txt   //但不包扩删除这个文件
         x 可以执行 

      目录
        r 可以读取目录结构,可以查询目录下有哪些文件,用 ls 显示
        w 建文件,建目,删除文件,移动文件或目录
        x 可以进入 cd 

==== 5 文件和目录管理
绝对路径和相对路径

    . 代表本目录
    .. 代表上级目录
    ~ 代表家目录

    相对路径的写法:
     > cd cluster   //进入到当前目录下的cluster目录
     > cd ..  //进入上级
     > cd ../root  //进入到上级目录的root目录

    绝对路径的写法:
     > cd  /dev
     > cd  /etc/profil.d/
     > cd  /etc/sysconfig/network-scripts/


     几个和目录相关的命令
             cd
             pwd 
             mkdir //建目录
                   >cd /tmp
                   >mkdir aaa  //ok
                   >mkdir aaa/bbb/ccc  //不能直接这么建,要先 mkdir aaa/bbb
                   >mkdir -p xx/yy/zz/oo  //用了 -p 参数就可以建多级参数

                   附: yum install 是从远程安装软件 yum install tree 

             rmdir //删除目录 (要求目录为空) 

             rm //移除文件的, 可以用 -r 参数, 会把里面的文件和目录全删除
               >rm -rf xx   //把 xx目录里的内容连同xx 都删除

     几个和文件相关的命令
       ls  //例出文件
         -a  全部文件,包含隐含文件
         -h  以比较易读的方式把文件的大小显示出来


       cp //复制
        > cp a.xml  a_back.xml    //所a.xml 复制一份到当前路径下
        > cp *.xml  /tools/hadoop  //把所有以 .xml 结尾的文件复制到 /tools/hadoop 目录


       rm //移除
         -i 输出提示信息
         -f 强制删除 //危险
         -r 递归删除 //危险
         >rm *.xml  可以用通配符
         >rm java.* 

       mv //移动

         mv a_back.xml  tmp 
         mv a.exe b.exe c.exe /tools 
         mv tools mytools //给 tools重命名成  mytools

     文件内容的查看
      cat  //查看文件内容
        >cat ifcfg-ens33
        >cat -n ifcfg-ens33

      tac //查看文件内容,倒着看

      nl //查看文件的内容,带行号

      more //一页一页的查看

      less //一页一页的查看

==== 6 关于PATH
ROOT 用户:

    echo $PATH
       /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 
       ==>
       /usr/local/sbin
       /usr/local/bin
       /usr/sbin
       /usr/bin
       /root/bin

            //例子
            将 cat 这个文件 由 /bin目录,移动到 /tmp
            > mv /bin/cat /tmp

            进行完上面的操作以后,发现在任何地方执行 cat 都不好用了,包扩 在/tmp 也不行

            >cd  /tmp
            >./cat a.xml   //可以, 这是以相对路径的方式执行

            > /tmp/cat /sheep.java  //可以,绝对路径的方式

            也可以将 /tmp 放到 PATH 中
            > PATH=$PATH:/tmp
            > echo $PATH
              可以发现,在任何路径下都可以执行cat了

    别忘了再把cat命令搬回来
    > mv /tmp/cat /bin

        指令的搜索顺序
          1) 以相对路径或绝对路径的,是最优先的 
             /tmp/cat 
             ./cat 

          2) 由 alias 找到该命来执行

          3) 由 bash 内建的命令来执行

          4) 按path指定的路径来找这个命令

          总之, 绝对相对路径是最优先的

==== 7 vi 的使用
vi
vim

    vi的  编辑状态为三种模式
    1) 一般指令模式
       用vi 直接打开一个文件,就处于这个模式,可以移动光标,删除,复制粘贴等, 但是不能编辑

    2)编辑模式
      按 i  进入编辑模式,可以按esc退出

    3) 指令模式
        在一般模式下,按下 :    这时,光标会移动到屏幕最后一行,可以输入命令

        关于保存的指令

        :w 保存文件,但不退出
        :wq 保存并退出
        :q 退出,但不保存
        :q! 强制退出
        :wq! 强制保存并退出

        :w fileName 相当于另存为
        :set nu 显示行号
        :set nonu 去掉行号

        有时候,不知道什么原因被锁住了,可以按 ctl +q 

        =====一般模式式的快捷键 =====    
          ctl +f 向上翻页
          ctl +b 向下翻页
          可以用数字配合方向键 
          40 -> 向左移动40个, 其他的也类似, //很好用 **
          n +数字 +空格 光标会向右移动n个位置 //好用 **
          0 或 home移动到这一行的最前面   //好用 **
          $ 或 end 移动到这一行的最后 //好用
          H,M,L (必须大写) 光标移动到当前页面的 最前, 中间,最后 一行的第一个字符  //好用
          G 移到最后一行 //好用
          gg (小写) 移到第一行 //好用
          N (大小写不分)回车 光标向下移动n行 //好用
          /void 查询void这个字符串,实测发现找到全部 //好用
          ?void 向上寻找 实测和上面的效果相同

          :1$s/main/xxx/g 把全部的 main 换成 xxx 
          :1$s/main/xxx/gc 同上,但每个替换进行之前要确认 //很好用
          x/X 向后/向前 删除一个字符
          dd 删除光标所在一行  //常用
          ndd 删除光标所在的向下n行 //好用
          yy 复制光标所在的那一行
          p/P粘巾
          u 复原前一个操作  //常用
          crtl r 重做前一个动作  //常用
          . 重复前一个操作 //常用

==== 8 网络管理

1) 查看ip
>ifconfig

2) 查看主机名
>hostname

3) 修改主机名
> vi /etc/hostname
> reboot

4) 修改 id 地址
>cd /etc/sysconfig/network-scripts/
>vi ifcfg-ens33

                    TYPE="Ethernet"
                    PROXY_METHOD="none"
                    BROWSER_ONLY="no"
                    BOOTPROTO="none"
                    DEFROUTE="yes"
                    IPV4_FAILURE_FATAL="no"
                    IPV6INIT="yes"
                    IPV6_AUTOCONF="yes"
                    IPV6_DEFROUTE="yes"
                    IPV6_FAILURE_FATAL="no"
                    IPV6_ADDR_GEN_MODE="stable-privacy"
                    NAME="ens33"
                    UUID="33185e43-3225-4a33-a983-153667a2a66a"
                    DEVICE="ens33"
                    ONBOOT="yes"   /*****/
                    IPADDR="192.168.83.100"   /*****/
                    PREFIX="24"  /*****/  24=> 255.255.255.0
                    GATEWAY="192.168.83.2"  /*****/ 默认网关
                    DNS1="114.114.114.114"  /*****/ 
                    IPV6_PRIVACY="no"

    > service network restart  重启网络服务

5) ping 测试网络
   可以按ctl +c 结束


6) 关闭,打开防火墙   
   查看状态
   >systemctl status firewalld.service  查看防火墙状态
                    firewalld.service - firewalld - dynamic firewall daemon
                       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
                       Active: active (running) since 二 2019-12-10 08:45:54 CST; 5h 57min ago   //从active (running)可以看出来,是开着的
                         Docs: man:firewalld(1)
                     Main PID: 705 (firewalld)
                       CGroup: /system.slice/firewalld.service
                               └─705 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

        关掉 
         >systemctl stop firewalld.service
         停了以后,再查看状态 Active: inactive (dead) 证明停了
             执行开机禁用防火墙自启命令  : systemctl disable firewalld.service

        完成



        ============================================================
        关于防火墙的其他命令:

        启动:systemctl start firewalld.service

        防火墙随系统开启启动  : systemctl enable firewalld.service

  启动
         >systemctl start firewalld.service


        禁用     下次再启动电脑,也不可用了
         > systemctl disable firewalld.service


    7) 修改主机名和ip的配置
       >vi /etc/hosts

                127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
                ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
                192.168.83.100 linda