导航和操作文件系统中的文件和文件夹是使用大多数计算机的关键部分。云服务器大多使用相同的常见 Linux shell 和常见 Linux 命令来处理文件和文件夹。本终端将介绍使用这些命令的一些基本技能。
为了遵循本指南,您需要有权访问 Linux 服务器。如果您需要有关首次连接到服务器的信息,您可以按照我们使用 SSH 连接到 Linux 服务器的指南.
您还需要了解终端的工作原理以及 Linux 命令的样子。本指南介绍了终端.
本指南中的所有内容都可以使用常规的非根(非管理)用户帐户来完成。您可以按照您的发行版的初始服务器设置指南来了解如何配置此类用户帐户,例如乌班图22.04.
当您准备好开始时,请使用 SSH 连接到您的 Linux 服务器并继续下面的操作。
您需要掌握的最基本技能是在文件系统中移动并了解您周围的情况。您将在本节中查看允许您执行此操作的工具。
当您登录服务器时,通常会进入您的用户帐户主目录。主目录是为用户存储文件和创建目录预留的目录。它是文件系统中您拥有完全控制权的位置。
要找出您的主目录相对于文件系统其余部分的位置,您可以使用pwd
命令。此命令显示您当前所在的目录:
Output
/home/sammy
主目录以用户帐户命名。该目录位于名为的目录中/home
,它本身位于顶级目录中,通常称为“根”目录,并由单个斜杠表示/
.
现在您已经知道如何显示您所在的目录,您可以查看目录的内容。
目前,您的主目录没有太多可看的内容,因此您可以转到另一个填充更多的目录来探索。使用cd
移动到该目录。之后,您将使用pwd
确认您已成功移动:
Output
/usr/share
现在您已经进入了一个新目录,让我们看看里面有什么。为此,您可以使用ls
命令:
Output
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
标志(用于“长”输出):
Output
total 440
drwxr-xr-x 2 root root 4096 Apr 17 2022 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 2022 apps
drwxr-xr-x 2 root root 4096 Oct 9 18:15 apt
drwxr-xr-x 2 root root 4096 Apr 17 2022 aptitude
drwxr-xr-x 4 root root 4096 Apr 17 2022 apt-xapian-index
drwxr-xr-x 2 root root 4096 Apr 17 2022 awk
. . .
这个观点给了我们很多信息。第一个块描述文件类型(如果第一列是“d”,则该项目是目录,如果是“-”,则它是普通文件)和权限。随后的每一列按顺序描述了系统上其他位置的该文件的硬链接数量、所有者、组所有者、项目大小、上次修改时间以及项目名称。
获取所有文件的列表,包括hidden文件和目录,您可以添加-a
旗帜。由于该文件中没有真正的隐藏文件/usr/share
目录,让我们返回到您的主目录并尝试该命令。您可以通过键入返回主目录cd
没有参数:
Output
. .. .bash_logout .bashrc .profile
如您所见,有三个隐藏文件,以及.
and ..
,这是特殊指标。您会发现,配置文件通常被存储为隐藏文件,就像这里的情况一样。
对于点和双点条目,它们并不完全是目录,而是引用相关目录的内置方法。单点表示当前目录,双点表示该目录的父目录。这将在下一节中派上用场。
您已经进行了两次目录移动以演示ls
在最后一节中。让我们更好地看看这里的命令。
首先回到/usr/share
目录:
这是通过提供更改目录的示例绝对路径。在 Linux 中,每个文件和目录都位于最顶层目录下,该目录称为“根”目录,但由单个前导斜杠“/”引用。绝对路径指示相对于该顶级目录的目录位置。这使我们可以从文件系统中的任何位置以明确的方式引用目录。每个绝对路径都必须以该斜杠开头。
另一种方法是使用相对路径。相对路径是指与当前目录相关的目录。对于层次结构中接近当前目录的目录,这通常更短,有时不需要假设目录在更广泛的文件系统中的位置是有益的。当前目录中的任何目录都可以通过名称引用,无需前导斜杠。您可以更改为locale
目录内/usr/share
从您当前的位置输入:
您还可以通过提供当前目录路径之后的路径部分,使用相对路径移动多个目录级别。从这里,您可以到达LC_MESSAGES
目录内的en
目录,输入:
要返回到当前目录的父目录,您可以使用特殊的双点指示器。例如,您现在处于/usr/share/locale/en/LC_MESSAGES
目录。要提升一级,您可以输入:
这将我们带到/usr/share/locale/en
目录。
您始终可以通过运行返回主目录cd
不指定目录。您还可以使用~
在任何其他命令中代替您的主目录:
cd ~
pwd
/home/sammy
要了解如何使用这三个命令的更多信息,您可以查看我们探索 Linux 文件系统的指南.
在上一节中,您学习了如何导航文件系统。您在使用时可能会看到一些文件ls
各个目录中的命令。与某些操作系统相比,Linux 和其他类 Unix 操作系统的系统大部分都依赖于纯文本文件。
在本教程中查看文件的主要方式是使用less
命令。这就是所谓的“寻呼机”,因为它允许您滚动浏览文件的页面。虽然前面的命令立即执行并返回到命令行,less
是一个将继续运行并占据屏幕直到您退出的应用程序。
您将打开/etc/services
文件,这是一个配置文件,包含系统了解的服务信息:
该文件将在以下位置打开less
,允许您查看适合终端窗口区域的文档部分:
Output
# 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
键盘快捷键。
要搜索文档中的某些文本,您可以键入正斜杠“/”,后跟搜索词。例如,要搜索“邮件”,您可以输入:
/mail
这将向前搜索文档并在第一个结果处停止。要获得另一个结果,您可以键入小写字母n
key:
n
要向后移动到上一个结果,请使用大写字母N
反而:
N
要退出less
程序,您可以输入q
退出:
q
还有许多其他查看文件的方法在某些情况下会派上用场。这cat
命令输出文件的内容并立即返回到提示符。这head
默认情况下,命令显示文件的前 10 行。同样,tail
命令显示最后 10 行。这些命令以一种对于“管道”到其他程序有用的方式显示文件内容。本教程系列稍后将介绍此概念。
在本节中,您将创建和操作文件和目录。
许多命令和程序都可以创建文件。创建文件最直接的方法是使用touch
命令。这将使用指定的名称和位置创建一个空文件。
首先,确保您位于主目录中,因为这是您有权保存文件的位置。然后,您可以创建一个名为file1
通过输入:
现在,如果您查看目录中的文件,您可以看到新创建的文件:
Output
file1
如果您使用touch
对现有文件执行命令,它会更新与该文件关联的“上次修改”时间。记住这一点会很有帮助。
您还可以同时创建多个文件。您也可以使用绝对路径。例如,您可以输入:
-
touch /home/sammy/file2 /home/sammy/file3
-
ls
Output
file1 file2 file3
类似于touch
命令,该mkdir
命令允许您创建空目录。
例如,要在主目录中创建一个名为test
,您可以输入:
您可以在其中创建一个目录test
名为的目录example
通过输入:
为了使上述命令起作用,test
目录必须已经存在。告诉mkdir
它应该创建构建给定目录路径所需的任何目录,您可以使用-p
选项。这允许您一步创建嵌套目录。您可以创建一个如下所示的目录结构some/other/directories
通过输入:
该命令将使some
首先目录,然后它将创建other
里面的目录。最后它将创建directories
这两个目录中的目录。
您可以使用以下命令将文件移动到新位置mv
命令。例如,您可以移动file1
进入test
目录,输入:
您可以移动该文件back通过使用特殊的点引用来引用当前目录,将其添加到您的主目录。确保您位于主目录中,然后运行mv
命令:
The mv
命令也用于rename文件和目录。本质上,移动和重命名都只是调整现有项目的位置和名称。
所以要重命名test
目录到testing
,您可以输入:
Note:外壳不会阻止您意外地进行破坏性操作。如果您要重命名文件并选择已存在的名称,则之前的文件将被您要移动的文件覆盖。如果您不小心覆盖了以前的文件,则无法恢复该文件。
随着mv
命令,您可以移动或重命名文件或目录,但不能复制它。这cp
命令可以创建现有项目的新副本。
例如,您可以复制file3
到一个名为的新文件file4
:
不像一个mv
操作,之后file3
将不再存在,你现在拥有了file3
and file4
.
Note: 与mv
命令,如果您不小心用作操作目标的文件名,则可能会覆盖文件。例如,如果file4
上面的例子中已经存在,它的内容将完全被替换为file3
.
为了复制整个目录,您必须包括-r
命令的选项。这代表“递归”,因为它复制目录以及目录的所有内容。
例如,要复制some
目录结构到一个新的结构称为again
,您可以输入:
与文件不同,现有目标会导致覆盖,如果目标是现有目录,则文件或目录将复制到目标中:
这将创建一个新副本file1
并将其放在里面again
目录。
要删除文件,您可以使用rm
命令。
Note:使用任何破坏性命令时要格外小心,例如rm
。 shell 中没有“撤消”命令,因此可能会意外地永久破坏重要文件。
要删除常规文件,只需将其传递给rm
命令:
同样,要删除空目录,您可以使用rmdir
命令。仅当相关目录中没有任何内容时,此操作才会成功。例如,要删除example
目录内的testing
目录:
要删除非空目录,您将使用rm
命令与-r
选项,它递归地删除目录的所有内容以及目录本身。
例如,要删除again
目录及其中的所有内容,您可以键入:
目前,您知道如何将文件作为对象进行操作,但尚未学会如何实际编辑它们并向其中添加内容。
nano
是少数常见的命令行 Linux 文本编辑器之一,对于初学者来说是一个很好的起点。它的操作有点类似于less
上面讨论的程序,因为它在使用期间占用整个终端。
The nano
编辑器可以打开现有文件,或创建文件。如果您决定创建一个新文件,则可以在调用时为其命名nano
编辑器,或稍后,当您保存内容时。
您可以打开file1
通过键入以下内容进行编辑的文件:
The nano
应用程序将打开该文件(当前为空白)。界面看起来像这样:
GNU nano 4.8 file1
[ New File ]
^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
key.
要从编辑器中获得帮助,请按Ctrl+G
.
浏览完帮助后,输入Ctrl+X
返回到您的文档。
对于此示例,您只需输入以下两个句子:
file1
Hello there.
Here is some text.
要保存您的工作,请按Ctrl+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
, press Enter
.
保存后,如果您进行其他更改并尝试退出程序,您将看到类似的提示。添加新行,然后尝试退出nano
通过按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
返回航站楼。
Output
Hello there.
Here is some text.
Another line.
您可能会在某些指南中看到引用的另一个编辑器是vim
or vi
。这是一个更高级的编辑器,功能非常强大,但学习曲线陡峭。如果您被告知要使用vim
or vi
,放心使用nano
反而。了解如何使用vim
,阅读我们的vim 入门指南.
到目前为止,您应该了解如何绕过 Linux 服务器以及如何查看可用的文件和目录。您还应该了解文件操作命令,这些命令将允许您查看、复制、移动或删除文件。最后,您应该能够轻松地使用nano
文本编辑器。
有了这些技能,您应该能够继续阅读其他指南并学习如何充分利用您的服务器。在我们的下一篇指南中,您将了解如何查看和理解Linux权限.