Linux目录管理

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

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

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

转到其它目录

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

$cd dirname

此处,dirname是您要转到的目录的名称。 例如,命令:

$cd /usr/local/bin

转到目录/usr/local/bin。 从此目录中,您可以使用以下相对路径cd到目录/usr/home/amrood

$cd ../../home/amrood

Home(家)目录

您首次登录时所在的目录称为家目录。您将在家目录和它的子目录中完成大部分工作。您可以随时使用以下命令进入您的家目录。

$cd ~

这里~表示家目录。 您可以使用以下命令进入某一用户的家目录:

$cd ~username

您可以使用cd -命令,进入您最后访问的目录。

相对路径和绝对路径

目录按层次结构排列,根(/)位于顶部。 层次结构中任何文件的位置由其路径描述。路径的元素由/分隔。 路径是绝对的,它是相对于根来描述的,因此绝对路径总是以/开头。

以下是文件的绝对路径的一些示例:

/etc/passwd
/users/lily/notes
/dev/rdsk/Os3

路径也可以相对于您当前的工作目录,这样的路径称为相对路径。 相对路径不以/开头。 例如,用户lily的当前工作目录是家目录,某些文件的相对路径可能如下所示:

chem/notes
personal/res

还有一个特殊的相对路径,以../开头的路径。假如当前的目录为/users/lily/notes,那么../project表示目录:/users/lily/project../可以重复多次,每重复一次表示返回一层目录。假如当前的目录还是/users/lily/notes,那么../../xiaomin,表示目录:/users/xiaomin

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

$pwd
/user0/home/amrood

列出目录内包含的文件

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

ls dirname

以下是列出/usr/local目录中包含的所有文件的示例

$ls /usr/local
bin  docker  etc  games  include  lib  lib64  libexec  qcloud  sbin  share  src  yd.socket.server

创建目录

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

$mkdir dirname

这里,dirname是您要创建的目录的绝对或相对路径。 例如:

$mkdir mydir
$mkdir /tmp/test-dir

第一个例子在当前目录中创建目录mydir。 第二个例子在/tmp目录中创建目录test-dir目录。

如果mkdir命令成功创建了目录,则不会产生任何输出。

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

$mkdir docs pub

命令执行后将在当前目录下创建目录docspub目录。

创建父目录

我们现在将了解如何创建父目录。 有时,当您要创建目录时,其父目录可能不存在。 在这种情况下,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

上述命令删除目录dirname1dirname2dirname3(如果它们为空)。 如果rmdir命令成功,则不会产生任何输出。

重命名目录

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

$mv olddir newdir

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

$mv mydir yourdir

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

文件名.(点)代表当前工作目录; 文件名..(点点)代表当前工作目录上一级的目录,通常称为父目录。

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

$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 .bash_profile
-rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo