1

我正在为get_iplayer. (代码在这里

根据 get-iplayer 的手册页,我可以指定下载目的地

get-iplayer -g `index` --output="/some/desired/folder/"

这有效,如果我输入绝对路径,即--output="/home/severin/Videos/",我会得到想要的结果。但是,我想指定一个对其他用户也可行的路径,即

--output="~/Videos"

不幸的是,这根本不起作用。它在我的当前目录中创建一个新文件夹,例如,如果我在目录“~/Pictures/”中,上述命令将创建一个新目录"/home/severin/Pictures/~/Videos"

这是 get-iplayer 中的错误还是我做错了?

编辑:get-iplayer 是一个 perl 命令行程序,用来记录 BBC 的 Iplayer 节目。

4

1 回答 1

1

波浪号扩展规则非常复杂

$ echo ~          # normal expansion
/home/amon
$ echo ~/foo      # exp at beginning of path
/home/amon/foo
$ echo ~foo       # but must be followed by a slash
~foo
$ echo foo/~      # not at the end of a path
foo/~
$ echo foo=~      # expansion ok after non-word char
foo=/home/amon
$ echo foo=~/foo  # can extend the path further
foo=/home/amon/foo
$ echo "~"        # no expansion inside quotes
~
$ echo -foo=~     # not when token begins with non-word character
-foo=~

$HOME变量适用于所有这些情况:

$ echo $HOME; echo $HOME/foo; echo foo/$HOME; echo "$HOME"; echo --foo=$HOME;
/home/amon
/home/amon/foo
foo//home/amon
/home/amon
--foo=/home/amon

因此,您希望命令包含--output=$HOME/Videos或等效。请注意,这不是完全可移植的:虽然面向最终用户的英语系统可能Videos在主目录中有一个文件夹,但在其他语言环境或操作系统下可能并非如此。

于 2013-09-09T17:54:08.097 回答