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

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

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

如何创建一个新目录

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

mkdir <文件夹名称>

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

mkdir测试

更改新目录的权限

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

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

ls -lt

有可能你会有这样的一些事情:

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

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

d告诉我们测试是一个目录。

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

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

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

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

要获得混合权限,请将这些数字加在一起。 例如,要获得读取和执行权限,您需要的编号是5,要获得读写权限,编号为6,并且获得写入和执行权限的编号为3。

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

例如,要获得对所有者的完全权限,请在组上读取和执行权限,并且没有其他人的权限输入以下内容:

chmod 750测试

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

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

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

groupadd帐户

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

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

chgrp帐户<文件夹名称>

例如:

chgrp帐户测试

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

chmod 770测试

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

usermod -a -G帐户<用户名>

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

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

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

mkdir -m777 <文件夹名称>

上述命令将创建一个每个人都可以访问的文件夹。 你很想用这种权限创建任何东西。

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

想象一下,你想创建一个目录结构,但你不想创建每个单独的文件夹,并沿着树的方式工作。

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

创建rock文件夹,然后是alice cooper和queen文件夹,然后创建说唱文件夹和dr dre文件夹,然后是爵士文件夹,然后创建louisjordan文件夹会很烦人。

通过指定以下开关,您可以即时创建所有父文件夹,如果它们尚不存在的话。

mkdir -p <文件夹名称>

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

mkdir -p〜/ music / rock / alicecooper

确认目录是否已创建

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

如果您想获得更详细的输出,以便您知道创建了什么,请使用以下开关。

mkdir -v <文件夹名称>

输出将沿着mkdir:created目录/ path / to / directoryname的行

使用&#34; mkdir&#34; 在Shell脚本中

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

#!/斌/庆典

mkdir $ @

cd $ @

触动你好

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

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

“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 test)并运行目录列表( ls),则会看到名为“hello”的单个文件。

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

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

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

#!/斌/庆典

mkdir -p $ @

cd $ @

触动你好

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

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

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

#!/斌/庆典

mkdir -p $ @

cd $ @

回声“你好”>>你好

如果你一次又一次地运行“./createhellodirectory.sh test”命令,那么测试目录中名为“hello”的文件会越来越大,其中包含单词“hello”的行越来越多。

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

#!/斌/庆典

mkdir $ @ 2> / dev / null;

如果[$? -eq 0]; 然后

cd $ @

回声“你好”>>你好

出口

科幻

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

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

这意味着如果命令成功,您可以创建文件夹并执行所有您想要的操作。 如果你想要做的事情,如果命令不成功,那么你可以简单地输入一个else语句如下:

#!/斌/庆典

mkdir $ @ 2> / dev / null;

如果[$? -eq 0]; 然后
cd $ @
回声“你好”>>你好
出口
其他
cd $ @
回声“你好”>你好
出口
科幻

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

这个例子并不特别实用,因为只要总是运行echo“hello”> hello行就可以获得相同的结果。 这个例子的要点是要证明您可以运行“mkdir”命令,隐藏错误输出,检查命令的状态以查看它是否成功,然后在执行“mkdir”命令时执行一组命令是成功的,如果不是,则是另一组命令。