简介
Linux是一系列基于linux内核的免费开源操作系统。基于Linux的操作系统称为Linux发行版或发行版。例如Debian、Ubuntu、Fedora、CentOS、Gentoo、Arch Linux等。
自1991年以来,Linux内核一直在积极开发中,并已被证明具有极强的通用性和适应性。你可以在世界各地的各种环境中找到运行Linux的计算机,从网络服务器到手机。如今,全球90%的云基础设施和74%的智能手机采用Linux操作系统。
然而,Linux的新手可能会发现很难接近,因为Linux文件系统的结构与Windows或MacOS上的文件系统不同。此外,基于Linux的操作系统在很大程度上依赖于命令行界面,而大多数个人计算机则依赖于图形界面。
本指南介绍了重要的命令行概念和技能,并使新手能够更多地了解Linux。
前提条件
要按照本指南操作,您需要访问运行基于Linux的操作系统的计算机。这可以是您通过SSH连接到的虚拟专用服务器,也可以是您的本地计算机。请注意,本教程是使用运行Ubuntu 20.04的Linux服务器进行验证的,但给出的示例应该可以在运行任何版本的任何Linux发行版的计算机上运行。
如果您计划使用远程服务器遵循本指南,我们建议您首先完成我们的初始服务器设置guide.这样做将为您设置一个安全的服务器环境--包括一个拥有sudo
特权的非超级用户 用户和一个配置了UFW的防火墙--您可以用它来构建您的Linux技能。
终端
术语终端
、外壳
和命令行界面
通常可以互换使用,但它们之间有细微的区别:
- A_TERMINAL_是一个输入和输出环境,它呈现一个运行外壳的纯文本窗口。
- A_SHELL_是向用户或程序公开计算机操作系统的程序。在Linux系统中,终端中显示的外壳是命令行解释器。
- 命令行界面是一个用户界面(由命令行解释程序管理),它处理发送给计算机程序的命令并输出结果。
当有人在Linux上下文中提到这三个术语之一时,它们通常指的是一个终端环境,在该环境中,您可以运行命令并查看输出到终端的结果,如下所示:
要成为一名Linux专家,您需要熟悉使用终端。任何管理任务,包括文件操作、包安装和用户管理,都可以通过终端完成。终端是交互式的:您指定要运行的命令,终端输出这些命令的结果。要执行任何命令,请在提示符中键入该命令,然后按Enter
键。
在访问云服务器时,您通常会通过终端外壳进行访问。尽管运行Linux的个人计算机通常带有大多数计算机用户所熟悉的那种图形桌面环境,但是通过输入到终端中的命令来执行某些任务通常更有效或更实用。
文件系统层次标准
几乎所有的Linux发行版都符合文件系统目录结构的通用标准,称为文件系统层次结构标准(FHS).FHS定义了一组目录,每个目录都有自己的特殊功能。
正斜杠(/
)用于表示FHS定义的文件系统层次结构中的根目录。
当用户登录到外壳时,他们被带到他们自己的用户目录,存储在/home/
中。这称为用户的主目录。FHS将/home/
定义为包含常规用户的主目录。
root 用户有自己的主目录,由FHS指定:/root/
。请注意,/
被称为根目录
,它与root/
不同,后者存储在/
中。
因为FHS是Linux机器上的默认文件系统布局,并且其中的每个目录都是为特定目的而包含的,所以它简化了按功能组织文件的过程。
♪导航
Linux文件系统基于目录树。这意味着您可以在其他目录中创建目录(在功能上与其他操作系统中的_Folders_Found相同),并且文件可以存在于任何目录中。
要查看您当前处于活动状态的目录,可以运行pwd
命令,该命令代表打印工作目录
:
1pwd
pwd
打印当前目录的路径。输出将如下所示:
1[secondary_label Output]
2/home/sammy
本例输出表明当前活动目录为sammy
,位于home/
目录下,根目录为/
。如前所述,由于sammy/
目录存储在home/
目录中,所以sammy/
表示sammy 用户的home目录。
要查看当前工作目录中存在的文件和目录列表,请运行ls
命令:
1ls
这将返回当前工作目录中保存的所有文件或目录的名称列表。但是,如果您在一台新机器上遵循此指南,则此命令可能不会返回任何输出。
您可以使用mkdir
命令在当前工作目录中创建一个或多个新目录,该命令代表make directory
。例如,要创建两个名为testdir 1
和testdir 2
的新目录,可以运行以下命令:
1mkdir testdir1 testdir2
现在,当您运行ls
命令时,输出中将出现以下目录:
1ls
1[secondary_label Output]
2testdir1
3testdir2
要导航到这些新目录之一,请运行cd
命令(代表)并指定目录的名称:
1cd testdir1
这会将新的当前工作目录更改为您指定的目录。可以通过pwd
查看:
1pwd
1[secondary_label Output]
2/home/sammy/testdir1
但是,由于testdir1
和testdir2
都在Sammy 用户的主目录中,所以它们位于目录树的不同分支中。cd
命令查找您当前工作目录中的目录,这意味着您不能直接cd
进入您之前创建的testdir2
目录,而testdir1
是您的工作目录:
1cd testdir2
1[secondary_label Output]
2bash: cd: testdir2: No such file or directory
但是,如果指定要导航到的目录的完整路径,则可以导航到任何现有目录,而不考虑当前工作目录:
1cd /home/sammy/testdir2
<$>[备注]
注意: 在Linux中,波浪号(~
)是您登录的用户主目录的缩写。了解了这一点,您也可以像这样编写前面的命令,它将获得相同的结果:
1cd ~/testdir2
<$>
此外,您可以指定..
以切换到路径中的上一级目录。要返回到原始目录,请执行以下操作:
1cd ..
如果您对自己在导航树中的位置感到困惑,请记住,您始终可以运行pwd
命令来查找当前目录。许多现代的外壳程序(包括Bash,它是许多Linux发行版的默认外壳)也会指示您的当前目录,如本节中的示例命令所示。
文件操作
您不能使用cd
与文件交互;cd
代表更改目录,仅允许您导航目录。但是,您可以创建、编辑和查看文件的内容。
创建文件的一种方法是使用Touch
命令。要创建名为file.txt
的新文件,请执行以下操作:
1touch file.txt
这将在当前工作目录中创建一个名为file.txt
的空文件。此文件的内容为空。
如果您稍后决定重命名file.txt
,可以使用mv
命令:
1mv file.txt newfile.txt
mv
代表移动
,可以将文件或目录从一个位置移动到另一个位置。通过指定原始文件file.txt
,您可以将其移动
到当前工作目录中的新位置,从而将其重命名。
还可以使用cp
命令将文件复制到新位置。如果我们想带回file.txt
,但又想保留newfile.txt
,您可以复制newfile.txt
,命名为file.txt
:
1cp newfile.txt file.txt
你可能已经猜到了,cp
是复制
的缩写。通过将newfile.txt
复制到名为file.txt
的新文件中,您已经将原始文件复制到另一个名称的新文件中。
然而,如果文件不包含任何内容,那么它们就没有多大用处。要编辑文件,必须使用文件编辑器。
文件编辑器有许多选项,都是由专业人员创建的,供日常使用。这样的编辑器包括vim
,emacs
、Nan
和pico
。
Nan
对于初学者来说是一个合适的选择:它相对用户友好,不会给你带来太多隐晦的选项或命令。
要使用nan
向file.txt
添加文本,请运行以下命令:
1nano file.txt
这将打开一个空间,您可以立即开始输入以编辑file.txt
。添加您喜欢的任何文本,或者您可以复制此示例中的文本:
1[label file.txt]
2Say it's only a paper moon
3Sailing over a cardboard sea,
4But it wouldn't be make believe
5If you believed in me.
6
7Yes it's only a canvas sky
8Hanging over a muslin tree,
9But it wouldn't be make believe
10If you believed in me.
11
12Without your love,
13It's a honky-tonk parade.
14Without your love,
15It's a melody played in a penny arcade.
16
17It's a Barnum and Bailey world,
18Just as phony as it can be,
19But it wouldn't be make believe
20If you believed in me.
要保存您的书面文本,请按CTRL+X
、Y
,然后按Enter
。这将使您返回到包含新保存的file.txt
文件的外壳。
现在file.txt
中有一些文本,您可以使用cat
或less
查看它。
cat
命令将指定文件的内容打印到系统的输出。尝试运行cat
,并将您刚刚编辑的file.txt
文件作为参数传递:
1cat file.txt
这会将file.txt
的全部内容打印到终端。如果您使用了上一个示例中的文本,则此命令将返回类似以下内容的输出:
1[secondary_label Output]
2Say it's only a paper moon
3Sailing over a cardboard sea,
4But it wouldn't be make believe
5If you believed in me.
6
7Yes it's only a canvas sky
8Hanging over a muslin tree,
9But it wouldn't be make believe
10If you believed in me.
11
12Without your love,
13It's a honky-tonk parade.
14Without your love,
15It's a melody played in a penny arcade.
16
17It's a Barnum and Bailey world,
18Just as phony as it can be,
19But it wouldn't be make believe
20If you believed in me.
如果文件特别长,使用cat
查看文件内容可能会很笨拙,也很难阅读。或者,您可以使用less
命令,该命令允许您对输出进行分页。
使用less
查看file.txt
文件的内容,如下所示:
1less file.txt
这也将打印file.txt
的内容,但从文件的开头开始,一次打印一个终端页面。您可以使用空格键前进一页,或使用箭头键一次上下移动一行。
按q
退出less
。
最后,要删除file.txt
文件,需要将文件名作为参数传递给rm
:
1rm file.txt
<$>[备注]
注意: 如果没有其他选项,则不能使用rm
命令(代表)删除目录。但是,它确实包含-d
标志,允许您删除空目录:
1rm -d directory
您也可以使用rmdir
命令删除空目录:
1rmdir directory
如果您想删除一个非空目录,可以运行带-r
标志的rm
。这将删除指定的目录及其内容,包括任何文件和子目录:
1rm -r directory
但是,由于删除内容是永久性操作,所以只有在您确定要删除指定目录的情况下,才应运行带有-r
选项的rm
。
<$>
学习文化
通过终端窗口在Linux系统中导航需要时间、奉献精神和好奇的心态,特别是在您对它完全陌生的情况下。
当你对如何完成某项任务有疑问时,你可以求助于几种指导方法。像Google和DuckDuckGo这样的搜索引擎是非常宝贵的资源,像Stack Exchange或DigitalOcean's Community Q&A这样的问答网站也是如此。google.com如果你有一个问题,可能很多人已经问过了,并且已经得到了答案。
如果您的问题与特定的Linux命令有关,手册页面几乎为每个命令提供了详细而有见地的文档。要查看任何命令的手册页,请将命令的名称作为参数传递给man
命令:
1man command
例如,man rm
显示了rm
的用途、使用方法、可用的选项、使用示例以及更多有用的信息。
结论
本指南介绍如何使用Linux环境。然而,完全理解Linux及其所有组件远远超出了单一教程的范围。例如,本教程没有提到permissions,是Linux系统管理的基本概念。
我们鼓励您查看我们所有的介绍性Linux内容,这些内容可以在我们的Linux基础 标签页面.)上找到