迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Bash 仅当目录不存在时运行 Mkdir

作者:迹忆客 最近更新:2023/05/18 浏览次数:

本文讨论 mkdir 及其在创建目录中的用法。 它进一步讨论了当我们要创建的目录不存在时使用 mkdir 的方法。


mkdir 命令及其用途

Unix/bash 中的 mkdir 命令代表 make 目录。 它允许用户创建文件夹、设置权限等等。

执行 mkdir 命令的用户必须有足够的权限才能在指定的路径中创建目录,否则用户可能会遇到权限被拒绝的错误。


使用 mkdir 创建目录

mkdir 的一般语法如下:

mkdir <specified_option> directory_name
sudo mkdir <specified_option> directory_name # in case user doesn’t have permissions

mkdir 还允许一次创建多个目录。 为此,请在大括号内添加以逗号分隔的目录名称。

确保您没有在目录名称中包含额外的空格,否则目录将在其名称中包含空格。 下面的命令演示了我们所说的:

mkdir {dir1,dir2,dir3} # here directory names are dir1, dir2 and dir3

Creating Directories With mkdir


仅当目录不存在时才使用 mkdir 创建目录

使用 mkdir 时的一个问题是当尝试创建的目录已经存在时出错。 运行 bash 命令不是什么大问题,因为如果目录不存在,mkdir 会创建一个目录; 否则,它只会给出一个适当的错误。

然而,有一个转折点。 假设您正在尝试编写自定义 bash shell 并且不希望 mkdir 在尝试重新创建现有文件时给出错误。 那你怎么办?

我们将解释几种防止上述情况的方法。

[[ -d dir_name ]] || mkdir dir_name # option 1
mkdir -p dir_name # option 2
mkdir dir_name 2>/dev/null # option 3

Creating Directories With mkdir Only When They Dont Exist

第一个选项和第三个选项比第二个更值得推荐,因为第二个选项可能会在并发执行期间遇到竞争条件。 至于第三个,它将 stderror 的输出重定向到文件 dev/null。

如果学过操作系统,就有一个ppfdt表(进程文件描述符表)的概念。 回想一下,默认情况下,零描述符指向 stdin,一个描述符指向 stdout,两个描述符指向 stderror。

/dev/null 是一个空设备文件,它将丢弃写入其中的所有内容,并在读取时返回文件结束字符。 它就像一个真空吸尘器,它会吸走任何扔进去的东西。

也就是说,在这里您可以将 stderror 重定向到您选择的任何未使用的文件,但更推荐 /dev/null。


将 mkdir 与 if 控制结构一起使用

另一种方法可以围绕使用 if 控制结构。 您可以检查该目录是否存在,如果不存在,则继续创建它; 否则,什么也不做。

下面的脚本对此进行了详细说明:

if [ ! -d dir_name ]; then mkdir dir_name; fi

Using mkdir With an if Control Structure

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

批处理脚本中的 For 循环

发布时间:2023/05/19 浏览次数:103 分类:操作系统

本篇文章将介绍如何在批处理脚本中使用 FOR 循环。循环用于连续执行特定任务,直到达到程序员指定的次数。 这个 FOR 循环有不同的版本。

批处理脚本中的 For \F

发布时间:2023/05/19 浏览次数:151 分类:操作系统

本文将讨论在批处理脚本中使用 FOR /F 循环。在批处理脚本中使用 FOR /F 循环 此类 FOR 循环的一般格式如下所示:

批处理文件循环遍历子目录中的文件

发布时间:2023/05/19 浏览次数:163 分类:操作系统

本文说明了我们如何编写一个批处理脚本来循环遍历子目录中的文件。 我们将举一个例子来解释这个概念。批处理文件循环遍历子目录中的文件

批处理文件删除文件名的 X 个字符

发布时间:2023/05/19 浏览次数:136 分类:操作系统

本文说明了我们如何使用批处理脚本从文件的文件名中删除特定字符。 我们将在下面介绍在 Windows 上重命名文件的几种方法。Windows 上的文件资源管理器重命名

在批处理脚本中声明变量

发布时间:2023/05/19 浏览次数:69 分类:操作系统

本文将演示如何在批处理脚本中声明和定义变量。在批处理脚本中声明变量。在 Batch 中,不需要使用任何其他关键字来声明整数、浮点数、双精度或字符串类型变量。

在批处理脚本中将文件读入变量

发布时间:2023/05/19 浏览次数:174 分类:操作系统

本文将向我们展示如何将整个文件内容放入一个变量中,此外,我们还将看到一个示例和解释,以使该主题更容易理解。使用FOR循环批量读取变量中的文件

Batch 检查指定的环境变量是否包含子字符串

发布时间:2023/05/19 浏览次数:108 分类:操作系统

本文讨论如何使用 Batch 命令来测试某个环境变量是否包含特定的子字符串。 我们将介绍可以在上述场景中使用的两个批处理脚本。检查指定的环境变量是否包含子字符串

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便