文件管理类命令 :
    cp : 复制
        cp SRC DEST
        如果DEST不存在,系统会自动创建文件或目录
        如果DEST存在 :
            如果SRC是一个文件 : 
                如果DEST是一个文件,会直接将SRC中的内容覆盖DEST;因此为防止误操作,错删重要文件,建议配合-i选项使用,进行交互式删除,但一般情况下,
                    我们所执行的cp命令就自动带有-i选项
                如果DEST是一个目录,则会自动在DEST下创建一个同名文件,并将SRC中的内容复制至该文件中
        cp SRC... DEST
            如果SRC为多个文件,则DEST必须为一个目录,且必须存在
        cp SRC DEST
            如果SRC为一个目录:
                则必须要配合-r,-R选项一起使用,才可以进行递归复制
                如果DEST不存在,则会创建该目录,并将SRC中的所有文件复制至该目录下
                如果DEST存在,则会在DEST目录下创建一个同名目录,并将SRC中中的所有文件复制至该同名目录下
            如果DEST是一个文件 : 
                报错
            常用选项 :
                -i : interactive,交互式复制,只要为了防止复制时,错误覆盖目标文件内的重要内容,一般使用的cp命令,默认带有-i选项
                -r,-R: recursive,迭代复制目录以及目录内的所有文件,也可以理解复制与原文件相关的所有文件或目录
                -a : archive,归档复制,完全按照原文件原本样子进行复制,包括复制原文件的全部属性以及与该文件相关的所有文件;在复制文件的过程中,并不一定会
                     保持原文件的原本样子,如在复制符号链接文件时,仅仅只是将符号链接文件指向的内容复制至新文件中,而非复制符号链接文件本身
                     -a选项相当于 : -dR,相当于 : --preverse=ALL
                -d,--non-dereference : 复制符号链接文件时,仅仅只复制符号链接文件本身,而非复制符号链接文件指向的内容,但此时复制得到的符号链接文件是损坏了的,
                                       因为符号链接文件采用的相对路径,因为我们没有复制符号链接文件指向的那个文件,所以导致符号链接文件损坏
                --preserve=[attr_list] :
                    mode : 权限
                    owership : 属主属组
                    timestamp : 时间戳
                    复制文件时,默认复制以上三个属性
                    links : 链接属性
                    xattr : 拓展属性
                    context : 安全上下文
                    all : 表以上所有
                    --preverse中给定参数时,为额外复制该属性至新文件中
                -p,--preverse : 复制文件时,复制mode(权限),ownership(属主属组),timestamp(时间戳)
                -v,--verbose : 显示复制时的详细信息
                -t : turn,复制时,将SRC放在后面,DEST放在前面
                -f,--force : 强制复制,无需交互
        ===========================================================================================================================================================
        mv : 移动
            对于移动命令而言,没有文件和目录的区别,等同对待
            mv SRC DEST
                如果SRC是单个文件 :
                    如果DEST不存在,则会创建同名文件,并将原文件的内容复制至给文件中,删除原文件
                    如果DEST存在,则会将原文件的内容覆盖该文件,并删除原文件
                如果SRC是一个目录,则会在目录下,创建一个同名文件,并将原文件内容复制至该文件中,并删除原文件
            mv SRC... DEST
                如果SRC是多个文件,则DEST必须是一个目录且存在
            常用选项 : 
                -i : interactive
                -f,--force : 强制移动
         ==============================================================================================================================================================
         rm : 删除
             常用选项 :
                 -i : interactive
                 -f,--force : 强制删除
                 -r : recursive,迭代删除
         ================================================================================================================================================================
         文本编辑器 :
             nano
             vi/vim :
                 i : insert,插入文本
                 ESC : 退出编辑状态,进入命令模式
                 :w : 写出,即保存
                 :q : 退出文本编辑器
                 ! : 表强制
          ==============================================================================================================================================================
bash的基本特性 :
    1,命令别名 : 
        alias : 查看或管理命令别名
            alias name="value"
            注 : 仅对当前shell进程,当前会话有效,若要用就生效,则需修改配置文件: 仅对当前用户有效 : ~/.bashrc;对所有用户均有效 : /etc/.bashrc,修改完配置文件后,
                   需重启shell或重新读取配置文件 :source /path/to/config.file
        取消命令别名 :
            unalias name
                -a : 取消所有的命令别名
         注 : 如果命令别名和原本的命令名称相同时,执行原命令可 : /COMMAND
      ===============================================================================================================================================================================
    2,glob(globbing) : bash中用于实现文件名通配的机制
        通配符 :
            * : 匹配任意长度的任意字符
            ? : 匹配任意单个字符
            [] : 匹配指定范围内的任意单个字符
                注 : 其内部可使用连字符,以表示一个连续序列
                     [a-z] : 不区分大小写,匹配a-z连续序列中的任意单个字符
                     [A-Z] : 区分大小写,匹配A-Z连续序列中的任意单个字符
                     [^] : 匹配指定字符集外的任意单个字符
            专用字符集 : 它们表示一个字符集合,而非字符集中的某单个字符,所以使用时,格式必须为:[专用字符集]
                [:digit:] : 0-9
                [:lower:] : 小写字母集
                [:upper:] : 大写字母集
                [:alpha:] : 任意字母集(包括大小写)
                [:alnum:] : 任意字母和数字集
                [:space:] : 空格
                [:punct:] : 标点符号集
     ========================================================================================================================================================================
     3,bash的快捷键
         ctrl + l : clear
         ctrl + a : 光标跳转至命令首部
         ctrl + e : 光标跳转至命令尾部
         ctrl + c : 终止命令的执行
         ctrl + u : 删除命令首部至光标之间的所有命令内容
         ctrl + k : 删除光标至命令尾部之间的所有命令内容
      ============================================================================================================================================================================
      4,bash的输入输出重定向及管理
          标准输入 :当某个命令没有给定从哪里读取数据的参数时,bash通常定义了一个读取的数据的标准位置,即键盘keyboard(0,文件描述符,linux中一切皆文件,因此我们可以将键盘看做一个文件,
                    一个bash定义的读取数据的标准位置)
          标准输出 : 当某个命令没有给出将数据存到哪里时,bash定义了一个写出数据的标准位置,即监视器或显示器(monitor)(1)
          文件标识符 : 人类以文件名识别文件,而计算机则是以文件标识符识别文件,并实现对文件的追踪
          标准错误输出 : 错误信息的标准输出位置,即显示器或监视器(monitor)(2)
          I/O输出重定向,即改变数据流的默认输入输出位置或标准输入输出
          输出重定向 : 
              注 : 输出重定向的文件不存在时,会自动创建该文件
              覆盖重定向 >: 当重定向的文件存在时,会覆盖原文件的内容
                  注 : 覆盖重定向可能会导致错误删除重要文件内容,因此可通过bash的特性 : set -C,设置当目标文件存在时,禁止覆盖重定向,
                  但在此设置下,我们可以使用 >| 进行强制覆盖重定向,set +C取消上述设置
              追加重定向 >>: 当重定向的文件存在时,会将输出数据流追加在目标文件尾部
           错误重定向 :
               2> : 覆盖重定向错误数据流
               2>> : 追加重定向错误数据流
           标准输出和错误输出各自定向不同的位置 :
               COMMAND > /path/to/somewhere 2> /path/to/somewhere
           合并标准输出和错误输出为同一个数据流进行重定向 :
                &> : 覆盖重定向
                &>> : 追加重定向
                COMMAND > /path/to/somewhere 2> &1
                COMMAND >> /path/to/somewhere 2>> &1
                注 : 将错误数据流同标准输出合并并进行重定向
           标准输入 : <
               tr : translate,替换或删除字符
                   tr [option]... set1,set2
                       注 : 默认tr命令只能够从标准输入处获得数据,并进行替换或删除
                       要求两个字符集必须等长,则会以set2中对应位置的字符替换标准输入中出现的set1中的字符
                       -d : 删除标准输入中出现的给定字符集中的字符
             Here Documentation : <<
                 在此处创建文档,允许我们bash会话中一次性输入大量文本,并遇到特殊字符时,结束输入,如cat <<EOF(结束字符可随意)
            ==================================================================================================================================================================================
            管道 : 即将上一个命令的输出作为下一个命令的输入,与linux中都是功能单一的小程序,并通过组合这些小程序以完成更为复杂的功能原则
                COMMAND1 | COMMAND2 | COMMAND3 | ... | COMMANDN
                注 : 最后一个命令会在当前shell的子shell进程中进行
            =================================================================================================================================================
            tee : 
                一路输入,两路输出,从标准输入读取数据,并数据输出到标准输出和指定文件中
                注 : 默认是覆盖输出
            ==================================================================================================================================================
            文本处理工具 :
                wc : word counting,统计指定文件的行数,单词数(以空白分隔的字块数),字节数(也即字符数)
                    -l : 只显示行数
                    -w : 只显示单词数
                    -c : 只显示字符数(字节数)
                ifconfig : 显示当前系统的网络接口信息
                cut : 按照行和指定分隔符切割整个文件
                    -d DELIMITER : 指定切割文件的分隔符
                    -f # : 指定显示哪些字段,显示多个离散字段时,以","分隔,显示多个连续字段时,可以使用"-"连字符
                     --output-delimiter DELIMITER: 输出时,连接多个字段的分隔符
                sort : 排序,默认将指定文件每行的首字母按照在ASCII中顺序进行排序
                    -r : reverse,逆序排序
                    -f : 忽略字母大小写
                    -t : 指明字段分隔符
                    -k : 以指定字段首字母进行排序
                    -n : 按照数值大小进行排序
                    -u : unique,去重显示,存在多行完全一样时,只显示其中一行
                unique : 去重
                    注 : 连续且完全一样时,方为重复
                    -c : count,统计每一行出现的次数
                    -d : 仅显示多次重复出现的行
                    -u : 仅显示只出现过一次的行