本文详细介绍了在Linux服务器上使用基本命令进行文件和目录操作,包括pwd、ls、cd、mkdir、touch、mv、cp、rm、rmdir等,以及如何使用nano文本编辑器编辑文件。后续还会涉及权限管理等内容。
简介
在文件系统中导航和操作文件和文件夹是使用大多数计算机的关键部分。云服务器大多使用相同的常见 Linux shell 和常见 Linux 命令来处理文件和文件夹。本终端将介绍使用这些命令的一些基本技能。
先决条件和目标
为了跟随本指南,您需要访问 Linux 服务器。如果您需要关于首次连接到服务器的信息,可以参考我们的使用 SSH 连接到 Linux 服务器的指南。
您还需要了解终端的工作原理以及 Linux 命令的外观。本指南涵盖了终端的介绍。
本指南中的所有内容都可以通过常规的非根(非管理员)用户帐户完成。您可以通过按照您的发行版的初始服务器设置指南(例如 Ubuntu 22.04)来学习如何配置此类型的用户帐户。
当您准备好开始时,请使用 SSH 连接到您的 Linux 服务器,并继续以下操作。
导航和探索
您需要掌握的最基本的技能是在文件系统中移动并了解周围的情况。您将在本节中复习允许您执行此操作的工具。
使用 “pwd” 命令找到您所在的位置
当您登录到服务器时,通常会被放置在您的用户帐户的主目录中。主目录是为您的用户设置的一个目录,用于存储文件和创建目录。这是您拥有完全控制权的文件系统中的位置。
要找出您的主目录在文件系统中的位置,您可以使用 pwd
命令。此命令显示您当前所在的目录:
pwd
/home/sammy
主目录以用户帐户的名称命名。此目录位于一个名为 /home
的目录中,该目录本身位于顶级目录中,通常称为 “根” 目录,并由单个斜杠 /
表示。
使用 “ls” 查看目录内容
现在您知道如何显示您所在的目录,您可以查看目录的内容。
当前,您的主目录没有太多内容可供查看,因此您可以转到另一个更繁华的目录进行探索。使用 cd
命令移动到此目录。之后,您将使用 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
标志(表示 “long” 输出):
ls -l
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
返回主目录:
cd ls -a
. .. .bash_logout .bashrc .profile
如您所见,有三个隐藏文件,以及 .
和 ..
,这些是特殊指示符。通常,配置文件存储为隐藏文件,就像在这里一样。
对于点和双点条目,这些不完全是目录,而更像是指示相关目录的内置方法。单个点表示当前目录,双点表示此目录的父目录。这将在下一节中派上用场。
使用 “cd” 在文件系统中移动
在上一节中,您已经进行了两次目录移动,以演示ls
命令的一些属性。让我们在这里更仔细地看一下这个命令。
首先返回到/usr/share
目录:
cd /usr/share
这是一个通过提供绝对路径来更改目录的示例。在Linux中,每个文件和目录都位于最顶层的目录下,这个目录被称为"根"目录,但是用一个单独的斜杠"/"来引用。绝对路径指示了目录相对于这个顶级目录的位置。这让我们能够从文件系统的任何地方以一种无歧义的方式引用目录。每个绝对路径都必须以斜杠开头。
另一种方法是使用相对路径。相对路径是指相对于当前目录的目录。对于在当前目录层次结构中接近当前目录的目录,这通常更短,有时不需要假设目录在更广泛的文件系统中的位置是有益的。当前目录内的任何目录都可以通过名称引用,而无需前导斜杠。您可以通过输入以下命令来切换到/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/sammy
要了解更多关于如何使用这三个命令的信息,您可以查看我们的指南,了解如何探索Linux文件系统。
查看文件
在上一节中,您学会了如何浏览文件系统。在使用ls
命令查看各个目录时,您可能会看到一些文件。与一些操作系统相反,Linux和其他类Unix操作系统依赖于纯文本文件来构建系统的大部分内容。
在本教程中,您将主要使用less
命令来查看文件。这被称为"分页器",因为它允许您浏览文件的各个页面。而前面的命令会立即执行并将您返回到命令行,less
是一个应用程序,它会继续运行并占据屏幕,直到您退出。
您将打开/etc/services
文件,这是一个包含系统已知服务信息的配置文件:
less /etc/services
文件将在less
中打开,允许您查看适合终端窗口区域的文档部分:
# 网络服务,互联网风格 # # 请注意,目前IANA的政策是为TCP和UDP分配一个单一的众所周知端口号;因此,即使协议不支持UDP操作,官方端口也有两个条目。 # # 从http://www.iana.org/assignments/port-numbers和http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services等来源进行更新。 # 如果有官方分配的端口并在现实世界中使用,或者是Debian软件包需要的端口,将根据请求添加新端口。 # 如果您需要一个巨大的已使用数字列表,请安装nmap软件包。 tcpmux 1/tcp # TCP端口服务多路复用器 echo 7/tcp . . .
要滚动,您可以使用键盘上的上下箭头键。要向下翻页,可以使用空格键、键盘上的"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
的文件:
cd touch file1
现在,如果查看目录中的文件,您可以看到您新创建的文件:
ls
file1
如果对现有文件使用 touch
命令,则会更新与该文件关联的“最后修改”时间。这一点值得记住。
您还可以同时创建多个文件。您也可以使用绝对路径。例如,您可以输入:
touch /home/sammy/file2 /home/sammy/file3 ls
file1 file2 file3
使用 “mkdir” 创建目录
与 touch
命令类似,mkdir
命令允许您创建空目录。
例如,要在您的主目录中创建一个名为 test
的目录,您可以输入:
cd mkdir test
您可以通过输入以下命令在 test
目录中创建一个名为 example
的目录:
mkdir test/example
为了使上述命令生效,test
目录必须已经存在。要告诉 mkdir
应该创建任何必要的目录以构造给定的目录路径,您可以使用 -p
选项。这允许您一次性创建嵌套目录。您可以通过输入以下命令创建类似 some/other/directories
的目录结构:
mkdir -p some/other/directories
该命令将首先创建 some
目录,然后在其中创建 other
目录。最后,它将在这两个目录中创建 directories
目录。
使用 “mv” 移动和重命名文件和目录
您可以使用 mv
命令将文件移动到新位置。例如,您可以通过输入以下命令将 file1
移动到 test
目录中:
mv file1 test
您可以使用特殊的点引用来将该文件移回到您的主目录中,以引用当前目录。确保您位于您的主目录中,然后运行 mv
命令:
cd mv test/file1 .
mv
命令还用于重命名文件和目录。实质上,移动和重命名都只是调整现有项目的位置和名称。
因此,要将 test
目录重命名为 testing
,您可以输入:
mv test testing
使用 “cp” 复制文件和目录
使用 mv
命令,您可以移动或重命名文件或目录,但无法复制它。cp
命令可以创建现有项目的新副本。
例如,您可以将 file3
复制到名为 file4
的新文件:
cp file3 file4
与 mv
操作不同,file3
将不再存在,现在您有 file3
和 file4
两个文件。
为了复制整个目录,您必须在命令中包含 -r
选项。这代表"递归",因为它会复制目录以及目录的所有内容。
例如,要将 some
目录结构复制到名为 again
的新结构中,您可以输入:
cp -r some again
与文件不同,如果目标是一个已存在的目录,文件或目录将被复制到目标中:
cp file1 again
这将创建 file1
的新副本并将其放置在 again
目录中。
使用 “rm” 和 “rmdir” 删除文件和目录
要删除文件,您可以使用 rm
命令。
注意:在使用任何破坏性命令如 rm
时要非常小心。Shell 中没有“撤消”命令,因此有可能意外永久删除重要文件。
要删除常规文件,只需将其传递给 rm
命令:
cd rm file4
同样,要删除空目录,您可以使用 rmdir
命令。只有在所讨论的目录中没有任何内容时,此操作才会成功。例如,要删除 testing
目录中的 example
目录:
rmdir testing/example
要删除非空目录,您将使用带有 -r
选项的 rm
命令,该选项递归地删除所有目录内容,以及目录本身。
例如,要删除 again
目录及其中的所有内容,您可以输入:
rm -r again
编辑文件
目前,你已经知道如何将文件作为对象进行操作,但还没有学会如何实际编辑它们并向其中添加内容。
nano
是一种常见的命令行 Linux 文本编辑器之一,对于初学者来说是一个很好的起点。它的操作方式与上面讨论的 less
程序有些相似,因为在使用期间它会占用整个终端。
nano
编辑器可以打开现有文件,也可以创建新文件。如果你决定创建一个新文件,可以在调用 nano
编辑器时给它命名,或者在保存内容时稍后再命名。
你可以通过输入以下命令打开 file1
文件进行编辑:
cd 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
返回到你的文档。
在这个例子中,你可以输入以下两句话:
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
返回到终端。
less file1
Hello there. Here is some text. Another line.
在某些指南中可能会提到的另一个编辑器是 vim
或 vi
。这是一个更高级的编辑器,非常强大,但学习曲线陡峭。如果你被告知使用 vim
或 vi
,可以随意使用 nano
。要学习如何使用 vim
,请阅读我们的入门指南。
结论
到目前为止,你应该已经了解如何在 Linux 服务器上进行操作,以及如何查看可用的文件和目录。你还应该知道文件操作命令,可以让你查看、复制、移动或删除文件。最后,你应该对使用 nano
文本编辑器进行一些编辑操作感到舒适。
有了这些技能,你应该能够继续阅读其他指南,并学会如何充分利用你的服务器。在我们的下一个指南中,你将了解如何查看和理解 Linux 权限。