使用命令行并不是技术上的倒车,而是让你不用纠结在纷繁的图形界面下,可以快速高效地让你的树莓派完成任务。相比于计算机刚刚被发明出来的时候,使用八进制的机器码来操作计算机,命令行接口已经算是长足的进步了。与图形界面相比较,后者在牺牲了一些操作性与表达能力的情况下能够让用户更加轻松地上手。在树莓派上,你可以分别体验这两种操作模式的独特魅力。希望你读完前两章后可以很快像使用桌面系统一样使用命令行。
与一些早期的树莓派Raspbian系统不同,新版的Stretch系统直接启动到图形界面。你可以在设置中修改启动后的默认界面,而且只需要按下Alt+CTRL+F1组合键就可以调出命令行环境,得到的是一个虚拟控制台,而按下Alt+(F2到F6)可以启动另外5个控制台界面。在平时的使用过程中,可以随时随地打开这些终端进行探索,现在先让我们按下Alt+F7组合键回到图形界面。
除了使用快捷键以外,我们还可以直接打开一个叫终端模拟器的程序来使用命令行(通常叫term或者xterm)。你有时还会听到人们在谈论shell或者Bash这样的名字,如果你现在还对这两个名字很陌生,那也没有关系,我们以后会进行讨论。现在,请先单击图形界面左上角的那个像老式电视机屏幕的图标来打开终端模拟器;或者,你也可以通过单击附件(Accessories下拉框)来找到终端(Terminal)。打开终端模拟器后,你就可以在命令行中输入命令啦。
可以通过使用man指令来查看帮助页面。对于一个新手来说,阅读man(ual)页面会有一些困难。对于初学者来说,可以尝试通过帮助页面来学习命令的一些扩展选项(参数),比如除了我们在这里使用的-a之外的其他参数。要查看ls指令的帮助页面,我们只需要输入man ls。
图1-1显示了连接树莓派后的终端界面。
图1-1
命令的参数可以修改它的行为。举例来说,ls -a命令的-a参数可以显示通常被隐藏的以.开头的文件;ls -al可以显示更多的相关信息,具体如下:
在以后使用命令行的过程中,每当你输入一条指令,就需要按下Return或者说Enter键来告诉树莓派的系统你已经输入完一条指令。
如果习惯使用文件管理器来定位文件与文件夹,那么在开始使用命令行管理文件之前,要先擦除脑海里对文件图标的刻板印象。打开终端,输入ls并且单击Return键,如果是在最新的树莓派Stretch系统上并且已经安装了推荐的软件,就会看到一些文件夹,包括MagPi。输入“ls MagPi”,然后你会看到MagPi文件夹的内部有些什么内容。
ls命令的设计历史可以追溯到那个电脑只有110根波特(Baud)串行线,使用的是ASR33终端的年代。可能你会有疑问,我们为什么要使用这些古老的程序,这些设计在经历了这么长的时间之后还没有过时吗?其实在工程领域,这些经典的设计寿命往往是很长的,因为它们带来的影响非常深远,甚至改变了人们的使用习惯,所以它们会一直被沿用下去。比如我们的键盘上Q、W、E、R、T、Y的排布就是受到打字机的影响,在当年是为了防止打字机因为机械故障而停止工作,同时也是为了使打字员更加方便地使用键盘的第一行输入“typewritter”而造就了这样的设计。
只需要把你想查看的文件夹名字作为参数,就可以查看系统里(或者是通过网络连接的其他系统)的任一文件夹所包含的内容。文件路径遵循文件系统的结构:在一台Windows机器上,它以“我的电脑”作为起始点;在你的树莓派上,根目录是/,我们把它叫作root。
尝试着输入“ls /”命令,我们又一次得到了一些含义不清的内容,其中有一些诸如bin的名字。bin是binary(二进制)的缩写,其中存放了很多应用程序(尝试输入“ls/bin”来查看里面的内容)。ls /dev输出了硬件设备的信息。尝试输入“ls /home”,你应该可以看到pi这个名字。这就是你自己的用户文件夹,你目前是以“pi”这个身份登入系统的。如果你修改了登录的用户名或者添加了额外的用户,它们的主文件夹也会显示在这里。每一位系统用户都有他们自己对应的home文件夹;你的文件夹是/home/pi。在这以前,在输入“ls MagPi”时,我们已经在这个文件夹下了。例如:
pi@raspberrypi:~ $ ls /home pi
使用命令ls /home后会输出所有用户的主文件夹,在我的机器上只有pi这一个默认用户。
如果你想要确认绝对路径,就使用pwd命令。
对于所有已经登录的用户,他们的主目录可以缩写为~(tilda)符号。也就是说,如果你是用户pi,那么~就指代了你的用户主文件夹/home/pi。输入“ls ~”,然后你会看到自己的主目录里目前有什么内容。但是,树莓派会将很多文件与文件夹隐藏起来,这些隐藏文件的文件名通常以点开头,隐藏文件里包含了关于你的系统以及程序相关的配置信息,一般情况下你不需要看见这些文件。
但是,当你想要看到或者修改这些文件的时候,只需要为ls命令加上--all参数,或者是缩写-a:ls -a。在命令行里遍历文件系统比在图形界面中容易得多,尤其是在使用各种缩写的情况下。ls -a命令显示第一个与第二个文件夹分别是.与..,代表了现在的文件路径以及现在的文件夹的上一级路径。尝试着从/home/pi查看你的上一级文件夹路径,输入ls ../../将会显示上两级的文件夹。如果你不想在输出的列表里看到.与..,就只需将- a改成- A。
在我们开始介绍其他的一些命令之前,让我们看一下把各种参数结合起来会怎么样,比如ls -lh命令。-l参数可以告知你更多的文件相关信息,-h参数会把文件及文件夹大小的单位转换到常用的KB、MB或者GB。在后续的章节中,我们会进一步解释-l指令输出的内容的含义。
一般在日常的使用过程中使用ls -al即可。
绝对路径
我们使用的~/mylisting4.txt是绝对路径,因为已经把路径输全了。如果cd到了~主文件夹,就可以直接使用mylisting4.txt,此时效果与~/mylisting4.txt是相同的,这就是相对路径。
想要改变当前文件夹可使用cd(change directory,改变路径)命令,该命令能够让你移动到文件系统的任何一个位置。例如,使用cd /var/log命令查看var文件夹中的内容:
/var/log文件夹下保存了系统状态的各种日志信息,可以用于日后的分析。个人日常使用的话,你不需要时常查看这些文件里的内容;对于那些运行在数据中心以及超级计算机上的树莓派设备,这些监视信息就非常重要了。对于我们来说,大致了解这些文件还是很有必要的,尤其是日后遇到问题并且要求助于他人之时,里面的报错信息能够准确定位问题的来源。
使用cd–指令会带你回到你的主文件夹。亲自试一下吧,然后用pwd检验结果。接下来试一试“cd–”,“–”是你所在的上一个文件路径的简写。现在我们已经学会了如何查看文件夹的内容并且在它们之间跳转,接下来我们会学习如何处理文件。