# 重点回顾

  • 由于核心在内存中是受保护的区块,因此我们必须通过 shell 将我们输入的指令与 Kernel 沟通,好让 kernel 可以控制硬件来正确无误的工作

  • 学习 shell 的原因主要有:

    • 文字接口的 shell 在各大 distribution 都一样

    • 远程管理时,文字接口速度较快

    • shell 是管理 linux 系统非常重要的一环,因为 linux 内很多控制都是以 shell 撰写的

  • 系统合法的 shell 均写在 /etc/shells 文件中

  • 用户默认登录取得的 shell 记录于 /etc/passwd 的最后一个字段

  • bash 的功能主要有:

    • 命令编修能力
    • 命令与文件补全功能
    • 命令别名设置功能
    • 工作控制、前景背景控制
    • 程序化脚本
    • 通配符
  • type 可以用来找到执行指令为何中类型,也可以用于与 which 相同的功能

  • 变量就是以一组文字或符号等,来取代一些设置或是一串保留的数据

  • 变量主要有环境变量与自定义变量,或称为全局变量与局部变量

  • 使用 env 与 export 可以观察环境变量,其中 export 可以将自定义变量转成环境变量

  • set 可以观察目前 bash 环境下的所有变量

  • $?为变量,是前一个指令执行完毕后的回传值。在 linux 回传值为 0 表示执行成功

  • locale 可用于观察语系资料

  • 可用 read 让用户由键盘输入变量的值

  • ulimit 可用以限制用户使用系统的资源情况

  • bash 的配置文件主要分为 login shell 与 non-login shell。

    • login shell 主要读取 /etc/profile 与 ~/.bash_profile
    • non-login shell 则仅读取 ~/.bashrc
  • 在使用 vim 时,若不小心按了 ctrl + s 则画面会被冻结。可以使用 ctrl + q 来解除冻结

  • 通配符主要有:*、?、[]

  • 数据流重导向通过 >、2>、< 之类的符号将输出的信息转到其他文件或装置去

  • 连续命令的下达可通过 ;、&&、|| 等符号来处理

  • 管线命令的重点是:

    • 管线命令仅会处理 standard output,对于 standard error output 会忽略
    • 管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行
  • 本章介绍的管线命令主要有:cut、grep、sort、wc、uniq、tee、tr、col、join、paste、expand、split、xargs 等