Linux导航与文件管理

介绍

在文件系统中导航和操作文件和文件夹是与大多数计算机工作密切相关的关键部分。云服务器主要使用相同的常见 Linux shell 和常见 Linux 命令来处理文件和文件夹。本终端将介绍一些使用这些命令的基本技能。

先决条件和目标

为了跟随本指南,您需要访问 Linux 服务器。如果您需要关于首次连接服务器的信息,您可以参考我们关于使用 SSH 连接 Linux 服务器的指南

您还需要了解终端的工作原理以及 Linux 命令的外观。本指南涵盖了终端的介绍

本指南中的所有内容都可以通过常规的非根(非管理员)用户帐户完成。您可以通过按照您的发行版的初始服务器设置指南进行配置此类型的用户帐户来学习,例如Ubuntu 22.04的指南。

当您准备好开始时,请使用SSH连接到您的Linux服务器并继续以下操作。

您需要掌握的最基本的技能之一是在文件系统中移动并了解您周围的情况。您将在本节中回顾允许您执行此操作的工具。

使用“pwd”命令找到您所在的位置

当您登录服务器时,通常会进入您的用户帐户的主目录。主目录是为您的用户设置的一个目录,用于存储文件和创建目录。这是您在文件系统中拥有完全控制的位置。

要找出你的主目录与文件系统其他部分的位置关系,你可以使用pwd命令。该命令显示你当前所在的目录:

  1. pwd
Output
/home/sammy

主目录以用户账户命名。此目录位于一个名为/home的目录中,该目录本身位于顶级目录内,通常称为“根”目录,并由单个斜杠/表示。

使用“ls”查看目录内容

现在你知道如何显示当前所在的目录了,你可以查看目录的内容。

当前,你的主目录没有太多内容可以查看,所以你可以转到另一个内容更多的目录进行探索。使用cd命令转到该目录。之后,你将使用pwd确认你成功移动了:

  1. cd /usr/share
  2. pwd
Output
/usr/share

现在你已经进入了一个新目录,让我们看看里面有什么。为此,你可以使用ls命令:

  1. 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标志(表示“长”输出):

  1. ls -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”,则该项是一个目录,如果是“-”,则是一个普通文件)和权限。接下来的每一列依次描述了系统中指向该文件的硬链接数量、所有者、组所有者、项目大小、最后修改时间和项目名称。

要获取所有文件的列表,包括隐藏文件和目录,可以添加-a标志。由于在/usr/share目录中没有真正的隐藏文件,让我们回到您的主目录并尝试该命令。您可以通过键入cd而不带参数来返回主目录:

  1. cd
  2. ls -a
Output
. .. .bash_logout .bashrc .profile

如您所见,这里有三个隐藏文件,以及...,它们是特殊的指示符。您会发现,通常配置文件被存储为隐藏文件,就像这里的情况一样。

对于点和双点条目,它们并不完全是目录,而是相关目录的内置方法。单个点表示当前目录,双点表示该目录的父目录。这在下一节会派上用场。

使用“cd”在文件系统中移动

你已经移动了两个目录以展示上一节中ls的一些属性。让我们在这里更仔细地看一下这个命令。

首先回到/usr/share目录:

  1. cd /usr/share

这是通过提供一个绝对路径来改变目录的示例。在Linux中,每个文件和目录都在最顶层目录下,称为“根”目录,但是用一个单独的斜杠“/”表示。绝对路径指示了一个目录相对于这个顶级目录的位置。这样我们可以从文件系统中的任何地方以一种无歧义的方式引用目录。每个绝对路径必须以该斜杠开头。

另一种方法是使用相对路径。相对路径是相对于当前目录引用目录的路径。对于层次结构中接近当前目录的目录,这通常更短,有时不需要假设目录位于更广泛的文件系统中的位置是有益的。可以通过名称引用当前目录中的任何目录而无需前导斜杠。您可以从当前位置转到/usr/share中的locale目录,方法是键入:

  1. cd locale

您还可以通过提供当前目录路径之后的路径部分来使用相对路径移动多个目录级别。从这里,您可以键入以进入en目录中的LC_MESSAGES目录:

  1. cd en/LC_MESSAGES

要返回上一级目录,您可以使用特殊的双点指示符。例如,您现在位于/usr/share/locale/en/LC_MESSAGES目录。要向上移动一级,您可以输入:

  1. cd ..

这将把我们带到/usr/share/locale/en目录。

您可以通过运行cd而不指定目录来随时返回您的主目录。您还可以在任何其他命令中使用~来代替您的主目录:

cd ~
pwd
/home/sammy

要了解有关如何使用这三个命令的更多信息,您可以查看我们的Linux文件系统探索指南

查看文件

在上一节中,您学会了如何浏览文件系统。当您在各个目录中使用ls命令时,可能会看到一些文件。与一些操作系统不同,Linux和其他类Unix操作系统依赖于系统中的大部分内容是纯文本文件。

在本教程中查看文件的主要方法是使用less命令。这被称为“分页器”,因为它允许您滚动文件的页面。虽然前面的命令立即执行并返回到命令行,但less是一个应用程序,将继续运行并占用屏幕,直到您退出。

你将打开/etc/services文件,这是一个包含系统已知服务信息的配置文件:

  1. less /etc/services

文件将在less中打开,允许你查看适合终端窗口区域的部分文档:

Output
# Network services, Internet style # # 注意,目前IANA的政策是为TCP和UDP分配一个单一的众所周知 # 端口号;因此,官方端口即使协议不支持UDP操作也有两个条目 # 信息。 # # 从http://www.iana.org/assignments/port-numbers和其他 # 来源更新 # 例如http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services 。 # 如果它们已经被IANA正式分配,并且在现实世界中使用,或者被Debian软件包需要, # 新端口将根据请求添加 tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp . . .

# 如果您需要一个已用数字的大列表,请安装nmap软件包。

要滚动,您可以使用键盘上的上下箭头键。要向下翻页,您可以使用空格键、键盘上的“Page Down”按钮或CTRL-f快捷键。

要向上滚动,您可以使用“Page Up”按钮或CTRL-b键盘快捷键。

/mail

要在文档中搜索文本,您可以键入正斜杠“/”,然后是搜索词。例如,要搜索“mail”,您将键入:这将在文档中向前搜索并停在第一个结果处。要转到另一个结果,您可以键入小写n键:

n

要返回到前一个结果,使用大写的N

N

要退出less程序,您可以键入q退出:

q

在某些情况下,有许多其他查看文件的方法。cat命令输出文件的内容并立即返回提示符。默认情况下,head命令显示文件的前10行。同样,tail命令显示文件的最后10行。这些命令以对“管道”到其他程序有用的方式显示文件内容。这个概念稍后在本教程系列中介绍。

文件和目录操作

在本节中,您将创建和操作文件和目录。

使用“touch”创建文件

许多命令和程序都可以创建文件。最直接的创建文件的方法是使用touch命令。这将使用指定的名称和位置创建一个空文件。

首先,确保您位于您的主目录中,因为这是您有权限保存文件的位置。然后,您可以键入以下内容来创建一个名为file1的文件:

  1. cd
  2. touch file1

现在,如果您查看目录中的文件,您可以看到您新创建的文件:

  1. ls
Output
file1

如果您对现有文件使用touch命令,则会更新与该文件关联的“上次修改”时间。这一点很值得记住。

您也可以同时创建多个文件。您也可以使用绝对路径。例如,您可以输入:

  1. touch /home/sammy/file2 /home/sammy/file3
  2. ls
Output
file1 file2 file3

使用“mkdir”创建目录

touch命令类似,mkdir命令允许您创建空目录。

例如,要在您的主目录中创建名为test的目录,您可以输入:

  1. cd
  2. mkdir test

您可以通过输入以下内容在test目录中创建名为example的目录:

  1. mkdir test/example

为了使上述命令起作用,test目录必须已经存在。要告诉mkdir它应该创建任何必要的目录以构建给定的目录路径,您可以使用-p选项。这使您可以一次性创建嵌套目录。您可以输入以下内容创建一个看起来像some/other/directories的目录结构:

  1. mkdir -p some/other/directories

该命令将首先创建some目录,然后在其中创建other目录。最后,它将在这两个目录中创建directories目录。

使用“mv”移动和重命名文件和目录

您可以使用mv命令将文件移动到新位置。例如,您可以通过键入以下内容将file1移动到test目录中:

  1. mv file1 test

您可以使用特殊的点引用来引用当前目录,将该文件移动回您的主目录。确保您在主目录中,然后运行mv命令:

  1. cd
  2. mv test/file1 .

mv命令也用于重命名文件和目录。实质上,移动和重命名都只是调整现有项目的位置和名称。

因此,要将test目录重命名为testing,您可以键入:

  1. mv test testing

注意:Shell 不会阻止您意外执行破坏性操作。如果您正在重命名文件并选择一个已存在的名称,先前的文件将被您移动的文件覆盖。如果您意外覆盖了它,则无法恢复先前的文件。

使用“cp”复制文件和目录

使用mv命令,您可以移动或重命名文件或目录,但不能复制它。cp命令可以创建现有项目的新副本。

例如,您可以将file3复制到名为file4的新文件:

  1. cp file3 file4

mv操作不同,在此之后file3不会再存在,而现在您有file3file4

注意:与mv命令一样,如果您在操作目标文件名时不小心,可能会覆盖文件。例如,在上述示例中,如果file4已存在,则其内容将被file3的内容完全替换。

为了复制整个目录,您必须在命令中包含-r选项。这代表“递归”,因为它会复制目录以及目录的所有内容。

例如,要将some目录结构复制到名为again的新结构,您可以键入:

  1. cp -r some again

与文件不同,如果目标是现有目录,则文件或目录会被复制到目标中:

  1. cp file1 again

这将创建file1的一个新副本并将其放置在again目录中。

使用“rm”和“rmdir”删除文件和目录

要删除文件,您可以使用rm命令。

注意:在使用任何破坏性命令如rm时要非常小心。Shell中没有“撤销”命令,因此有可能意外永久破坏重要文件。

要删除普通文件,只需将其传递给rm命令:

  1. cd
  2. rm file4

同样,要删除空目录,您可以使用rmdir命令。这只有在目录中没有任何内容时才会成功。例如,要删除testing目录中的example目录:

  1. rmdir testing/example

要删除非空目录,您将使用rm命令以-r选项,递归删除所有目录内容,以及目录本身。

例如,要删除again目录及其所有内容,可以输入:

  1. rm -r again

编辑文件

目前,您知道如何将文件作为对象进行操作,但尚未学习如何实际编辑它们并向其中添加内容。

nano是几个常见的命令行Linux文本编辑器之一,对于初学者来说是一个很好的起点。它的操作方式与上面讨论的less程序有些类似,即在使用期间占用整个终端。

nano编辑器可以打开现有文件,也可以创建新文件。如果你决定创建一个新文件,你可以在调用nano编辑器时给它一个名称,或者在保存内容时稍后指定。

你可以通过键入以下命令来打开file1文件进行编辑:

  1. cd
  2. nano file1

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键。

要在编辑器中获取帮助,请按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,请按Enter

保存后,如果您进行了其他更改并尝试退出程序,则会看到类似的提示。添加一行新的内容,然后尝试通过按下Ctrl+X来退出nano

如果您还没有保存,则会要求您保存所做的修改:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?                         
 Y Yes
 N No           ^C Cancel

您可以按Y来保存您的更改,按N来放弃更改并退出,或者按Ctrl+C来取消退出。如果选择保存,则会收到与之前相同的文件提示,确认是否要将更改保存到同一文件中。按Enter来保存文件并退出编辑器。

您可以使用cat程序显示文件的内容,或者使用less程序打开文件进行查看。在使用less查看后,请记住按q返回终端。

  1. less file1
Output
Hello there. Here is some text. Another line.

某些指南中可能会提到的另一个编辑器是vimvi。这是一个更高级的编辑器,非常强大,但学习曲线陡峭。如果您被告知使用vimvi,可以自由选择使用nano。要了解如何使用vim,请阅读我们的开始使用vim指南

结论

到目前为止,你应该已经了解如何在你的Linux服务器上操作,并且知道如何查看可用的文件和目录。你还应该知道文件操作命令,允许你查看、复制、移动或删除文件。最后,你应该能够使用 nano 文本编辑器进行一些编辑。

有了这些基本技能,你应该能够继续阅读其他指南,学习如何充分利用你的服务器。在我们的下一个指南中,你将了解 如何查看和理解Linux权限

Source:
https://www.digitalocean.com/community/tutorials/basic-linux-navigation-and-file-management