今天是机派X系列文章的第三天。
昨天在树莓派上成功安装了 Ubuntu Server,今天让我们开始探索 Ubuntu 吧!
本篇将介绍 Ubuntu 的基本概念与操作,前面的部份会比较生硬一点,後面会有较多的实机操作。
本篇大纲:
通常作业系统依照与使用者的互动形式可以分成两种:命令列界面(Command Line Interface , CLI)与图形化使用者界面(Graphical User Interface , GUI)。命令列界面基本上就是使用者透过键盘直接下指令(Command , CMD)给电脑执行,并由电脑输出回应的文字讯息,是较早期开发出来的的互动模式;而图形化使用者界面则是以图像为基础,使用者可以透过滑鼠操作图像与电脑互动,并直接从图像化的结果得知程序执行的状况,较晚期才被开发出来,也较为一般使用者所接受。
看的一头雾水吗?以大家熟知的微软(Microsoft , MS)系列产品为例:
下图是微软的产品 MS-DOS 6.22 执行画面截图,透过键盘下指令(CMD)就能控制电脑。
要跟电脑互动,就要知道指令怎麽下!!
下图是微软的 Windows 7 执行画面截图,就是大家熟悉的图形化使用者界面,只要透过滑鼠点击、拖动就可以完成许多事。
通常,一般电脑使用者都是使用图形化使用者界面较多,因为界面美观、操作方便。
然而,命令列界面虽然看起来丑、使用上要记指令,但是其高效、方便、简洁等优点,成为特定应用的首选。
听起来怪怪的吗?又丑又要记东西,命令列界面竟然还有人用?甚至是首选?
别着急,让我们继续看下去!
图源传送门
服务器(Server)就是呈现命令列界面优点的最佳舞台之一,通常在 Server 上最常使用到的是 CLI 而非 GUI。
原因是 Server 通常是服务的提供者,同时可能会有多个使用者连上 Server 进行操作,这些使用者通常身处各地,透过网路与 Server 连接。由於 CLI 仅须传输使用者输入的指令或电脑的回覆(文字),因此相对於以图行为基础的 GUI 来说,比较不容易受到网路品质的影响,也能减少 Server 系统资源的占用。另外,CLI 模式底下,可以将多条指令(CMD)排列在一起,并制作成一个档案後让电脑定期执行,这样有助於管理员管理 Server。
因为我们安装的是 Ubuntu Server,所以没有图形化使用者界面(GUI),只有命令列界面(CLI)可以使用。
图形化使用者界面的部份之後会教大家安装,现在先学习命令列界面的使用。
因为如果一开始就下载预装 GUI 的 Ubuntu Desktop,我想应该不会有人想学 CLI 了!
请将树莓派接上萤幕、键盘、并插入记忆卡,再提供电源让树莓派开机。
树莓派成功开机完成後,会看到以下画面。
这就是 Ubuntu Server 的 CLI 的使用者登入画面:
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login:
使用者可以输入使用者名称(Username)和密码(Password)登入 Ubuntu,登入後才能使用各种指令(Command , CMD)与功能。
就像你使用 Windows 时,进入桌面、可以自由操做电脑前,你会需要选择使用者(User)与输入密码(Password)一样。
Ubuntu 有预先创建一个使用者,使用者名称为 ubuntu,而密码为 ubuntu。
我们可以使用这个使用者登入系统,之後再创建我们自己的使用者!
透过键盘键入使用者名称 ubuntu 并按下 Enter。
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login: ubuntu
此时,会询问使用者 ubuntu 的密码,请一样输入 ubuntu。
基於安全考量,密码在输入时不会被显示出来,输入完後一样按下 Enter 即可。
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login: ubuntu
Password: 输入的密码不会显示
如果使用者名称与密码配对无误,就可以成功登入。
登入後你会看到最下面一行显示如下。
至於这是什麽意思呢?我们将在之後一探究竟!
ubuntu@ubuntu:~$
注意:
在 Windows 系统中是不区分大小写的(Case Insensitive , CI);然而,在 Linux 系统中(当然包含 Ubuntu)是区分大小写的(Case Sensitive , CS)。因此在 Windows 上输入档名、路径、变数名等东西时,你可能没有注意大小写就直接输入,然而这样的习惯在 Linux 中却会造成大问题。例如:要读取图片 Cat.jpg,在 Windows 中你可以输入 cat.jpg,程序依然会成功执行,然而这在 Linux 中却会被判别为 cat.jpg 不存在。
在 Linux 中,我们将它的命令列界面(CLI)称为 Shell,正如同前面提到的,CLI(也就是 Shell)是我们与 Ubuntu 互动的桥梁,只要在 Shell 中输入指令就可以操作电脑。
登入前的画面中,有一个词:tty1 不知道你有没有注意到?
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login:
如果有 tty1 那是否有 tty2 呢?
Answer:有,总共有 tty1 ~ tty7
其实每一个 tty 都是一个 shell,你一共有 7 个 shell 可以使用。
为什麽要有 7 个呢?
简答:为了让你多工操作时比较方便。
通常,我们向 shell 每输入一条指令,都要等该指令执行完成後,shell 才能接受下一条指令。
为了能够方便使用者同时执行多条指令,因此有 tty1 ~ tty7 共计 7 个 shell 可以使用,这些 shell 彼此互相独立、各自接受使用者输入的指令工作,我们可以让 tty1 复制档案,在复制的过程中,我可以切换到 tty2 同时从网路上下载档案,甚至还可以再切换到 tty3 监控系统各个资源的使用。
透过键盘上的 Ctrl + Alt + Fx 你就可以在不同 shell 间来回切换。
例如:Ctrl + Alt + F1 可以切换到 tty1。
例如:Ctrl + Alt + F2 可以切换到 tty2。
以此类推。
虽然刚刚都只有说 Shell,但是其实 Shell 还分很多种。
最常用的,也是 Ubuntu 内建且预设使用的 Shell,就是 Bash。
其实天底下 Shell 一大堆,但是只要搞清楚一个,其他的就容易了,因为基础概念是一样的。
你可以想像,这就好比你可以使用网页浏览器(Web Browser)浏览网页(Website),然而浏览器又分很多种,例如:Firefox、Google Chrome、Microsoft Edge、Opera 等。Shell 也是一样的道理!虽然各有特色,但是只要你会用其中一个,想要跳槽改用另一个浏览器应该不会太困难。
觉得资讯量有点过多了吗?
图源传送门
接下来,要介绍 Bash 的基本概念,了解 Bash 的概念之後才能活用指令。虽然以下看起来像是针对 Bash 的说明,但是大多数的概念可以被套用在其他 Shell 上。
当你选择 tty1 ~ tty7 中的一个 Shell 成功登入後,Bash 会被载入,就可以看到一些欢迎讯息以及最後一行(如下引文),让我们来解析这行的意思。
Note :
为了让颜色更清楚,我让字体加粗并加了空白。
ubuntu @ ubuntu : ~ $
下表的 Column 1 将上方的文字分离出来做说明,Column 2 说明这个文字所指向的用途,Column 3 针对用途的部份做详尽的解释。
例子 | 用途 | 说明 |
---|---|---|
ubuntu | 使用者名称 Username | 登入这个 Shell 的使用者名称。 |
ubuntu | 主机名称 Hostname | 这台电脑主机的名称,预设是 ubuntu。 |
~ | 工作目录 Working Directory | 当前工作目录的路径。 |
| $ | 提示符 Prompt | 表示 Bash 已就绪,可以输入下一条指令了。 |
前两个应该很好理解,Shell Login 时你输入的使用者名称就会显示在 @ 前,而 @ 後则会显示当前使用的电脑名称,而在这边正好是 ubuntu。其实你可以将 ubuntu@ubuntu 解读为:ubuntu at ubuntu,在 ubuntu 这台电脑上,有个使用者叫 ubuntu。也许你听起来觉得饶舌,之後我们会修改使用者名称与主机名称,听起来就会舒服很多。
而工作目录(Working Directory)则是 CLI 中很重要的概念、在 GUI 中虽然也有,但是较没有那麽关键。在 Linux 中,我们常常会把资料夹(Folder)称为目录(Directory),而工作目录就是:「你下指令时,所在的目录位置」。
在详细谈工作目录前,我们要先复习 CLI 并介绍档案路径的概念。我们知道 CLI 透过使用者输入指令(CMD)与电脑互动,有些指令是要对档案做操作(例如:复制档案),此时我们会需要提供档案的所在位置(Location)以及档名(Filename),而档案所在位置加上档名就会形成档案的完整路径(File Path)。指定档案路径(File Path)有两种方法,一种是绝对路径(Absolute Path),另一种是相对路径(Relative Path)。如果对於这两种路径表示法不熟的话,可以搜寻一下相关资料,或参考 这篇文章 的描述。
Note :
Windows 与 Linux 的路径表示中,斜线的方向不一样。Windows 采用反斜线(Back Slash),而 Linux 采用正斜线(Slash)。
一个相对路径在 Windows 中可表示为: Documents \ salary \ 110_March.xls
一个相对路径在 Linux 中可表示为: Documents / salary / 110_March.xls
而工作目录的用途之一,就是作为相对路径的参考路径。
上面的案例中,工作目录是 ~,而在 Bash 中 ~ 代表家目录(Home Directory)。
家目录牵涉到 Linux 的档案系统架构,之後会再深入介绍。
最後谈到 $,基本上 $ 没什麽特殊用途,就只是告诉你 Bash is ready!Bash 准备好了,你可以输入下一道指令(CMD)了!
每条指令执行完成後,Bash 都会再次显示刚刚介绍的一连串文字:ubuntu@ubuntu:~$,最後的 $ 就是为了告诉你:可以输入下一条指令罗。
如果对於文章内容有建议、纠错或图源标示不正确的问题,欢迎参考 [机派X] Day 1 尝试与文章作者联络。
想看更多本系列的文章,请连结至 [机派X] Day 1 查看大纲。
>>: Ruby on Rails Controller 是干嘛的
之前我们看过用 Python 计算 Gradient 必须要手动计算偏微分之後,才有办法算出 那如...
老套说:「工欲善其事,必先利其器」— 要写网页,就不能没有好用的开发环境。在开始认识各种前端技能之前...
昨天写完查询物品拍卖价格网址後发现...既然都有各国物品名称了 乾脆多做一个查询各国物品名称并附上W...
Portal为不产生parent节点的情形下,将children渲染到DOM节点上面的方法。起手的宣...
mutable vs. immutable 在开始说明前,先复习一道题目: var a = {}; ...