本文介绍了Linux的基础知识,包括其内核的灵活性、命令行界面的重要性、文件系统层次结构标准(FHS)、基本的文件和目录操作、以及使用nano编辑器。文章鼓励读者通过实践加深对Linux的理解,同时推荐进一步学习LinuxBasics内容。
介绍
Linux 是一系列基于 Linux 内核的自由开源操作系统。基于 Linux 的操作系统被称为 Linux 发行版 或 distros。例如 Debian、Ubuntu、Fedora、CentOS、Gentoo、Arch Linux 等等。
Linux 内核自 1991 年以来一直处于活跃开发中,并且被证明非常灵活和适应性强。你可以在世界各地的各种环境中找到运行 Linux 的计算机,从 Web 服务器到手机。如今,90% 的云基础设施和 74% 的全球智能手机都由 Linux 提供支持。
然而,初学者可能会发现 Linux 有些难以接近,因为 Linux 文件系统的结构与 Windows 或 MacOS 上的不同。此外,基于 Linux 的操作系统在很大程度上依赖于使用命令行界面,而大多数个人计算机依赖于图形界面。
本指南旨在介绍重要的命令行概念和技能,并使初学者能够更多地了解 Linux。
先决条件
要按照本指南进行操作,您需要访问运行 Linux 操作系统的计算机。这可以是您通过 SSH 连接的虚拟专用服务器,也可以是您的本地计算机。请注意,本教程是在运行 Ubuntu 20.04 的 Linux 服务器上验证的,但给出的示例应该适用于运行任何 Linux 发行版的任何版本的计算机。
如果您计划使用远程服务器来按照本指南操作,我们建议您首先完成我们的初始服务器设置指南。这样做将为您设置一个安全的服务器环境,包括一个具有 sudo
权限的非 root 用户和使用 UFW 配置的防火墙,您可以使用它来提升您的 Linux 技能。
终端
术语 “终端”、“shell” 和 “命令行界面” 经常被互换使用,但它们之间有细微的区别:
- 终端 是一个输入和输出环境,它呈现一个仅运行 shell 的文本窗口。
- shell 是一个将计算机的操作系统暴露给用户或程序的程序。在 Linux 系统中,终端中呈现的 shell 是一个命令行解释器。
- 命令行界面 是一个用户界面(由命令行解释器程序管理),它处理对计算机程序的命令并输出结果。
当有人在 Linux 的上下文中提到这三个术语中的一个时,他们通常指的是一个终端环境,您可以在其中运行命令并将结果打印到终端上,就像这样:
!终端窗口示例
成为 Linux 专家需要您熟练使用终端。任何管理任务,包括文件操作、软件包安装和用户管理,都可以通过终端完成。终端是交互式的:您指定要运行的命令,终端输出这些命令的结果。要执行任何命令,您只需将其键入提示符并按 ENTER
键。
当访问云服务器时,您通常会通过终端 shell 进行操作。尽管运行 Linux 的个人计算机通常配备大多数计算机用户熟悉的图形桌面环境,但通过在终端中输入命令执行某些任务通常更有效或更实用。
文件系统层次结构标准
几乎所有的 Linux 发行版都符合一个名为文件系统层次结构标准(FHS)的通用标准。FHS 定义了一组目录,每个目录都有其特定的功能。
正斜杠(/
)用于表示 FHS 定义的文件系统层次结构中的根目录。
当用户登录到 shell 时,他们会被带到他们自己的用户目录,存储在 /home/
中。这被称为用户的 主目录。FHS 将 /home/
定义为包含常规用户主目录的目录。
root 用户有其自己的主目录,由 FHS 指定:/root/
。请注意,/
被称为 “根目录”,它与 root/
不同,后者存储在 /
中。
由于 FHS 是 Linux 机器上的默认文件系统布局,并且其中的每个目录都包含用于特定目的的特定目录,因此它简化了按其功能组织文件的过程。
导航
Linux 文件系统基于目录树。这意味着您可以在其他目录中创建目录(在其他操作系统中与 文件夹 功能上相同),并且文件可以存在于任何目录中。
要查看您当前活动的目录,可以运行 pwd
命令,它代表 “打印工作目录”:
pwd
pwd
打印当前目录的路径。输出将类似于:
/home/sammy
此示例输出表示当前活动目录是 sammy
,它位于 home/
目录中,位于根目录 /
中。如前所述,由于 sammy/
目录存储在 home/
目录中,因此 sammy/
表示 sammy 用户的主目录。
要查看当前工作目录中存在的文件和目录的列表,请运行 ls
命令:
ls
这将返回当前工作目录中存在的任何文件或目录的名称列表。但是,如果您在新计算机上按照本指南操作,此命令可能不会返回任何输出。
您可以使用 mkdir
命令在当前工作目录中创建一个或多个新目录,该命令代表 “make directory”。例如,要创建两个名为 testdir1
和 testdir2
的新目录,您可以运行以下命令:
mkdir testdir1 testdir2
现在当您运行 ls
命令时,这些目录将出现在输出中:
ls
testdir1 testdir2
要进入这些新目录中的一个,运行 cd
命令(代表 “change directory”)并指定目录的名称:
cd testdir1
这将把您的新当前工作目录更改为您指定的目录。您可以通过 pwd
查看:
pwd
/home/sammy/testdir1
但是,由于 testdir1
和 testdir2
都存储在 sammy 用户的主目录中,它们位于目录树的不同分支中。cd
命令会在当前工作目录中查找目录,因此这意味着您无法直接进入您之前创建的 testdir2
目录,而 testdir1
是您的工作目录:
cd testdir2
bash: cd: testdir2: No such file or directory
但是,无论您当前的工作目录如何,您都可以进入任何现有目录,只要指定您要导航到的目录的完整路径:
cd /home/sammy/testdir2
此外,您可以指定 ..
来切换到您路径中的上一级目录。要返回到原始目录:
cd ..
如果您对导航树中的位置感到困惑,记住您始终可以运行 pwd
命令来查找您当前的目录。许多现代 shell(包括 Bash,许多 Linux 发行版的默认 shell)也会指示您当前的目录,就像本节中的示例命令一样。
文件操作
您不能使用 cd
命令与文件进行交互;cd
代表 “change directory”,只允许您浏览目录。但是,您可以创建、编辑和查看文件的内容。
使用 touch
命令是创建文件的一种方式。要创建一个名为 file.txt
的新文件:
touch file.txt
这将在当前工作目录中创建一个名为 file.txt
的空文件。该文件的内容为空。
如果以后决定重命名 file.txt
,可以使用 mv
命令:
mv file.txt newfile.txt
mv
代表 “move”,它可以将文件或目录从一个位置移动到另一个位置。通过指定原始文件 file.txt
,您可以将其“移动”到当前工作目录中的新位置,从而重命名它。
还可以使用 cp
命令将文件复制到新位置。如果想要恢复 file.txt
但保留 newfile.txt
,可以像这样复制 newfile.txt
并命名为 file.txt
:
cp newfile.txt file.txt
您可能已经猜到,cp
是 “copy” 的缩写。通过将 newfile.txt
复制到名为 file.txt
的新文件中,您已经在新文件中复制了原始文件并更改了名称。
然而,如果文件不包含任何内容,它们就没有太多用处。要编辑文件,需要一个文件编辑器。
有许多文件编辑器可供选择,都是由专业人士为日常使用而创建的。这些编辑器包括 vim
、emacs
、nano
和 pico
。
对于初学者来说,nano
是一个合适的选择:它相对用户友好,不会用神秘的选项或命令来使您感到不知所措。
要使用 nano
向 file.txt
添加文本,运行以下命令:
nano file.txt
这将打开一个空间,您可以立即开始输入以编辑 file.txt
。添加任何您喜欢的文本,或者您可以复制本示例中的文本:
## 学习的文化 要在 Linux 系统中通过终端窗口自如地进行导航,尤其是对于完全陌生的人来说,需要时间、专注和一种好奇的心态。 当你对如何完成某项任务有疑问时,有几种学习途径可供选择。像 Google 和 DuckDuckGo 这样的搜索引擎是宝贵的资源,还有像 Stack Exchange 或 DigitalOcean 的社区问答等问答网站。如果你有问题,很可能许多其他人已经问过,并得到了答案。 如果你的问题涉及特定的 Linux 命令,手册页面为几乎每个命令提供了详细而富有见地的文档。要查看任何命令的手册页,将命令的名称作为参数传递给 `man` 命令: ```command man command
例如,man rm
显示了 rm
的用途、如何使用它、可用的选项、使用示例以及更多有用的信息。
结论
本指南作为使用 Linux 环境的简介。然而,完全理解 Linux 及其所有组件远远超出了单个教程的范围。例如,本教程没有提及权限,这是 Linux 系统管理的基本概念之一。
我们鼓励你查看我们的所有入门级 Linux 内容,这些内容可以在我们的Linux Basics标签页面上找到。