基础文件操作

LinuxBeginner
立即练习

介绍

欢迎来到 Linux 基础文件操作实验!在 Linux 中,几乎所有东西都被视为文件,这使得文件操作成为使用该系统的基础。本实验将引导你学习管理文件和目录的最常用命令,帮助你更熟练地在 Linux 系统中进行导航和组织。

了解你的工作环境

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

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

终端界面截图

让我们先了解一下当前所在的位置:

pwd

pwd 代表「打印工作目录」(print working directory)。它会显示你在文件系统中的当前位置。此命令对于在 Linux 文件结构中定位自己至关重要。你应该会看到输出 /home/labex/project

现在,让我们探索一下当前目录与主目录之间的关系:

echo ~

注意:如果由于某些国家的键盘布局差异,导致你无法在桌面终端输入 ~ 符号,可以尝试切换到虚拟机界面左上角的独立终端选项卡。

该命令将显示你的主目录路径,通常应该是 /home/labex

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

ls

这将列出你当前工作目录(/home/labex/project)中的文件和目录。

我们再检查一下主目录的内容:

ls ~

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

理解当前工作目录和主目录之间的区别,对于有效地导航 Linux 文件系统非常重要。

导航文件系统

Linux 使用所谓的「层级文件系统」。可以把它想象成一棵带有分支的大树。主干被称为「根目录」(root directory),用单个正斜杠 / 表示。所有其他目录和文件都从这个根目录延伸出来。

让我们探索一下如何在这个树状结构中移动:

  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 命令(意为「创建目录」)会创建一个名为 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_copy.txtfile1.txt 副本。

让我们验证一下复制结果:

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

这会将 file2.txt 复制到 testdir 目录中。

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

-r 选项代表「递归」(recursive)。在复制目录时必须使用此选项,以确保所有内容都被复制。

  1. 验证我们的副本:
ls
ls testdir
ls testdir_copy

显示已复制文件的终端

移动和重命名文件与目录

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

  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 等目录。

-rw-rw-r-- 1 labex labex   12 May  3 08:44 .hiddenfile
-rw-rw-r-- 1 labex labex    0 May  3 08:45 file1_copy.txt
-rw-rw-r-- 1 labex labex   13 May  3 08:44 file2.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 new_testdir
-rw-rw-r-- 1 labex labex    0 May  3 08:44 original_file1.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 testdir
  1. 删除单个文件:

    rm original_file1.txt
    

    rm 命令(意为「移除」)用于删除文件。让我们检查一下:

    ls
    

    original_file1.txt 应该已经消失了。

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

    让我们尝试删除 file2.txt,但这次使用交互式标志 -i

    rm -i file2.txt
    

    -i 选项会在删除每个文件之前提示你确认。输入 y(代表 yes)并按回车键确认删除。如果你输入 n 或其他任何内容,文件将不会被删除。

    ls
    

    如果你确认了,file2.txt 将会被删除。

  3. 删除空目录:

    还记得我们通过重命名 testdir_copy 创建的 new_testdir 吗?让我们检查它是否为空:

    ls new_testdir
    

    如果它是空的(不显示任何文件),我们可以使用 rmdir 将其删除:

    rmdir new_testdir
    

    rmdir(移除目录)仅适用于目录。

    ls
    

    new_testdir 无法被删除,因为它不为空。

  4. 尝试删除非空目录:

    现在,让我们尝试对 testdir 使用 rmdir,它仍然包含 file2.txt(在步骤 4 中复制进去的):

    ls testdir
    rmdir testdir
    

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

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

    要删除为空的目录,我们需要使用带有 -r(递归)选项的 rm

    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 ls)以了解更多关于每个命令及其选项的信息。祝你探索愉快!