Unix / Linux - 目录管理

在本章中,我们将详细讨论 Unix 中的目录管理。

目录是一个文件,其单独的工作是存储文件名和相关信息。 所有文件,无论是普通文件、特殊文件还是目录文件,都包含在目录中。

Unix 使用层次结构来组织文件和目录。 这种结构通常被称为目录树。 该树有一个根节点,即斜杠字符 (/),所有其他目录都包含在它下面。


主目录

您首次登录时所在的目录称为您的主目录。

您将在主目录和您将创建的用于组织文件的子目录中完成大部分工作。

您可以随时使用以下命令进入您的主目录 −

$cd ~
$

这里的~表示主目录。 假设您必须进入任何其他用户的主目录,请使用以下命令 −

$cd ~username
$

要进入上一个目录,可以使用以下命令 −

$cd -
$

绝对/相对路径名

目录按层次结构排列,根 (/) 位于顶部。 任何文件在层次结构中的位置都由其路径名描述。

路径名的元素由 / 分隔。 路径名是绝对的,如果它是相对于根进行描述的,因此绝对路径名总是以 / 开头。

以下是绝对文件名的一些示例。

/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3

路径名也可以相对于您当前的工作目录。 相对路径名从不以 / 开头。 相对于用户 amrood 的主目录,一些路径名可能如下所示 −

chem/notes
personal/res

要随时确定您在文件系统层次结构中的位置,请输入命令 pwd 以打印当前工作目录 −

$pwd
/user0/home/amrood

$

列出目录

要列出目录中的文件,可以使用以下语法 −

$ls dirname

以下是列出/usr/local 目录下所有文件的例子 −

$ls /usr/local

X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

创建目录

我们现在将了解如何创建目录。 目录由以下命令创建 −

$mkdir dirname

这里,directory 是您要创建的目录的绝对或相对路径名。 例如,命令 −

$mkdir mydir
$

在当前目录中创建目录mydir。 这是另一个例子 −

$mkdir /tmp/test-dir
$

此命令在 /tmp 目录中创建目录 test-dirmkdir 命令如果成功创建了请求的目录,则不会产生任何输出。

如果您在命令行中提供了多个目录,mkdir 会创建每个目录。 例如, −

$mkdir docs pub
$

在当前目录下创建目录 docs 和 pub。


创建父目录

我们现在将了解如何创建父目录。 有时当您想要创建目录时,其父目录或多个目录可能不存在。 在这种情况下,mkdir 会发出如下错误消息 −

$mkdir /tmp/amrood/test
mkdir: Failed to make directory "/tmp/amrood/test"; 
No such file or directory
$

在这种情况下,您可以为 mkdir 命令指定 -p 选项。 它会为您创建所有必要的目录。 例如 −

$mkdir -p /tmp/amrood/test
$

以上命令创建了所有必需的父目录。


删除目录

可以使用 rmdir 命令删除目录,如下所示 −

$rmdir dirname
$

注意 − 要删除目录,请确保它是空的,这意味着该目录中不应有任何文件或子目录。

您可以一次删除多个目录,如下所示 −

$rmdir dirname1 dirname2 dirname3
$

以上命令删除目录 dirname1、dirname2 和 dirname3(如果它们是空的)。 如果成功,rmdir 命令不会产生任何输出。


改变目录

您可以使用 cd 命令执行更多操作,而不仅仅是更改到主目录。 您可以使用它通过指定有效的绝对或相对路径更改到任何目录。 语法如下 −

$cd dirname
$

此处,dirname 是您要更改到的目录的名称。 例如,命令 −

$cd /usr/local/bin
$

更改目录 /usr/local/bin。 从这个目录,您可以使用以下相对路径cd 到目录/usr/home/amrood

$cd ../../home/amrood
$

重命名目录

mv (move) 命令也可用于重命名目录。 语法如下 −

$mv olddir newdir
$

您可以将目录 mydir 重命名为 yourdir,如下所示 −

$mv mydir yourdir
$

目录 . (点)和..(点点)

filename.(点)表示当前工作目录; filename ..(点)表示当前工作目录上一级目录,通常称为父目录。

如果我们输入显示当前工作目录/文件列表的命令并使用 -a option 列出所有文件并使用 -l option 提供长列表,我们将收到以下结果。

$ls -la
drwxrwxr-x    4    teacher   class   2048  Jul 16 17.56 .
drwxr-xr-x    60   root              1536  Jul 13 14:18 ..
----------    1    teacher   class   4210  May 1 08:27 .profile
-rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo
$