当我们谈到命令行时,我们实际上是指 shell 。shell是一个程序,它接收键盘命令并将其传递给操作系统执行。几乎所有的Linux发行版都提供了一个来自GNU项目的shell程序,称为 bash 。“bash”这个名字是“Bourne Again SHell”的首字母缩写,表示bash是Steve Bourne编写的原始Unix SHell程序 sh 的增强替代品。
当使用图形用户界面(GUI)时,我们需要另一个名为终端模拟器(terminal emulator)的程序来与shell交互。如果我们浏览一下桌面菜单,我们可能会找到一个。KDE使用 konsole ,GNOME使用 gnome-terminal ,尽管在我们的菜单上它可能被简单地称为“终端”。Linux上还有许多其他终端模拟器,但它们基本上都做同样的事情;让我们访问shell。您可能会根据它所具有的花哨功能的数量,对一个或另一个终端模拟器产生偏好。
那么,让我们开始吧。启动终端模拟器!一旦它出现,我们应该看到这样的东西:
xxxxxxxxxx[me@linuxbox ~]$这被称为shell提示符(shell prompt),每当shell准备好接受输入时,它就会出现。虽然它的外观可能因分布而异,但通常会包括您的 username@machinename ,然后是当前工作目录(稍后将详细介绍)和美元符号。
xxxxxxxxxx注意:如果提示的最后一个字符是英镑符号(“#”)而不是美元符号,则终端会话具有超级用户(superuser)权限。这意味着我们要么以root用户身份登录,要么选择了一个提供超级用户(管理)权限的终端模拟器。
假设到目前为止一切顺利,让我们试着打字。在提示下输入一些胡言乱语,如下所示:
xxxxxxxxxx[me@linuxbox ~]$ kaekfjaeifjbash: kaekfjaeifj: command not found[me@linuxbox ~]$因为这个命令毫无意义,shell告诉我们这一点,并给我们另一个机会。
如果我们按向上箭头键,我们将看到上一个命令 kaekfjaeifj 在提示后重新出现。这被称为命令历史(command history)。默认情况下,大多数Linux发行版都会记住最后1000个命令。按向下箭头键,上一个命令将消失。
再次按向上箭头键可调用上一个命令。如果我们尝试使用左右箭头键,我们将看到如何将光标定位在命令行上的任何位置。这使得编辑命令变得容易。
xxxxxxxxxx关于鼠标和焦点(focus)的几句话虽然shell主要是关于键盘的,但您也可以在终端模拟器中使用鼠标。X Window系统(使GUI运行的底层引擎)内置的机制支持快速复制和粘贴技术。如果按住鼠标左键并在其上拖动鼠标(或双击单词)来突出显示某些文本,则会将其复制到由X维护的缓冲区中。按下鼠标中键将导致文本粘贴在光标位置。试试看。注意:不要试图使用 `Ctrl-c` 和 `Ctrl-v` 在终端窗口内执行复制和粘贴。它们不起作用。这些控制代码对shell有不同的含义,并且是在Microsoft Windows发布之前多年分配的。您的图形桌面环境(最有可能是KDE或GNOME)为了表现得像Windows一样,可能将其焦点策略设置为“点击聚焦”。这意味着要使窗口获得焦点(变为活动状态),您需要点击它。这与传统的X行为“焦点跟随鼠标”相反,这意味着窗口只需将鼠标悬停在其上即可获得焦点。在您点击它之前,窗口不会出现在前台,但它将能够接收输入。将焦点策略设置为“焦点跟随鼠标”将使复制粘贴技术更加有用。如果可以的话,试试看(尽管一些桌面环境不再支持它)。我认为如果你给它一个机会,你会更喜欢它。你会在窗口管理器的配置程序中找到这个设置。
现在我们已经学会了在终端模拟器中输入文本,让我们尝试一些简单的命令。让我们从显示当前时间和日期的 date 命令开始:
xxxxxxxxxx[me@linuxbox ~]$ dateThu Mar 8 15:09:41 EST 2025另一个方便的命令是 uptime ,它显示系统已经运行了多长时间,以及在不同时间段内运行的平均进程数:
xxxxxxxxxx[me@linuxbox ~]$ uptime15:12:22 up 3 days, 23:40, 7 users, load average: 0.37, 0.37, 0.64要查看磁盘驱动器上的当前可用空间量,请输入 df :
xxxxxxxxxx[me@linuxbox ~]$ dfFilesystem  1K-blocks     Used Available Use%  Mounted on/dev/sda2    15115452  5012392   9949716  34%  //dev/sda5    59631908 26545424  30008432  47%  /home/dev/sda1    147764      17370    122765  13%  /boottmpfs        256856          0    256856   0%  /dev/shm同样,要显示可用内存量,请输入free命令:
xxxxxxxxxx[me@linuxbox ~]$ free         total   used   free shared buffers   cachedMem:    513712 503976   9736      0    5312   122916-/+ buffers/cache: 375748 137964Swap:  1052248 104712 947536我们可以通过关闭终端模拟器窗口、在shell提示符下输入 exit 命令或按 Ctrl-d 来结束终端会话:
xxxxxxxxxx[me@linuxbox ~]$ exitxxxxxxxxxx幕后的控制台即使我们没有运行终端模拟器,几个终端会话也会继续在图形桌面后面运行。在大多数Linux发行版上,我们可以通过按Ctrl-Alt-F1到Ctrl-Alt-F6来访问这些会话,称为虚拟终端(virtual terminals)或虚拟控制台(virtual consoles)。当访问会话时,它会显示一个登录提示,我们可以在其中输入用户名和密码。要从一个虚拟控制台切换到另一个,请按Alt-F1至Alt-F6。在大多数系统中,我们可以通过按Alt-F7返回图形桌面。
本章标志着我们进入Linux命令行之旅的开始,介绍了shell,简要了解了命令行,并学习了如何启动和结束终端会话。我们还看到了如何发出一些简单的命令并执行一些轻量级的命令行编辑。那没那么可怕吧?
在下一章中,我们将学习更多命令,并浏览Linux文件系统。
●要了解更多关于Bourne Shell之父Steve Bourne的信息,请参阅维基百科文章:
http://en.wikipedia.org/wiki/Steve_Bourne
●这篇维基百科文章是关于 bash 的原作者Brian Fox的:
https://en.wikipedia.org/wiki/Brian_Fox_(computer_programmer)
●以下是一篇关于计算中shell概念的文章: