Skip to main content

如何使用'mkdir'命令在Linux中创建目录

Linux用户基础 [LinuxCast视频教程] (可能 2025)

Linux用户基础 [LinuxCast视频教程] (可能 2025)
Anonim

本指南将向您展示如何使用命令行在Linux中创建新文件夹或目录。

用于创建目录的命令是mkdir。本文向您展示了在Linux中创建目录以及覆盖所有可用开关的基本方法。

如何创建新目录

创建新目录的最简单方法如下:

MKDIR

例如,如果要在名为test的主文件夹下创建目录,请打开终端窗口并确保您位于主文件夹中(使用cd~命令)。

mkdir测试

更改新目录的权限

创建新文件夹后,您可能希望设置权限,以便只有某个用户可以访问该文件夹,或者某些人可以编辑该文件夹中的文件,但其他人只能读取。

在上一节中,我向您展示了如何创建名为test的目录。运行ls命令将显示该目录的权限:

ls -lt

你有可能在这些方面有所作为:

drwxr-xr-x 2所有者组4096 Mar 9 19:34测试

我们感兴趣的是drwxr-xr-x所有者

d告诉我们test是一个目录。

d之后的前三个字符是所有者名称指定的目录的所有者权限:

  • r代表阅读
  • w代表写
  • x代表执行(在这种情况下意味着你​​可以访问该文件夹)

接下来的三个字符是组名指定的文件的组权限。选项再次是r,w和x。 - 表示缺少权限。在上面的示例中,属于该组的任何人都可以访问该文件夹并读取文件但无法写入该文件夹。

最后三个字符是所有用户拥有的权限,正如您在上面的示例中所看到的,这些权限与组权限相同。

要更改文件或文件夹的权限,您可以使用CHMOD命令。 chmod命令允许您指定3个设置权限的数字:

  • 读权限= 4
  • 写权限= 2
  • 执行权限= 1

要获得权限混合,请将数字添加到一起。例如,要获得读取和执行权限,您需要的数字是5,要获得读取和写入权限,数字是6,要获得写入和执行权限,数字是3。

请记住,您需要指定3个数字作为chmod命令的一部分。第一个数字用于所有者权限,第二个数字用于组权限,最后一个数字用于其他所有人。

例如,要获取所有者的完全权限,读取和执行该组的权限,并且没有任何其他人的权限键入以下内容:

chmod 750测试

如果要更改拥有文件夹的组名,请使用chgrp命令。

例如,假设您要创建一个公司中所有会计师都可以访问的目录。

首先,键入以下内容创建组帐户:

groupadd帐户

如果您没有创建组的正确权限,则可能需要使用sudo获取额外权限或使用su命令切换到具有有效权限的帐户。

现在,您可以通过键入以下内容来更改文件夹的组:

chgrp帐户

例如:

chgrp帐户测试

要为帐户组中的任何人提供读取,写入和执行访问权限以及所有者,只读给其他人,您可以使用以下命令:

chmod 770测试

要将用户添加到帐户组,您可能需要使用以下命令:

usermod -a -G帐户

上面的命令将帐户组附加到用户有权访问的辅助组列表。

如何同时创建目录和设置权限

您可以使用以下命令创建目录并同时为该目录设置权限:

mkdir -m777

上面的命令将创建一个每个人都可以访问的文件夹。您很少想要使用此类权限创建任何内容。

创建一个文件夹和任何所需的父母

想象一下,您想要创建一个目录结构,但您不希望创建每个单独的文件夹以及沿着树的方式工作。

例如,您可能正在为音乐创建文件夹,如下所示:

  • /家庭/音乐/摇滚/埃利斯·库珀
  • /家庭/音乐/摇滚/王后
  • /家庭/音乐/说唱/ drdre
  • /家庭/音乐/爵士乐/ louisjordan

必须创建摇滚文件夹,然后是alice cooper和queen文件夹,然后创建rap文件夹和dr dre文件夹,然后创建jazz文件夹,然后创建louisjordan文件夹,这将是很烦人的。

通过指定以下开关,您可以动态创建所有父文件夹(如果它们尚不存在)。

mkdir -p

例如,要创建上面列出的其中一个文件夹,请尝试以下命令:

mkdir -p~ / music / rock / alicecooper

确认目录已创建

默认情况下,mkdir命令不会告诉您是否已成功创建要创建的目录。如果没有出现错误,那么你可以认为它有。

如果您想获得更详细的输出,以便了解已创建的内容,请使用以下开关。

mkdir -v

输出将沿着mkdir:创建目录/ path / to / directoryname.

在Shell脚本中使用“mkdir”

有时您会希望将“mkdir”命令用作shell脚本的一部分。例如,让我们看一下接受路径的脚本。执行脚本时,它将创建文件夹并添加一个名为“hello”的文本文件。

#!/ bin / bash mkdir $ @ cd $ @ touch hello

第一行应该包含在您编写的每个脚本中,并用于表明这确实是一个BASH脚本。

“mkdir”命令用于创建文件夹。第2行和第3行末尾的“$ @”(也称为输入参数)将替换为运行脚本时指定的值。

“cd”命令将更改为您指定的目录,最后touch命令会创建一个名为“hello”的空文件。

您可以自己尝试脚本。为此,请按照以下说明操作:

  1. 打开一个终端窗口(按Alt和T应该这样做)
  2. 输入 nano createhellodirectory.sh
  3. 在编辑器中输入上面的命令
  4. 通过同时按CTRL和O保存文件
  5. 通过同时按下CTRL和X退出文件
  6. 通过键入来更改权限 chmod + x createhellodirectory.sh
  7. 通过键入运行脚本 ./createhellodirectory.sh测试

当您运行脚本时,将创建一个名为“test”的目录,如果您更改到该目录(cd测试) 并运行目录列表(LS), 你会看到一个名为“hello”的文件。

到目前为止一直很好,但现在尝试再次运行第7步。

  1. 将出现一个错误,指出该文件夹已存在。

我们可以做很多事情来改进脚本。例如,如果文件夹已经存在,我们并不特别在意,只要它存在。

#!/ bin / bash mkdir -p $ @ cd $ @ touch hello

如果指定-p作为mkdir命令的一部分,那么如果该文件夹已经存在则不会出错但如果该文件夹不存在则会创建它。

正如所发生的那样,touch命令将创建一个文件,如果它不存在但如果它确实存在,它只是修改最后访问的日期和时间。

想象一下,touch语句被一个echo语句替换,该语句将文本写入文件,如下所示:

#!/ bin / bash mkdir -p $ @ cd $ @ echo“hello”>>你好

如果再次运行命令“./createhellodirectory.sh test”,效果将是测试目录中名为“hello”的文件将越来越大,越来越多的行中包含单词“hello”。

现在,这可能是也可能不是预期的,但现在让我们说这不是理想的行动。您可以编写测试以确保在运行echo命令之前该目录不存在,如下所示。

#!/ bin / bash mkdir $ @ 2> / dev / null;如果$? -eq 0;然后cd $ @ echo“你好”>>你好退出fi

上面的脚本是我处理文件夹创建的首选方法。 mkdir命令创建作为输入参数传递的文件夹,但任何错误输出都将发送到/ dev / null(这实际上意味着无处)。

第三行检查上一个命令的输出状态,即“mkdir”语句,如果成功,它将执行语句,直到达到“fi”语句。

这意味着您可以创建文件夹并在命令成功时执行所需的所有操作。如果您想在命令不成功时执行其他操作,则只需输入else语句,如下所示:

#!/ bin / bash mkdir $ @ 2> / dev / null;如果$? -eq 0; thencd $ @ echo“hello”>> helloexitelsecd $ @ echo“hello”> helloexitfi

在上面的脚本中,如果mkdir语句有效,则echo语句将单词“hello”发送到名为“hello”的文件的末尾,而如果它不存在则将创建一个名为“hello”的新文件,其中包含单词“hello”你好“在里面。

这个例子不是特别实用,因为只需始终运行,就可以获得相同的结果 echo“hello”>你好行。该示例的要点是显示您可以运行“mkdir”命令,隐藏错误输出,检查命令的状态以查看它是否成功,然后执行一组命令,如果“mkdir”命令是成功的,如果没有,则是另一组命令。