不能用 mkdir 创建新目录

Slo*_*vic 13 command-line mkdir

当我跑

mkdir ../../bin/Release_Linux/Resources
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

$ mkdir ../../bin/Release_Linux/Resources
mkdir: cannot create directory ‘../../bin/Release_Linux/Resources’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

要不就

mkdir Release_Linux/Resources
mkdir: cannot create directory ‘Release_Linux/Resources’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

sud*_*dus 31

路径中的父目录可能不存在。

你可以试试

mkdir -p /path-to-directory/directory-name
Run Code Online (Sandbox Code Playgroud)

man mkdir

   -p, --parents
          no error if existing, make parent directories as needed
Run Code Online (Sandbox Code Playgroud)

如果出现permission denied错误,则您无权在指定路径中创建目录。

检查是否可以通过修改组成员身份或所有权来解决问题,以便获得涉及的整个目录路径所需的权限。

否则你需要提升权限,所以尝试 sudo

sudo mkdir -p /path-to-directory/directory-name
Run Code Online (Sandbox Code Playgroud)

  • 请注意,提升权限可能有点矫枉过正。如果用户属于也拥有该目录的组,并且在该目录上设置了组的写权限,则在这种情况下不需要 `sudo`。使用 ACL 权限会使事情变得更加复杂,但一般要点是组所有权应该删除 sudo 需要 (2认同)

Ser*_*nyy 6

sudodus 的回答恰当地解决了如何沿给定路径创建所有目录。另一种方法是通过 Python。如果您正在使用 Python 为 Ubuntu 开发软件并需要此类功能,这将特别有用。mkdir作为外部命令调用会增加额外进程的开销和额外的分叉,这会浪费资源。幸运的是 Python 的标准库,特别是os模块具有makedirs()功能:

$ python3 -c 'import os,sys;os.makedirs(sys.argv[1])' test_1/test2/test_3
$ tree test_1
test_1
??? test2
    ??? test_3

2 directories, 0 files
Run Code Online (Sandbox Code Playgroud)

请注意,这种行为也可以在Perl 中实现,Perl是 Ubuntu 默认附带的另一种脚本语言。