Linux学习笔记:bash的基础特性

bash的基础特性

  • 历史命令
    • history
      • 环境变量:
        • HISTSIZE:命令历史记录的条数
        • HISTFILE:~/.bash_history
        • ISTFILESIZE:命令历史文件里路的条数
      • history -d OFFSET:在指定位置删除历史命令
      • history -c:清空历史命令
      • history #:显示历史中最近的#条命令
      • history -a:手动追加当前绘画缓冲区的命令历史至历史文件中
    • 调用历史中的命令
      • !#:重复执行第#条命令
      • !!:重复执行上一条命令
      • !string: 重复执行最近一次以string开头的历史命令
    • 调用上一条命令的最后一个参数
      • !$:表示上一次命令调用的参数
      • ESC,.:同上
      • Alt+.:同上
    • 控制命令历史的记录方式
      • 环境变量:HISTCONTROL
        • ignoredups:忽略重复的命令(连续且相同方为“重复”)
        • ignorespace:忽略所有以空白开头的文件
        • ignorebo:ignoredups,ignorespace
      • 修改环境变量值的方式:export 变量名=”值”
        • 变量赋值:把辅助符号后面的数据存储与变量名指向的内存空间
  • 命令补全
    • 内部命令:
    • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即位要执行的命令
      • 直接补全:Tab,用户给定的字符串只有一条唯一对应的命令
      • 以用户给定的字符串为开头对应的命令不唯一,则再次Tab会给出列表
  • 路径补全
    • 把用户给出的字符串当作路径开头,并在其指定上级目录下搜索已制定的字符串开头的文件名
      • 如果唯一,则直接补全
      • 否则,再次Tab,给出列表
  • 命令行展开
    • ~:展开为用户的主目录
    • ~ USERNAME:展开为指定用户的主目录
    • {}:可承载一个以逗号分隔的列表,并将其展开为多个路径
  • 命令的执行结果状态
    • 成功
    • 失败
    • bash使用特殊变量$?保存最近一条命令的执行状态结果
      • 0:成功
      • 1-255:失败
    • 程序执行有两类结果
      • 程序的返回值
      • 程序的执行状态结果
  • 命令别名
    • alias命令实现
      • alias
        • 显示当前shell进程所有可用的命令别名
      • alias NAME=’VALUE’
        • 定义别名NAME,其相当于执行命令VALUE
      • 注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
        • 仅对当前用户有效:~/.bashrc
        • 对所有用户有效:/etc/bashrc
      • 重读配置文件:
        • source /path/to/config_file
        • . /path/to/config_file
      • Note:编辑配置文件给出的新配置不会立即生效
    • 撤销别名:unalias
      • unalias [-a] name [name …]
    • Note:如果别名同原命令名称,则如果要执行原命令,可使用“/COMMAND”
  • glob(globbing)
    • bash用于实现文件名“通配”
    • 通配符:*,?,[]
      • 通配符*
        • 任意长度的任意字符
        • a*b:aab,ab,a123b
      • 通配符?
        • 任意单个字符
          • a?b:
            • 匹配:aab
            • 不匹配:ab,a123b,abc
      • 通配符[]
        • 匹配指定范围内的任意单个字符
          • [0-9]
          • [a-z]:不区分字符大小写
          • [A-Z]:大写字母
      • 通配符[^]
        • 匹配指定范围内的任意单个字符
          • 例如:[^0-9]
      • 专用字符集合:
        • [:digit:]:任意数字,相当于0-9
        • [:lower:]:任意小写字母
        • [:upper:]:任意大写字母
        • [:alpha:]:任意大小写字母
        • [:alnum:]:任意数字和字母
        • [:space:]:所有空格
        • [:punct:] :所有标点符号
  • bash的快捷键
    • Ctrl + l:清屏操作
    • Ctrl + a:跳转至命令开始处
    • Ctrl + e:跳转至命令结尾处
    • Ctrl + c:取消命令执行
    • Ctrl + u:删除命令行首至光标所在处的所有内容
    • Ctrl + k:删除光标所在处至命令行尾部的所有内容
  • bash的I/O重定向及管道
    • 程序:指令+数据
      • 读入数据:Input
      • 输出数据:Output
    • 打开的文件都有一个fd:file descriptor(文件描述符)
    • 标准输入:keyboard,0
    • 标准输出:monitor,1
    • 标准错误输出:monitor,2
    • I/O重定向:改变标准位置
    • 输出重定向:COMMAND > NEW_pos,COMMAND >> NEW_pso
      • >:覆盖重定向,目标文件中的原有内容会被清除
      • >>:追加重定向,新内容会追加至目标文件尾部
    • # set -c:禁止将内容覆盖输出至已有文件中
      • 强制覆盖:>
    • # set +c:
      • 2>:覆盖重定向错误输出数据流
      • 2>>:追加重定向错误输出数据流
    • 标准输出和错误输出各自定向至不同位置:
      • COMMAND > /path/to/file.out 2>/path/to/error.out
    • 合并标准输出和错误输出为同一个数据流进行重定向
      • &>:覆盖重定向
        • COMMAND > /path/to/file.out 2>&1
      • &>>:追加重定向
        • COMMAND >> /path/to/file.out 2>>&1
    • 输入重定向:<
      • tr命令:转换或删除字符
        • tr [OPTION]… set1[set2]
      • HERE Documentation:<<
        • # cat << EOF
        • # cat > /path/to/somefile << EOF
    • 管道
      • COMMAND1|COMMAND2|COMMAND3|…
      • Note:最后一个命令会在当前shell进程的子shell中进行

你可能感兴趣的:(linux学习笔记)