介绍
如果您没有太多使用 Linux 系统的经验,您可能会对从命令行控制操作系统的前景感到不知所措。 在本指南中,我们将尝试让您快速掌握基础知识。
本指南不会涵盖有效使用 Linux 系统所需了解的所有内容。 但是,它应该为您未来的探索提供一个很好的起点。 本指南将为您提供在继续阅读其他指南之前需要了解的最低限度。
先决条件和目标
为了遵循本指南,您需要能够访问 Linux 服务器。 如果您需要第一次连接到服务器的信息,您可以按照 我们的使用 SSH 连接到 Linux 服务器的指南 。
您还需要对终端的工作原理以及 Linux 命令的外观有一个基本的了解。 本指南涵盖了终端基础知识,所以如果您不熟悉终端使用,请查看它。
本指南中的所有材料都可以使用常规的非 root(非管理)用户帐户来完成。 您可以按照发行版的初始服务器设置指南(Ubuntu 14.04、CentOS 7)了解如何配置此类用户帐户。
当您准备好开始时,使用 SSH 连接到您的 Linux 服务器并继续下面的操作。
导航和探索
您需要掌握的最基本技能是在文件系统中移动并了解您周围的情况。 我们将在本节讨论允许您执行此操作的工具。
使用“pwd”命令查找您的位置
当您登录到您的服务器时,您通常会进入您的用户帐户的 主目录 。 主目录是为您的用户留出的用于存储文件和创建目录的目录。 它是您拥有完全控制权的文件系统中的位置。
要找出您的主目录与文件系统其余部分的关系,您可以使用 pwd
命令。 此命令显示我们当前所在的目录:
pwd
你应该得到一些看起来像这样的信息:
/home/demo
主目录以用户帐户命名,因此上面的示例是如果您使用名为 demo
的帐户登录到服务器的值。 该目录位于名为 /home
的目录中,该目录本身位于顶级目录中,称为“root”,但由单个斜杠“/”表示。
用“ls”查看目录的内容
现在您知道如何显示您所在的目录,我们可以向您展示如何查看目录的内容。
目前,我们在上面看到的您的主目录没有太多可看的,因此我们将转到另一个人口更多的目录进行探索。 在终端中键入以下内容以移动到该目录(我们将在下一节中解释移动目录的详细信息)。 之后,我们将使用 pwd
来确认我们移动成功:
cd /usr/share pwd
/usr/share
现在我们在一个新目录中,让我们看看里面有什么。 为此,我们可以使用 ls
命令:
ls
adduser groff pam-configs applications grub perl apport grub-gfxpayload-lists perl5 apps hal pixmaps apt i18n pkgconfig aptitude icons polkit-1 apt-xapian-index info popularity-contest . . .
如您所见,此目录中有许多项。 我们可以在命令中添加一些可选标志来修改默认行为。 例如,要以扩展形式列出所有内容,我们可以使用 -l
标志(用于“长”输出):
ls -l
total 440 drwxr-xr-x 2 root root 4096 Apr 17 2014 adduser drwxr-xr-x 2 root root 4096 Sep 24 19:11 applications drwxr-xr-x 6 root root 4096 Oct 9 18:16 apport drwxr-xr-x 3 root root 4096 Apr 17 2014 apps drwxr-xr-x 2 root root 4096 Oct 9 18:15 apt drwxr-xr-x 2 root root 4096 Apr 17 2014 aptitude drwxr-xr-x 4 root root 4096 Apr 17 2014 apt-xapian-index drwxr-xr-x 2 root root 4096 Apr 17 2014 awk . . .
这种观点为我们提供了大量信息,其中大部分看起来很不寻常。 第一个块描述文件类型(如果第一列是“d”,则项目是目录,如果是“-”,则表示普通文件)和权限。 随后的每一列以空格分隔,描述硬链接的数量、所有者、组所有者、项目大小、上次修改时间和项目名称。 我们将在其他时间描述其中的一些,但现在,只需知道您可以使用 ls
的 -l
标志查看此信息。
要获取所有文件的列表,包括 hidden 文件和目录,您可以添加 -a
标志。 由于 /usr/share
目录中没有真正的隐藏文件,让我们回到我们的主目录并尝试该命令。 您可以通过不带参数输入 cd
返回主目录:
cd ls -a
. .. .bash_logout .bashrc .profile
如您所见,此演示中有三个隐藏文件,以及 .
和 ..
,它们是特殊指标。 您会发现,配置文件通常被存储为隐藏文件,就像这里的情况一样。
对于点和双点条目,它们并不完全是目录,而是引用相关目录的内置方法。 单点表示当前目录,双点表示该目录的父目录。 这将在下一节中派上用场。
使用“cd”移动文件系统
在上一节中,为了演示 ls
的一些属性,我们已经进行了两次目录移动。 让我们更好地看看这里的命令。
首先通过键入以下内容返回 /usr/share
目录:
cd /usr/share
这是一个通过给出 绝对路径 来更改目录的示例。 在 Linux 中,每个文件和目录都位于最顶层目录下,该目录称为“根”目录,但由一个前导斜杠“/”表示。 绝对路径指示目录相对于该顶级目录的位置。 这使我们可以从文件系统中的任何位置以明确的方式引用目录。 每个绝对路径 必须 以斜线开头。
另一种方法是使用 相对路径 。 相对路径是指与 current 目录相关的目录。 对于层次结构中靠近当前目录的目录,这通常更容易且更短。 当前目录中的任何目录都可以按名称引用,而无需前导斜杠。 我们可以通过键入以下命令从当前位置更改到 /usr/share
中的 locale
目录:
cd locale
我们同样可以通过提供当前目录路径之后的路径部分来移动具有相对路径的多个目录级别。 从这里,我们可以通过键入以下内容进入 en
目录中的 LC_MESSAGES
目录:
cd en/LC_MESSAGES
要返回到当前目录的父目录,我们使用我们之前讨论过的特殊双点指示器。 例如,我们现在在 /usr/share/locale/en/LC_MESSAGES
目录中。 要上一级,我们可以输入:
cd ..
这会将我们带到 /usr/share/locale/en
目录。
您之前看到的始终将您带回主目录的快捷方式是使用 cd
而不提供目录:
cd pwd
/home/demo
要了解有关如何使用这三个命令的更多信息,您可以查看 我们的 Linux 文件系统探索指南 。
查看文件
在上一节中,我们学习了一些关于如何导航文件系统的知识。 在不同目录中使用 ls
命令时,您可能会看到一些文件。 在本节中,我们将讨论可用于查看文件的不同方式。 与某些操作系统相比,Linux 和其他类 Unix 操作系统依赖于系统大部分的纯文本文件。
我们查看文件的主要方式是使用 less
命令。 这就是我们所说的“寻呼机”,因为它允许我们滚动浏览文件的页面。 虽然前面的命令立即执行并返回到命令行,但 less
是一个应用程序,它将继续运行并占据屏幕直到您退出。
我们将打开/etc/services
文件,该文件是一个配置文件,包含系统知道的服务信息:
less /etc/services
该文件将在 less
中打开,允许您查看适合终端窗口区域的文档部分:
# Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, officially ports have two entries # even if the protocol doesn't support UDP operations. # # Updated from http://www.iana.org/assignments/port-numbers and other # sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services . # New ports will be added on request if they have been officially assigned # by IANA and used in the real-world or are needed by a debian package. # If you need a huge list of used numbers please install the nmap package. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp . . .
要滚动,您可以使用键盘上的向上和向下箭头键。 要向下翻页一整屏信息,您可以使用空格键、键盘上的“Page Down”按钮或 CTRL-f
快捷键。
要向上滚动,您可以使用“Page Up”按钮或 CTRL-b
键盘快捷键。
要搜索文档中的某些文本,您可以键入正斜杠“/”,后跟搜索词。 例如,要搜索“邮件”,我们会输入:
这将在文档中向前搜索并在第一个结果处停止。 要获得另一个结果,您可以键入小写的 n
键:
n
要向后移动到上一个结果,请改用大写字母 N
:
N
当您想退出less
程序时,可以输入q
退出:
q
虽然我们在本节中专注于 less
工具,但在某些情况下还有许多其他查看文件的方法会派上用场。 cat
命令显示文件的内容并立即返回提示。 head
命令默认显示文件的前 10 行。 同样,tail
命令默认显示最后 10 行。 这些命令以一种对“管道”到其他程序有用的方式显示文件内容。 我们将在以后的指南中讨论这个概念。
随意看看这些命令如何以不同的方式显示 /etc/services
文件。
文件和目录操作
我们在上一节中学习了如何查看文件。 在本节中,我们将演示如何创建和操作文件和目录。
使用“触摸”创建文件
许多命令和程序都可以创建文件。 创建文件的最基本方法是使用 touch
命令。 这将使用指定的名称和位置创建一个空文件。
首先,我们应该确保我们在我们的主目录中,因为这是我们有权保存文件的位置。 然后,我们可以通过键入以下命令创建一个名为 file1
的文件:
cd touch file1
现在,如果我们查看目录中的文件,我们可以看到我们新创建的文件:
ls
file1
如果我们在现有文件上使用此命令,该命令只会更新文件系统在上次访问和修改文件时存储的数据。 目前这对我们没有多大用处。
我们也可以同时创建多个文件。 我们也可以使用绝对路径。 例如,如果我们的用户帐户名为 demo
,我们可以输入:
touch /home/demo/file2 /home/demo/file3 ls
file1 file2 file3
使用“mkdir”创建目录
类似于 touch
命令,mkdir
命令允许我们创建空目录。
例如,要在我们的主目录中创建一个名为 test
的目录,我们可以键入:
cd mkdir test
我们可以通过键入以下命令在 test
目录 example
中创建一个目录 within:
mkdir test/example
要使上述命令起作用,test
目录必须已经存在。 要告诉 mkdir
它应该创建构建给定目录路径所需的任何目录,您可以使用 -p
选项。 这使您可以一步创建嵌套目录。 我们可以通过键入以下内容来创建一个类似于 some/other/directories
的目录结构:
mkdir -p some/other/directories
该命令将首先创建 some
目录,然后在其中创建 other
目录。 最后,它将在这两个目录中创建 directories
目录。
使用“mv”移动和重命名文件和目录
我们可以使用 mv
命令将文件移动到新位置。 例如,我们可以通过键入以下命令将 file1
移动到 test
目录中:
mv file1 test
对于这个命令,我们给出了我们希望移动的所有项目,并在最后给出了移动它们的位置。 我们可以通过使用特殊的点引用来引用我们的当前目录,将该文件 back 移动到我们的主目录。 我们应该确保我们在我们的主目录中,然后执行命令:
cd mv test/file1 .
起初这可能看起来不直观,但 mv
命令也用于 重命名 文件和目录。 本质上,移动和重命名都只是调整现有项目的位置和名称。
因此,要将 test
目录重命名为 testing
,我们可以键入:
mv test testing
注意:重要的是要意识到您的 Linux 系统不会阻止您进行某些破坏性操作。 如果您正在重命名文件并选择已经存在的名称,则之前的文件将被您正在移动的文件覆盖。 如果您不小心覆盖了以前的文件,则无法恢复它。
使用“cp”复制文件和目录
使用 mv
命令,我们可以移动或重命名文件或目录,但不能复制它。 cp
命令可以制作现有项目的新副本。
例如,我们可以将 file3
复制到一个名为 file4
的新文件中:
cp file3 file4
与 mv
操作不同,之后 file3
将不再存在,我们现在同时拥有 file3
和 file4
。
注意:与mv
命令一样,如果您不注意用作操作目标的文件名,则可以覆盖文件。 例如,如果file4
在上面的例子中已经存在,那么它的内容将完全被file3
的内容所替代。
为了复制目录,您必须在命令中包含 -r
选项。 这代表“递归”,因为它复制目录以及目录的所有内容。 无论目录是否为空,此选项对于目录都是必需的。
例如,要将 some
目录结构复制到一个名为 again
的新结构中,我们可以键入:
cp -r some again
与现有目标会导致覆盖的文件不同,如果目标是 现有目录 ,则文件或目录将复制 到 目标中:
cp file1 again
这将创建 file1
的新副本并将其放在 again
目录中。
使用“rm”和“rmdir”删除文件和目录
要删除文件,可以使用 rm
命令。
注意:使用任何破坏性命令(如rm
)时要格外小心。 这些操作没有“撤消”命令,因此可能会意外永久破坏重要文件。
要删除常规文件,只需将其传递给 rm
命令:
cd rm file4
同样,要删除 empty 目录,我们可以使用 rmdir
命令。 只有在相关目录中没有任何内容时,这才会成功。 例如,要删除 testing
目录中的 example
目录,我们可以键入:
rmdir testing/example
如果您希望删除 非空 目录,则必须再次使用 rm
命令。 这一次,您将不得不传递 -r
选项,它会递归地删除目录的所有内容以及目录本身。
例如,要删除 again
目录及其中的所有内容,我们可以键入:
rm -r again
再次值得重申的是,这些都是永久性行动。 完全确定您键入的命令是您希望执行的命令。
编辑文件
目前,我们知道如何将文件作为对象来操作,但我们还没有学会如何实际编辑它们并向它们添加内容。
nano
命令是最简单的命令行 Linux 文本编辑器之一,对于初学者来说是一个很好的起点。 它的操作有点类似于上面讨论的 less
程序,因为它在使用期间占据了整个终端。
nano
编辑器可以打开现有文件,或创建文件。 如果您决定创建一个新文件,您可以在调用 nano
编辑器时为其命名,或者稍后在您希望保存内容时为其命名。
我们可以通过键入以下命令打开 file1
文件进行编辑:
cd nano file1
nano
应用程序将打开文件(当前为空白)。 界面看起来像这样:
GNU nano 2.2.6 File: file1 [ Read 0 lines ] ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
在顶部,我们有应用程序的名称和我们正在编辑的文件的名称。 中间显示了当前为空白的文件内容。 在底部,我们有许多组合键,表示编辑器的一些基本控件。 对于其中的每一个,^
字符表示 CTRL
键。
要从编辑器中获得帮助,请键入:
CTRL-G
浏览完帮助后,键入 CTRL-X
以返回您的文档。
输入或修改您想要的任何文本。 对于这个例子,我们只需要输入这两个句子:
Hello there. Here is some text.
为了保存我们的工作,我们可以输入:
CTRL-O
这是字母“o”,而不是零。 它会要求您确认要保存到的文件的名称:
File Name to Write: file1 ^G Get Help M-D DOS Format M-A Append M-B Backup File ^C Cancel M-M Mac Format M-P Prepend
如您所见,底部的选项也发生了变化。 这些是上下文相关的,这意味着它们会根据您尝试做的事情而改变。 如果 file1
仍然是您要写入的文件,请按“ENTER”。
如果我们进行一些额外的更改并希望保存文件并退出程序,我们将看到类似的提示。 添加一个新行,然后尝试通过键入以下内容退出程序:
CTRL-X
如果您在进行修改后还没有保存,系统会询问您是否要保存所做的修改:
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? Y Yes N No ^C Cancel
您可以键入“Y”保存更改,“N”放弃更改并退出,或“CTRL-C”取消退出操作。 如果您选择保存,您将收到与之前收到的相同的文件提示,确认您要将更改保存到同一文件。 按 ENTER 保存文件并退出编辑器。
您可以使用 cat
程序显示内容,或使用 less
程序打开文件进行查看来查看您创建的文件的内容。 使用 less
查看后,请记住您应该点击 q
以返回终端。
less file1
Hello there. Here is some text. Another line.
您可能会看到某些指南中引用的另一个编辑器是 vim
或 vi
。 这是一个更高级的编辑器,功能非常强大,但学习曲线非常陡峭。 如果有人告诉您使用 vim
或 vi
,请随意使用 nano
。 如果你想学习如何使用 vim
,请阅读我们的 开始使用 vim 指南。
结论
到目前为止,您应该对如何绕过 Linux 服务器以及如何查看可用的文件和目录有了基本的了解。 您还应该了解一些基本的文件操作命令,这些命令可以让您查看、复制、移动或删除文件。 最后,您应该熟悉使用 nano
文本编辑器进行的一些基本编辑。
有了这几项技能,您应该能够继续学习其他指南并学习如何充分利用您的服务器。 在我们的下一个指南中,我们将讨论 如何查看和理解 Linux 权限 。