shell 是用户使用字符串文本与计算机交互的方式.
linux 底层是基于字节的 (C 语言的 char), 更准备的说使用字节串与计算机交互.
通常一行字符串表示一个命令, 所以叫命令行, 简称 CLI.
比如要看一个文件的大小, 我们输入 "ll a.txt
", 终端上随后输出文件信息.
observer.hany@ali-59375nm:~/tmp$ ls -l a.txt
-rw-r--r-- 1 observer.hany han 4735 12月 16 18:18 a.txt
图形桌面环境 (简称 GUI) 下的操作方式则是找到 "a.txt" 文件, 右单文件图标, 选择 "属性" 菜单打开 "属性" 对话框, 看完再关掉.
linux 区分终端和 bash, 终端提供字符串输入输出功能, 还支持快捷键. 而 bash 是一个终端程序, 是一个命令解释器. 使用命令行登陆 (没有图形桌面) 时, 登陆后启动的第一个程序就是 shell, 用户通过 shell 使用计算机, 就像一层壳, 封装了计算机内部的功能, 所以叫 shell.
shell 的优点:
- 有些命令只有命令行接口, 比如 gcc, java.
- 一些命令需要运行时调配的参数太多, 使用 CLI 添加设置参数方便灵活很多.
- 有些命令的功能, 比如 "grep", "less", "tailf", GUI 没有同样方便的实现.
- shell 可以轻易组合命令实现一些功能, 即最简单的编程方式, GUI 缺乏这种支持.
- shell 命令可以记录到文本文件, 方便传播和自动化重复执行, 叫做 shell 脚本.
- 字符串命令交互界面只需要极低的硬件资源和网络资源, 很容易使用 ssh 远程登录操作服务器.
现在的计算机都有图形桌面操作系统, 不同的操作 GUI 和 CLI 各有优劣, 最好的办法就是把两者结合起来使用. 图形桌面下很容易启动一个终端窗口, 如 ubuntu 下的 gnome-terminal, 结合图形桌面软件和终端窗口中的 bash 共同操作计算机, 高效完成工作.