1. 选项option
    1. -i,-interactive
      1. 删除已存在的文件前提示用户确认。如果没有这个选项,会直接删除
    2. -r,-recursive
      1. 递归地删除目录。即删除的目录有子目录时,需要制定此选项
    3. -f,-force
      1. 忽略不存在的文件并无需提示确认。该选项会覆盖-interactive选项
    4. -v,-verbose
      1. 删除文件时显示信息性消息
  2. shell中的扩展(每次按下enter时,bash执行命令前会对文本进行扩展,如果输入的是通配符 *,bash就会把这个字符扩展成“匹配文件名中的任意字符,对命令来说,它看到的是 * 扩展后的所有文件内容)
    1. * 星号扩展
      1. ls -d .[!.]?*
        1. 正确执行路径名扩展,显示以“ . ”开头的隐藏文件,扩展为以一个点字符开头的所有文件名,文件名中并不包含第二个点字符,担保函一个额外的字符,后面可能还跟着其他字符
    2. ~ 波浪号扩展
      1. echo ~ / echo ~foo
        1. 如果把它用在一个单词的开头,那么它将被扩展为指定用户的主目录名,如果没有指定用户命名,则扩展为当前用户的主目录
    3. $((expression)) 算数扩展
      1. echo $((2+2))
        1. expression是包含数值和算术操作符的算术表达式,算数扩展只支持整数,可以执行加减乘除法模运算和幂运算(**)。表达式可嵌套。空格在表达式中无意义
    4. {} 花括号扩展
      1. echo front-{A,B,C}-Back
        1. 用于花括号扩展的模式信息可以包含一个称为前导字符的开头和一个称为附言的结尾。花括号表达式本身可以包含一系列逗号分隔的字符串,也可以包含一系列整数或单个字符。花括号支持嵌套。不能内嵌空格。常用于创建一系列只有顺序不同的文件或目录
    5. $PARAM 参数扩展
      1. echo $USER
        1. 参数扩展用在shell脚本中比直接用在命令行中更为有用,它的许多特性与系统存储小块数据及给每个小块数据命名的性能有关,这些“小块数据”也被称为变量,如USER就是一个变量包
          1. 查看可用的变量列表用:printenv | less
    6. $(command) 命令替换
      1. echo $(ls)
        1. 把一个命令的输出作为一个扩展模式使用
    7. 引用
      1. "" 双引号
        1. ls -l "two words.txt"
          1. $、\、' 这几个字符在双引号里面会失去其特殊含义,但参数扩展、算数扩展和花括号扩展仍然有效。使用双引号引用能够处理文件名中含有空格的情况
      2. '' 单引号
        1. echo 'text ~/*.txt{a,b}$(echo foo)$((2+2))$USER
          1. 单引号可以抑制所有的扩展,即在双引号里仍有效的扩展,在单引号里将会失效
      3. \ 转义字符
        1. echo "This is \$100 dollars"
          1. 在双引号中加入转义字符反斜杠,选择性地阻止扩展。在单引号中反斜杠将失去特殊含义,只被当作一个普通字符
  3. 权限操作
    1. 命令
      1. id:显示用户身份标识
      2. chmod:更改文件的模式
      3. umask:设置文件的默认权限
      4. su:以另一个用户的身份运行shell
      5. sudo:以另一个用户的身份来执行命令
      6. chown:更改文件所有者
      7. chgrp:更改文件所属群组
      8. password:更改用户密码
    2. 角色
      1. 用户
      2. 群组,一个群组由多个用户组成
      3. 世界,在Unix术语中,所有用户=整个世界
  4. 键盘技巧
    1. 命令
      1. clear 清屏
      2. history 历史记录
        1. $!ROW 历史第ROW行的命令
    2. 快捷操作
      1. 光标移动
      2. 修改文本
      3. 剪切和粘贴
      4. 自动补齐
  5. 系统进程
    1. 命令
      1. ps:显示当前所有进程的运行情况
      2. top:实时显示当前所有任务的资源占用情况
      3. jobs:列出所有活动作业的状态信息
      4. bg:设置在后台中运行作业
      5. fg:设置在前台中运行作业
      6. kill:发送信号给某个进程
      7. killall:杀死指定名字的进程
      8. shutdown:关机或重启系统
  6. 命令command
    1. 不带参数的命令
      1. date:显示当前系统时间和日期
      2. cal:显示当月的月历
      3. df:查看磁盘驱动器当前可用空间
      4. free:显示可用内存
      5. exit:结束终端会话
      6. pwd:查看当前工作目录
      7. cd:将工作目录改变为登录后所在的主目录
    2. 文件系统命令
      1. cd
        1. cd dir1:进入到dir1目录下
        2. cd -username:将工作目录改为username的主目录
      2. ls
        1. ls dir:查看dir目录的内容
        2. ls dir1 ~/ dir2:查看dir1到dir2目录下的文件,如果dir1未指定,木认识主目录下第一个文件开始
        3. ls -l:以长格式输出来得到更多细节
        4. ll:同ls -l
        5. ls -lt:以长格式输出的同时按修改时间排序
        6. ls -lt -reverse:同上,时间顺序颠倒
      3. file
        1. file file/dir:打印出文件内容的简短说明
      4. less
        1. G:跳转到文本文件的末尾
        2. 1G/g:跳转到文本文件的开头
        3. charecters:向前查找指定的字符串
        4. h:显示帮助屏幕
        5. q:退出less
      5. cp
        1. cp file1 file2:将 file1 复制到 file2。如果 file2 存在,则会被 file1 的内容覆盖
        2. cp -i file1 file2:同上,区别在于 file2 存在时,覆盖前通知用户确认
        3. cp file1 file2 dir1:将 file1 和 file2 复制到目录 dir1 里,dir1 必须已经存在
        4. cp dir1/* dir2:通过使用通配符,将 dir1 中的所有文件复制到 dir2 中。dir2必须已经存在
        5. cp -r dir1 dir2:将 dir1 目录(及其内容)复制到 dir2 目录中,如果 dir2 不存在,创建 dir2,且包含于 dir1 目录相同的内容
      6. mv
        1. mv file1 file2:将 file1 移动到 file2。如果 file2 存在,则会被 file1的内容覆盖。如果 file2 不存在,则创建 file2。无论哪一种情况,file1 不再存在
        2. mv -i file1 file2:同上,仅当 file2 存在时,覆盖之前通知用户确认
        3. mv file1 file2 dir1:将 file1 和 file2 移动到目录 dir1 下。dir1必须已经存在
        4. mv dir1 dir2:将目录 dir1(和其内容)移动到目录 dir2 下。如果 dir2 不存在,则创建它,并且将 dir1 目录下的内容移动到 dir2 下,同时删除 dir1
      7. mkdir
        1. mkdir dir1 [dir2]:创建目录,可带一个或多个参数,表示创建一个或多个目录
      8. rm
        1. rm file1:在不提示用户的情况下,删除 file1
        2. rm -i file1:删除 file1 前,提示用户确认
        3. rm -r file1 dir1:删除 file1、dir1以及他们的内容
        4. rm -rf file1 dir1:同上,当 file1 或 dir1 不存在时,rm 仍会继续执行,并且不提示用户
      9. ln
        1. ln file link:创建硬链接
        2. ln - s item link:创建符号链接,item可以是文件,也可以是目录
    3. 命令的使用
      1. type:说明如何解释命令名
      2. which:显示会执行哪些可执行程序
      3. man:显示命令的手册页
      4. apropos:显示一系列合适的命令
      5. info:显示命令的info条目
      6. whatis:显示一条命令的简述
      7. alias :创建一条命令的别名
        1. alias newCommand='com1;com2;com3':等号后面以分号区分的命令用单引号扩起
        2. unalias newCommand:删除新命令
        3. alias:查看现有别名的命令
      8. 使用方法:command command
    4. I/O重定向命令
      1. >:重定向操作符(>>:输出补充在文件末尾)
      2. cat:合并文件
      3. sort:对文本进行排序
      4. uniq:报告或删除文件中的重复行
      5. wc:打印文件中的行数、字和字节的个数
      6. grep:打印匹配行
      7. head:输出文件的第一部分内容
      8. tail:输出文件的最后一部分内容
      9. tee:读取标准输入的数据,并将其内容输出到标准输出和文件中