Skip to content

2013 12 19 bash misc

hanyong edited this page Dec 8, 2013 · 1 revision

bash 杂记

什么是 shell

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 共同操作计算机, 高效完成工作.