画布 1
Linux
  Linux命令
    文件管理
      cat
        cat 命令用于连接文件并打印到标准输出设备上。
      chmod
        利用 chmod 可以藉以控制文件如何被他人所调用。
      cp
        cp 命令主要用于复制文件或目录。
      more
      less
        cp 命令主要用于复制文件或目录。
      mv
      nl
      rm
      tail
      touch
    文件查找
      find
        find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时，不设置任何参数，则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
      locate
        locate 命令用于查找符合条件的文档，他会去保存文档和目录名称的数据库内，查找合乎范本样式条件的文档或目录。
      which
        which 指令会在环境变量$PATH设置的目录里查找符合条件的文件。
      whereis
        whereis 会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件，或是帮助文件。
    磁盘管理
      cd
      pwd
      mkdir
      rmdir
      ls
      mount
      df
      du
    网络通讯
      ifconfig
      route
      ping
      traceroute
      netstat
      ss
      telnet
      rcp
      scp
    系统管理
      useradd
      userdel
      usermod
      passwd
      su
      sudo
      ps
      kill
    备份压缩
      gzip
      tar
      zip
      unzip
  Shell
    概述
      shell 是什么
        Shell 是一个用 C 语言编写的程序。
        Shell 既是一种命令语言，又是一种程序设计语言。
      模式
        交互模式
          命令行
            user@host:~$ ls
        非交互模式
          sh 脚本
            chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
      常见 shell
        sh
          sh 是 Unix 标准默认的 shell。
        bash
          bash 是 Linux 标准默认的 shell。
        fish
          智能和用户友好的命令行 shell。
        xiki
          使 shell 控制台更友好，更强大。
        zsh
          功能强大的 shell 与脚本语言。
    注释
      以#开头，到行尾结束。
    变量
      局部变量
        仅在某个脚本内部有效的变量。不能被其他的程序和脚本访问。
        用=声明，用$访问
        local 关键字声明属于某个函数的局部变量，变量会在函数结束时消失。
      环境变量
        export 关键字声明对当前 shell 会话内所有的程序或脚本都可见的变量。
      位置参数变量
        位置参数是在调用一个函数并传给它参数时创建的变量。
    数组
      创建数组
        array[0] = val
array[1] = val
array[2] = val
        array=([2]=val [0]=val [1]=val)
        array=(val val val)
      访问数组元素
        ${array[i]}
        ${array[@]:0:2}
      添加元素
        colors=(Orange "${colors[@]}" Banana Cherry)
      删除元素
        unset colors[0]
    运算符
      算数运算符
        +
          加法
          expr $a + $b 结果为 30。
        -
          减法
          expr $a - $b 结果为 -10。
        *
          乘法
          expr $a \* $b 结果为 200。
        /
          除法
          expr $b / $a 结果为 2。
        %
          取余
          expr $b % $a 结果为 0。
        =
          赋值
          a=$b 将把变量 b 的值赋给 a。
        ==
          相等。用于比较两个数字，相同则返回 true。
          [ a == b ] 返回 false。
        !=
          不相等。用于比较两个数字，不相同则返回 true。
          [ a != b ] 返回 true。
      关系运算符
        -eq
          检测两个数是否相等，相等返回 true。
          [ a -eq b ] 返回 false。
        -ne
          检测两个数是否相等，不相等返回 true。
          [ a -ne b ] 返回 true。
        -gt
          检测左边的数是否大于右边的，如果是，则返回 true。
          [ a -gt b ] 返回 false。
        -lt
          检测左边的数是否小于右边的，如果是，则返回 true。
          [ a -lt b ] 返回 true。
        -ge
          检测左边的数是否大于等于右边的，如果是，则返回 true。
          [ a -ge b ] 返回 false。
        -le
          检测左边的数是否小于等于右边的，如果是，则返回 true。
          [ a -le b ] 返回 true。
      布尔运算符
        !
          非运算，表达式为 true 则返回 false，否则返回 true。
          [ ! false ] 返回 true。
        -o
          或运算，有一个表达式为 true 则返回 true。
          [ a -lt 20 -o b -gt 100 ] 返回 true。
        -a
          与运算，两个表达式都为 true 才返回 true。
          [ a -lt 20 -a b -gt 100 ] 返回 false。
      逻辑运算符
        &&
          逻辑的 AND
          [[ $a -lt 100 && $b -gt 100 ]] 返回 false
        ||
          逻辑的 OR
          [[ $a -lt 100 || $b -gt 100 ]] 返回 true
      字符串运算符
        =
          检测两个字符串是否相等，相等返回 true。
          [ a = b ] 返回 false。
        !=
          检测两个字符串是否相等，不相等返回 true。
          [ a != b ] 返回 true。
        -z
          检测字符串长度是否为0，为0返回 true。
          [ -z $a ] 返回 false。
        -n
          检测字符串长度是否为0，不为0返回 true。
          [ -n $a ] 返回 true。
        str
          检测字符串是否为空，不为空返回 true。
          [ $a ] 返回 true。
      文件测试运算符
        -b file
          检测文件是否是块设备文件，如果是，则返回 true。
          [ -b $file ] 返回 false。
        -c file
          检测文件是否是字符设备文件，如果是，则返回 true。
          [ -c $file ] 返回 false。
        -d file
          检测文件是否是目录，如果是，则返回 true。
          [ -d $file ] 返回 false。
        -f file
          检测文件是否是普通文件（既不是目录，也不是设备文件），如果是，则返回 true。
          [ -f $file ] 返回 true。
        -g file
          检测文件是否设置了 SGID 位，如果是，则返回 true。
          [ -g $file ] 返回 false。
        -k file
          检测文件是否设置了粘着位(Sticky Bit)，如果是，则返回 true。
          [ -k $file ] 返回 false。
        -p file
          检测文件是否是有名管道，如果是，则返回 true。
          [ -p $file ] 返回 false。
        -u file
          检测文件是否设置了 SUID 位，如果是，则返回 true。
          [ -u $file ] 返回 false。
        -r file
          检测文件是否可读，如果是，则返回 true。
          [ -r $file ] 返回 true。
        -w file
          检测文件是否可写，如果是，则返回 true。
          [ -w $file ] 返回 true。
        -x file
          检测文件是否可执行，如果是，则返回 true。
          [ -x $file ] 返回 true。
        -s file
          检测文件是否为空（文件大小是否大于0），不为空返回 true。
          [ -s $file ] 返回 true。
        -e file
          检测文件（包括目录）是否存在，如果是，则返回 true。
          [ -e $file ] 返回 true。
    语句
      条件语句
        if...elif...else
        case
      循环语句
        for
        while
        until
        select
        break
        continue
    函数
      函数参数
        $#
          传递到脚本的参数个数
        $*
          以一个单字符串显示所有向脚本传递的参数
        $$
          脚本运行的当前进程ID号
        $!
          后台运行的最后一个进程的ID号
        $@
          与$*相同，但是使用时加引号，并在引号中返回每个参数。
        $-
          显示Shell使用的当前选项，与set命令功能相同。
        $?
          显示最后命令的退出状态。0表示没有错误，其他任何值表明有错误。
    流，管道以及序列
      流
        stdin
        stdout
        stderr
      重定向
        >
          重定向输出
        &>
          重定向输出和错误输出
        &>>
          以附加的形式重定向输出和错误输出
        <
          重定向输入
        <<
          Here文档 语法
        <<<
          Here字符串
    Debug
      开启 Debug 模式
        如果想以 debug 模式运行脚本，需要添加特殊选项
          #!/bin/bash options
      options 参数
        -f
          noglob
          禁止文件名展开（globbing）
        -i
          interactive
          让脚本以 交互 模式运行
        -n
          noexec
          读取命令，但不执行（语法检查）
        -t
          —
          执行完第一条命令后退出
        -v
          verbose
          在执行每条命令前，向stderr输出该命令
        -x
          xtrace
          在执行每条命令前，向stderr输出该命令以及该命令的扩展参数
  Vim
    level1
      level1
        level1
          level1
            子主题 1
            子主题 2