一、超级工具

您或许听过这样的论调:命令行(the mommand line)早就已经过时了,那东西神秘兮兮的,等等。有些人甚至觉得操作系统中应该没有这些命令才好。

事实是上,您可以不懂任何 shell ,就能使用 Linux 。您启动系统后可以直接进入 X Window ,最后在 X Window 下关机。
我坚信,用 Linux 而不懂 shell ,就象开车只会用头档(first gear)一样。当然,最初看起来,直接而简单,在大多数情况下都管用。但速度慢,而且无法真正体验驾驶的乐趣。

对,命令行很有趣。就象用一大堆收集到的积木,竟可以完成许多意想不到的创举,一些极其复杂的工作,只需几行命令就可以解决。这是因为,在 Unix 中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。
这并不意味着 shell 非常容易学通,您知道,好事多磨,这还是要花点工夫的。;-) 但请相信我,这绝对值得。您在很短时间内,就能被一大帮门外汉吹捧为 Unix wizard(奇才) 。*grin*

二、为了说明 shell ,这里需要一些背景知识。


1、Terminals, xterms 与 Shells

追溯到 Unix 诞生的那个年代,当时还没有现在流行的"个人计算机"。被称为计算机的机器,还是吞吐磁带与 magnetic memory (用术语'core'来表示系统 memory)的庞然大物。DEC 公司(现在的 Compaq)推出的 PDP-11 ,体积小(被称为 mini)而且价格底,在大学中引起了巨大的反响,很多学校直到那时才买得起一台计算机(PDP-11 物美价廉,只有 10000$)。

这些机器的操作系统由汇编语言、机器语言写成,所以运行起来效率很高,但都无法移植(unportable)。每家计算机公司都给自己的机器配上独有的操作系统,然后再销售。

这种笨拙的作法很快就被人们意识到了,于是就开始兴建一个可以在不同品牌机器上运行的操作系统。1969 年,Ken Thompson 开始写后来成为 Unix 的第一行代码。(Thompson 曾经参加了一个项目:MULTICS,Unix 是与这有关的一个玩笑词) 其实,Dennis Ritchie 为这个新的操作系统设计了一种新的编程语言-- C 语言后,事情才真正开始。

虽然 Unix 的效率不及原来的操作系统,但有三个突出的优点:可以任意移植到其他机器,其中的 C 语言大大简化了编程,而且这些都 free 。很快,全美国的大学都忙着开始为机器安装 Unix 。

2、终端(Terminals)

Unix 是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过哑终端来连接到这些机器,也就是用键盘、显示器及足够的 electronics (电子元件)组成的机器与中央计算机(central computer)相连。在这些终端上,用户可以敲字符(teletypy),这就是字符串'tty'表示终端设备文件,和'getty'命令的名称来历。

您可能会问,现在这些东西都在哪儿。 这些终端的厂家无法达成一项最终标准,这导致每种牌子的终端都有各自的键盘布局、各自的在屏幕上显示字符的方法、发送或接收什么信号表示什么字符、控制代码等等。

为了避免这些混乱,就创建了一个含有所有不同终端特性的(capability)文件,这就是'termcap'。用一个工具打开'/etc/termcap'瞧瞧,可别吓着了 ;-) 。

Linux 终端大多数用'vt100'或'linux'作为终端类型。

3、xterms

在八十年代初期,产生了一个 Unix 的图形子系统-- the X Window System 。九十年代早期,为了更好地实现基于 Intel 的 Unix 类系统上(如FreeBSD、NetBSD、Linux)的应用,产生了一个系统分支-- XFree86 。

X Window 中一个很大的好处是可以运行多个虚拟(virtual)终端。甚至在 X Window 下就有这么个应用程序--'xterm'。您将发现'xterm'和'virtual terminal'在很多情况下都是一样的。有的地方说'打开一个 xterm',其实您不是非要用'xterm'程序,其他的终端模拟器(terminal emulator),如 rxvt、konsole、aterm、eterm、wterm 等等,一样有效。

终端模拟器(又称为虚拟终端)通过伪(pseudo) tty 设备-- pty 与系统相连,并且使用自己的显示标准-- xterm 。这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,这取决于模拟器多大程度上遵守了'xterm'的显示标准。

4、Shells

为了在终端中运行程序,需要 shell 。shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。

第一个真正的 Unix shell -- 'sh',亦称为'Bourne shell',诞生于 1975 年,作者是 Steve Bourne 。很快,出现了其他 shell ,如基于原始'Bourne shell'的'ksh'、'zsh',后者常用作专属 Unixes 系统中的标准 shell ;也有一些从 C 语言中衍生出来的 shell ,如'csh'或'tcsh'。

在 Linux 中,标注的 shell 是'bash',即 the GNU Bourne-Again Shell (有点玩笑的味道……)。这个 shell 功能非常强大(甚至有人觉得太庞大了),压缩的 man page 就有 50 KB 。

三、Shell 起步

首先,有一点小说明:在平常应用中,建议您不要用'root'帐号运行 shell ,如果您还是新手,这一点尤其要注意。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是'root',那就不同了,只要敲几个字母,就可能导致灾难性后果。

当您登入系统或打开一个 xterm 窗口,首先看到的是提示符(prompt)。Red Hat Linux 的标准提示符包括了您的用户名、登入的主机名(没有设置的话,是'localhost')、当前所在的目录(working directory)、提示符号:

[tom@belbo tom]$

我以用户名'tom'登入名为'belbo'的主机,当前在我的 home 目录--'/home/tom'中。'root'的提示符:

[root@belbo root]#

除了不同的用户名外,提示符号由'$'变成了'#'。根据 Bourne shell 的传统,普通用户的提示符以'$'结尾,而超级用户用'#'。

提示符的每个部分都可以定制,您在后面将有更深的了解。

要运行命令的话,您只要在提示符后敲进命令,然后在按 键。shell 将在其路径中(详情见后)搜索这个命令,找到以后就运行,并在终端里输出相应的结果(如果有的话),命令结束后,再给出新的提示符:

[tom@belbo tom]$ whoami
tom
[tom@belbo tom]$

顺带指出,当您敲 ENTER 时,光标(cursor)在哪里并不要紧,因为 shell 总是会整行地读取。

基本的命令有:'ls'(list directory ,列出目录内容)、'cp'(copy ,复制)、'mv'(move / rename ,移动/重命名),'cd '(change directory ,改变目录),这些命令后面都可以跟上一帮可选项,这方面 man page 有详细的介绍(man ls, man mv 等等)。
在您动身前往 shell 领地前,这里有几个术语(terminology)的简短说明。命令可能带一些可选项(options)、参数(arguments):

mv -i file dir

其中'-i'是命令'mv'的一个可选项,而'file'和'dir'则是参数。所有可选项在该命令的 man page 都中有详细的介绍(此例中用 man mv),而参数则由您提供。可选项决定命令如何工作,而参数则用于确定命令作用的目标。

到目前为止,介绍得有点象许多人厌恶轻视的 DOS shell ,但伴随着下面的介绍,您将会有新的体验。

转载于:https://blog.51cto.com/3579224/666284

第一篇:超级工具/Terminals,xterms 和 Shells相关推荐

  1. Android 进阶第一篇——善用工具

    笔者本身从事的是和系统相关性比较大的系统应用的开发,在这里我总结了一下自身的经验,将工作中经常用到的一些工具做了简要罗列,我之所以将其作为进阶第一篇,是因为工欲善其事必先利其器,只有善用工具才能提升效 ...

  2. C# 之多线程篇 Task(C#超级工具类)

    在.NET 4.0中,并行计算与多线程得到了一定程度的加强,这主要体现在并行对象Parallel,多线程Task,与PLinq.这里对这些相关的特性一起总结一下.使用Thread方式的线程无疑是比较麻 ...

  3. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

  4. 小工具开发笔记—IE自动填表器—第一篇:你好,世界

    系列导航: 小工具开发笔记-IE自动填表器-第零篇:序 小工具开发笔记-IE自动填表器-第一篇:你好,世界 继上篇博文初步介绍了小工具,本文就作为开发笔记正文第一篇,来叙述一下如何使用C++开发一个完 ...

  5. ➢ 微信公众号运营教程(三)熟悉一些实用的工具 编写第一篇公众号推文

    ➢ 微信公众号运营教程(三) 熟悉一些实用的工具 & 编写第一篇公众号推文 实用的一些工具 ①浏览器:Google Chrome谷歌浏览器 ②图片素材 首先,我们编写文章的时候,需要一些配图, ...

  6. 我的第一篇博客随笔:Ashampoo Snap 7最智能的截图工具

    今天是博客开通的第二天,发表第一篇随笔! 有时候,我们分享一篇好的文章时,都会在文章内插入一些有用的裁图进行说明.通常我们都是使用QQ裁图或者电脑Print Scr Sysrq键进行裁图,但有些功能满 ...

  7. python小海龟画粗细渐变的线_Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle)...

    Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle) turtle 是一个简单的绘图工具 提供一个小海龟, 可以把它理解为一个机器人, 只能听懂有限的命令, 且绘图窗口的原点 ...

  8. Dialogue System for Unity文档中文对照版(简雨原创翻译)第一篇(我们开始仙剑demo的剧情)

         这篇文档本身有快300页,因为实在太多,所以不像前面的插件那样翻译的,很多地方直接用了机翻,因为文字量实在太大,如果翻译完全套,再加上讲解的话,估计要花几个月的时间,对于普通的程序来说,其实 ...

  9. 贝叶斯神经网络(系列)第一篇

    本文为 AI 研习社编译的技术博客,原标题 : Bayesian Neural Network Series Post 1: Need for Bayesian Neural Networks 作者 ...

最新文章

  1. AWS攻略——使用CodeCommit托管代码
  2. Java学习总结:30
  3. linux中find命令列举,Linux中常见find命令的使用
  4. Divan and a Store 贪心(800)
  5. Python中使用python -m pip install --upgrade pip升级pip时老是不成功
  6. android表情输入键盘,GitHub - UKfire/Emotion: 帮你的Android应用快速集成表情键盘
  7. php伪静态不支持中文,wordpress伪静态如何支持中文(目前不支持分类目录中文)...
  8. 还是原来的配方和味道!《英雄联盟》手游界面再曝光...
  9. nmon监控Linux服务器系统资源
  10. vs2019MSDN(离线帮助文档)的下载与使用
  11. linux设置伪静态地址,wordpress网站linux和win主机URL伪静态设置方法详解
  12. 单片机python编程入门_编程入门教程.doc
  13. 斐波那契数列(java)
  14. 计算机网络---网卡,交换机和路由器|CSDN创作打卡
  15. 服务器虚拟化vmware hyper-v,浅谈Hyper-v与VMware服务器虚拟化比较
  16. python ccf题解 201412-3 集合竞价
  17. 二叉树结构——BTree、BTreeNode
  18. 关于NSDateFormatter年份计算超前问题
  19. NVIDIA安装程序失败 ,win10 RTX3060安装CUDA11.7
  20. 四级作文之观点评述型文章

热门文章

  1. Ultraedit 26.1安装教程
  2. 北斗导航 | 多GNSS系统PPP-RTK原型系统及性能分析(2020 CPGPS全球华人导航定位协会年会)
  3. Matlab | Matlab从入门到放弃(7)——struct结构体
  4. python精要(80)-wxpython(2)-helloworld
  5. 2021CVPR冠军图像分割算法全解密
  6. 【机器学习】如果你不了解机器学习的简史,请看这篇文章
  7. 【NLP】Contrastive Learning NLP Papers
  8. 【竞赛经验分享】2020腾讯广告算法大赛:如何突破分数瓶颈?
  9. 我感觉这是目前讲得最明白的线性回归的文章了
  10. 相当全面:推荐系统干货总结