gpt4 book ai didi

ruby - ~/在 Ruby 中指向哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:19 26 4
gpt4 key购买 nike

我刚开始使用 Ruby 编程,我想编写一个涉及创建目录的小脚本。

当我使用 system 'mkdir', '-p' '~/.dir' 时,没有创建目录。但是当我将它更改为 /home/name/dir 时,一切都按预期工作。由于我想保持脚本的通用性,我怎样才能实现 ~/ 的常用 Unix/Linux 语义?

最佳答案

在Ruby 中,~ 在文件路径中没有特殊含义。即使它在 system 调用的参数内部使用,它也不会被底层 shell 扩展。您的代码应该在当前工作目录中创建一个名为 ~ 的目录,例如:

$ ruby -e 'system("mkdir", "-p", "~/.dir")'
$ ls
~
$ ls -A '~'
.dir

您必须使用 File.expand_path~ 扩展到您的主目录路径:

File.expand_path('~')
# => "/home/toro2k"

在你的例子中:

system('mkdir', '-p', File.expand_path('~/.dir'))

在 Ruby 中你也可以使用 FileUtils.mkdir_p创建目录:

require 'fileutils'
FileUtils.mkdir_p(File.expand_path('~/.dir'))

更新:正如 Tin Man 所建议的,我后面的示例可以使用 Pathname 重写类如下:

require 'pathname'
Pathname.mkpath(Pathname.new('~/.dir').expand_path)

关于ruby - ~/在 Ruby 中指向哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22941004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com