基本文件操作

LinuxBeginner
立即练习

简介

欢迎参加 Linux 基本文件操作实验!在 Linux 中,几乎所有内容都被视为文件,因此文件操作是使用系统的基础。本实验将带你学习管理文件和目录时最常用的命令,帮助你更熟练地浏览和整理 Linux 系统。

了解工作环境

在 Linux 中,每个用户通常都有一个「主目录」,用 ~ 表示。不过,在本实验环境中,我们会从 /home/labex/project 目录开始,这就是默认工作目录。

首先,在桌面上打开终端,或者切换到实验环境中的终端选项卡。

终端界面截图

先查看当前所在位置:

pwd

pwd 是「print working directory(打印工作目录)」的缩写,用于显示你在文件系统中的当前位置。这个命令对于确定自己在 Linux 文件结构中的位置非常重要。你应该会看到输出 /home/labex/project

接着查看当前目录与主目录之间的关系:

echo ~

注意:由于某些国家或地区的键盘布局不同,如果你无法在桌面终端中输入 ~,可以尝试切换到虚拟机界面左上角的独立 Terminal 选项卡。

这个命令会显示主目录的路径,应该是 /home/labex

要查看当前目录中的内容,请使用:

ls

该命令会列出当前工作目录(/home/labex/project)中的文件和目录。

再查看主目录中的内容:

ls ~

该命令会列出主目录的内容。主目录中的内容可能与当前工作目录不同。

理解当前工作目录与主目录之间的区别,对于高效浏览 Linux 文件系统非常重要。

浏览文件系统

Linux 使用我们所说的「层次化文件系统」。你可以把它想象成一棵有许多分支的大树。主干称为「根目录」,用单个正斜杠 / 表示。其他所有目录和文件都从根目录分支出来。

下面来了解如何在这种树状结构中移动:

  1. 查看当前位置:
pwd

这里应该显示 /home/labex/project。如果不是,说明你当前位于其他目录。使用 cd /home/labex/project 返回起始位置。

  1. 查看当前目录的内容:
ls

该命令会列出当前位置中的所有文件和目录。/home/labex/project 是空目录,因此你不会看到任何内容。

  1. 向上移动一级,进入父目录:
cd ..

.. 表示「上一级目录」。执行此命令后,再次运行 pwd。现在应该位于 /home/labex

  1. 返回项目目录:
cd project

这会将你带回 /home/labex/project

  1. 进入主目录:
cd ~

~ 是主目录的快捷表示。运行 pwd,确认当前位置是 /home/labex

  1. 使用绝对路径返回项目目录:
cd /home/labex/project

这称为「绝对路径」,因为它从根目录(/)开始,给出了完整位置。

创建文件并列出目录内容

现在你已经了解如何浏览目录,接下来创建一些文件,并学习如何列出目录内容。

首先,确保你位于 /home/labex/project 目录:

cd /home/labex/project
  1. 创建几个文件:
touch file1.txt

touch 命令用于创建空文件。如果文件已经存在,它会更新文件的时间戳,但不会修改文件内容。这是一种创建新空文件的简单方法。

echo "Hello, Linux" > file2.txt

这个命令执行两项操作:

  • echo 命令用于打印文本。
  • > 符号会将 echo 的输出重定向到名为 file2.txt 的文件。如果文件不存在,系统会创建它;如果文件已经存在,原有内容会被替换。
echo "Hidden file" > .hiddenfile

这会创建一个隐藏文件。在 Linux 中,名称以点号(.)开头的文件或目录都会被视为隐藏对象。

  1. 创建一个目录:
mkdir testdir

mkdir 命令是「make directory(创建目录)」的缩写,用于创建名为 testdir 的新目录。

  1. 基本列出:
ls

目录内容列表输出

该命令会显示当前目录的内容。你应该会看到 file1.txtfile2.txttestdir

  1. 详细列出:
ls -l

-l 选项中的字母是小写 L,不是数字 1。该选项以「长格式」显示列表,并提供文件权限、所有者、大小和修改日期等详细信息。

  1. 显示隐藏文件:
ls -a

该命令会显示所有文件,包括刚刚创建的隐藏文件 .hiddenfile

  1. 组合选项:
ls -la

该命令将长格式(-l)与显示所有文件(-a)组合在一起。

  1. 列出指定目录的内容:
ls -l testdir

该命令会列出 testdir 目录中的内容。此时该目录应该为空。

本步骤中的列出命令用于动手练习和直观确认。实验会通过检查所需文件和目录是否正确创建来评估进度。

复制文件和目录

现在已经有了一些可以操作的文件,接下来学习如何复制它们:

  1. 复制文件:
cp file1.txt file1_copy.txt

该命令会在当前目录中创建 file1.txt 的副本,并将其命名为 file1_copy.txt

验证复制结果:

ls
  1. 将文件复制到另一个目录:
cp file2.txt testdir/

该命令会将 file2.txt 复制到 testdir 目录中。

  1. 复制目录:
cp -r testdir testdir_copy

-r 选项表示「递归」。复制目录时必须使用该选项,以确保目录中的所有内容也被复制。

  1. 验证副本:
ls
ls testdir
ls testdir_copy

显示复制文件的终端

移动和重命名文件与目录

在 Linux 中,mv 命令既可以用于移动,也可以用于重命名:

  1. 重命名文件:
mv file1.txt newname.txt

该命令会将 file1.txt 重命名为 newname.txt

  1. 将文件移动到目录:
mv newname.txt testdir/

该命令会将 newname.txt 移动到 testdir 目录中。

  1. 重命名目录:
mv testdir_copy new_testdir

该命令会将 testdir_copy 重命名为 new_testdir

  1. 在一条命令中同时移动并重命名:
mv testdir/newname.txt ./original_file1.txt

该命令会将 newname.txttestdir 中移出,并在当前目录中将其重命名为 original_file1.txt

  1. 验证更改:
ls
ls testdir

显示命令执行结果

删除文件和目录

删除文件和目录是一项影响很大的操作。与图形界面不同,命令行通常没有「回收站」或「垃圾箱」。使用 rm 执行的删除操作通常是永久性的。执行命令前,务必仔细检查命令内容!

现在清理刚刚创建的文件和目录。确保你位于 /home/labex/project 目录。

pwd
ls -a

你应该会看到 original_file1.txt.hiddenfilefile2.txt 等文件,以及 testdirnew_testdir 等目录。

.
..
.hiddenfile
file1_copy.txt
file2.txt
new_testdir
original_file1.txt
testdir
  1. 删除单个文件:

    rm original_file1.txt
    

    rm 命令是「remove(删除)」的缩写,用于删除文件。检查删除结果:

    ls
    

    original_file1.txt 应该已经消失。

  2. 交互式删除(更安全):

    这次使用交互式选项 -i 尝试删除 file2.txt

    rm -i file2.txt
    

    -i 选项会在删除每个文件前提示你确认。输入 y(表示 yes),然后按 Enter 键确认删除。如果输入 n 或其他内容,文件不会被删除。

    ls
    

    如果你确认了删除,file2.txt 就不会再出现。

  3. 查看删除非空目录时的结果:

    还记得通过重命名 testdir_copy 创建的 new_testdir 吗?它仍然包含复制的 file2.txt,因此 rmdir 会失败。先确认其中的内容:

    ls new_testdir
    

    你应该会看到 file2.txt。现在尝试使用 rmdir

    rmdir new_testdir
    

    rmdir(删除目录)只能删除空目录

    ls
    

    由于 new_testdir 不为空,无法删除,因此它应该仍然会出现在列表中。

  4. 尝试删除非空目录:

    现在对 testdir 使用 rmdir。该目录仍然包含第 4 步复制的 file2.txt

    ls testdir
    rmdir testdir
    

    你很可能会看到类似 rmdir: failed to remove 'testdir': Directory not empty 的错误消息。这是预期结果,因为 rmdir 无法删除包含文件或其他目录的目录。

  5. 递归删除目录及其内容:

    要删除一个非空目录,需要将 rm-r(递归)选项一起使用:

    rm -r testdir
    

    该命令会删除 testdir 目录及其中的所有内容。使用此命令时务必谨慎。

    ls
    

    testdir 现在应该已经消失。

  6. 强制删除(务必极其谨慎):

    有时,你可能希望删除文件时不显示提示,即使文件受到写保护(尽管本实验中没有这种文件)。-f(强制)选项可以实现这一点。

    删除隐藏文件:

    rm .hiddenfile
    ls -a
    

    现在组合使用 -r-frm -rf 命令功能非常强大,也可能带来危险。它会递归删除目录(-r),并在不提示的情况下强制删除(-f)。

    !!! 危险区域 !!!

    运行 rm -rf 前,务必完全确认你知道自己要删除什么。一个小小的拼写错误就可能删除关键系统文件或个人数据,而且无法撤销。例如,如果权限允许,rm -rf / 可能会尝试删除整个系统。始终仔细检查路径。

    下面创建一个临时目录和文件,进行安全演示:

    mkdir temp_dir
    touch temp_dir/temp_file.txt
    ls -R temp_dir
    

    注意:你可能会发现,我们在 ls 中使用的是大写的 -R,而不是在 cprm 中使用的小写 -r。这不仅仅是大小写差异,它们是完全不同的选项!对于 ls-R 表示「递归列出」(列出子目录),而 -r 表示「反向排序」。对于 cprm,递归选项是小写的 -r。始终查阅手册(man command),了解每个命令的具体选项。

    现在强制删除该目录:

    rm -rf temp_dir
    

    验证删除结果:

    ls
    

    temp_dir 应该已经消失。

请记住:在 Linux 命令行中,删除的文件通常会永久消失。使用 rm 时务必谨慎!

总结

恭喜!你已经学习了 Linux 中的基本文件操作:

  • 使用 cdpwd 浏览文件系统
  • 使用 touchmkdir 创建文件和目录
  • 使用 ls 及其选项列出内容
  • 使用 cp 复制文件和目录
  • 使用 mv 移动和重命名文件与目录
  • 使用 rmrmdir 删除文件和目录

这些命令构成了 Linux 文件管理的基础。通过练习,你将能够熟练地在命令行中管理文件和目录。

请记住谨慎使用这些命令,尤其是 rm,因为它会永久删除文件和目录,且无法恢复。

继续学习 Linux 时,可以查阅 man 手册页(例如 man ls),进一步了解每个命令及其选项。祝你探索愉快!