画布 1
Linux
  Linux命令
    文件目录
      查看文件内容
      chmod
        设置文件或目录的访问权限
      cp
        复制文件或目录
      mv
        移动文件或目录，为文件或目录改名
      rm
        删除文件或目录
      mkdir
        创建目录
      cat
      more
      less
      head
      tail
    文件查找
      find
        在目录结构中搜索文件
      locate
        查找符合条件的文档
      which
        在环境变量$PATH设置的目录里查找符合条件的文件
      whereis
        在特定目录中查找符合条件的文件
    磁盘管理
      cd
        切换目录
      pwd
        显示当前目录
      ls
        显示目录内容
      mount
        挂载文件到一个虚拟盘或虚拟文件夹中
      stat
        文件/文件系统的详细信息显示
    网络通讯
      ifconfig
        显示或设置网络设备
      ping
        检查网络是否连通
      netstat
        显示网络连接、路由表和网络端口信息
      telnet
        远端登入
    系统管理
      账户管理
      useradd
        添加账号
      userdel
        删除账号
      usermod
        修改账号
      passwd
        设置密码
      su
        切换账号
      sudo
        以系统管理者的身份执行指令
      ps
        显示当前进程 (process) 的状态
      kill
        删除执行中的程序或工作
      exit
        退出目前的shell
      date
        显示或设定系统的日期与时间
    备份压缩
      tar
        备份文件
      zip
        压缩文件为 zip 包
      unzip
        解压缩 zip 包
  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