- Linux命令行大全(第2版)
- (美)威廉·肖特斯(William Shotts)
- 7字
- 2021-02-26 19:29:42
第一部分 学习Shell
第1章 什么是Shell
当我们谈起命令行时,其实指的是Shell。Shell是一个程序,它接收由键盘输入的命令并将其传递给操作系统(简称系统)来执行。几乎所有的Linux发行版都提供了来自GNU项目的Shell程序Bash。Bash是Bourne Again Shell的缩写,以此表明Bash是sh的增强版,而sh是由史蒂夫·伯恩(Steve Bourne)编写的最初的UNIX Shell程序。
1.1 终端仿真器
当使用图形用户界面(Graphical User Interface,GUI)时,我们需要另一种叫作终端仿真器(terminal emulator)的程序与Shell进行交互。如果仔细查看桌面菜单,应该能在其中找到终端仿真器。在KDE下使用的是konsole,在GNOME下使用的是gnome-terminal,但是在菜单上很可能将它们简单地统称为终端(terminal)。Linux系统中可用的终端仿真器数目众多,不过基本上做的都是同样的事情:让用户访问Shell。根据功能特性的不同,你可能会偏好某种终端仿真器。
1.2 小试牛刀
现在就让我们开始吧。启动终端仿真器,随后出现类似于下面的提示符:
[me@linuxbox ~]$
这叫作Shell提示符,出现在Shell已经准备好接收输入的时候。在不同的Linux发行版中,提示符的格式可能会有所差异,不过通常都包括username@machinename、当前工作目录(稍后详述)及一个$。
如果提示符的最后一个字符是#,而非$,表明该终端会话具有超级用户权限。这就意味着要么我们是以超级用户(root用户)登录的,要么我们选用的终端仿真器提供了超级用户权限。
假设目前为止一切顺利,接下来尝试从键盘输入内容。像这样输入一些字符:
[me@linuxbox ~]$ kaekfjaeifj
因为这是个毫无意义的命令,所以Shell会报错并让我们重新输入:
bash: kaekfj aeifj: command not found [me@linuxbox ~]$
1.2.1 命令历史
如果按上方向键,将会看到先前输入过的命令kaekfjaeifj又出现在了提示符之后,这称为命令历史记录。默认情况下,大部分Linux发行版能记住最近输入的1000个命令。按下方向键,刚才出现的命令就又消失了。
1.2.2 光标移动
再按上方向键,重新调出先前输入过的命令。如果按左方向键和右方向键,能够将光标移动到命令行的任意位置。这可以让我们很容易地编辑命令。
关于鼠标和焦点
虽然Shell与用户的交互全部是通过键盘来完成的,但是在终端仿真器中也可以使用鼠标。X Window系统(驱动GUI的底层系统)内建立了一种机制,支持快速“复制—粘贴”技术。如果按住鼠标左键,拖动鼠标选中部分文本(或者双击选中一个单词),这些文本会被复制到由X Window维护的缓冲区中。按鼠标中键可以将复制好的文本粘贴到光标所在的位置。你可以试一下。
别试图在终端窗口中使用Ctrl-C和Ctrl-V组合键执行复制和粘贴操作,这是没用的。这些组合键对Shell而言有不同的含义,它们在Windows发布之前就已经另有他用了。
你所使用的图形化桌面环境(大概率是KDE或GNOME),为了模仿Windows的行为,可能采用了“通过单击获得焦点”(click to focus)的策略。这意味着要想让一个窗口获得焦点(成为当前窗口),需要单击该窗口。这与X Window的传统行为正好相反,后者采用的是“焦点跟随鼠标”(focus follows mouse)的策略。也就是说,当鼠标指针经过窗口时,窗口随即获得焦点。该窗口能够接收输入,但只有单击它的时候才会进入前台。将焦点策略设置为“焦点跟随鼠标”会使“复制—粘贴”技术更加实用。如果可以的话(有些桌面环境,例如Ubuntu的Unity,已经不再支持这种焦点策略),不妨尝试一下,我想你会喜欢的。你可以在窗口管理器的配置程序中找到相关设置。
1.3 几个简单的命令
我们已经学会了在终端仿真器中输入字符,现在来尝试几个简单的命令。那就先从date命令开始吧,该命令可以显示当前的时间和日期:
[me@linuxbox ~]$ date
Fri Feb 2 15:09:41 EST 2018
另一个相关的命令是cal,默认显示当前月份的日历:
[me@linuxbox ~]$ cal
February 2018
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28
幕后的虚拟控制台
即便没有运行终端仿真器,一些终端会话也会在图形化桌面环境的后台运行。在大多数Linux发行版中,按Ctrl-Alt-F1到Ctrl-Alt-F6组合键,就能够访问这些终端会话(又称虚拟控制台)。当访问某个虚拟控制台时,它会显示登录提示符,我们可以在其中输入用户名和密码。要想切换虚拟控制台,依次按Alt-F1到Alt-F6组合键即可。在大多数系统中,按Alt-F7组合键就可以返回图形化桌面环境。
要想查看磁盘的当前可用空间,输入df命令:
[me@linuxbox ~]$ df
Filesystem 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% /boot
tmpfs 256856 0 256856 0% /dev/shm
与此类似,如果想查看可用内存容量,输入free命令:
[me@linuxbox ~]$ free
total used free shared buffers cached
Mem: 513712 503976 9736 0 5312 122916
-/+ buffers/cache: 375748 137964
Swap: 1052248 104712 947536
1.4 结束终端会话
结束终端会话的方法不止一种,关闭终端仿真器窗口、在Shell提示符下输入exit命令,或是按Ctrl-D组合键均可:
[me@linuxbox ~]$ exit
1.5 总结
本章介绍了Shell、命令行以及如何启动和结束终端会话,这标志着Linux命令行之旅正式启程。我们还学习了如何输入一些简单的命令并进行简单的命令行编辑。这也没那么可怕,不是吗?
在第2章中,我们将会学习更多的命令,“畅游”Linux文件系统。