相关文章推荐
沉着的热水瓶  ·  module 'torch' has no ...·  2 年前    · 
聪明的签字笔  ·  VBA VB ...·  2 年前    · 

通过mkdir创建目录

1 人关注

我想在/tmp/vnc/中创建一个以用户名命名的文件夹,我可以在命令行中用 perl -e 'mkdir("$ENV{USER}")' 创建该文件夹,但对于下面的代码却无法工作。

chdir ("/tmp/vnc") or die -1;
mkdir ("$ENV{USER}", 0777) or die -1;

如果我在命令行中使用mkdir -p /tmp/vnc/$ENV{USER}来制作文件夹,什么也没有发生,也没有错误报告。

5 个评论
... or die "Error in mkdir: $!\n" 可能会告诉你更多。 $! 给你以前失败的操作的错误代码。
非常感谢。它说 "错误在mkdir。文件存在",但以用户名命名的目录并不存在。
@thinkman 也许有一个同名的文件(或fifo,或socket)。你不能有一个目录和一个同名的文件。
Tilo
...或者运行该脚本的用户账户没有权限在/tmp/vnc内创建文件或目录...! 请检查ls -ld /tmp/vnc以查看该目录的权限。
@Tilo: 如果该用户没有权限,错误可能是 "权限被拒绝 "而不是 "文件存在"。
linux
perl
directory
mkdir
thinkman
thinkman
发布于 2011-09-29
4 个回答
rodrigo
rodrigo
发布于 2011-09-29
已采纳
0 人赞同

对我来说,它是有效的。 也许 /tmp/vnc 目录不存在,而 chdir 失败。 也可能 $USER 环境变量没有被定义,因为你是从init.d脚本中运行它的,例如...... 或者你在 /tmp/vnc 目录中没有写权限。你有没有试着从shell中执行 mkdir /tmp/vnc/$USER

没有细节就不可能知道更多。

我确信/tmp/vnc已经存在了。我可以在命令行中通过perl -e 'mkdir("$ENV{USER}")'来做这个。
mkdir /tmp/vnc/$USER不能工作,因为vnc是一个目录,$USER是一个子目录,mkdir不支持在一个父目录下创建一个目录。
@thinkman 当然可以。只要父目录已经存在。
@teambob 奇怪的是,"mkdir -p /tmp/vnc/test "命令不起作用,但当我进入/tmp/vnc然后 "mkdir test "时,就起作用了。
现在,这没有任何意义了!那么 mkdir -p /tmp/vnc/test 的错误是什么呢?
Konstantin Burlachenko
Konstantin Burlachenko
发布于 2011-09-29
0 人赞同
  • Please check special variable $! for text error message
  • Please check that variable $ENV{USER} doesn't contain extra quotes. I had similar problem in Windows OS for Activer Perl. My problem was in extra quotes
  •