如何使用get-iplayer指定下载文件夹

时间:2013-09-09 17:34:48

标签: shell command-line

我正在为get_iplayer制作一个gui。 (代码here

根据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程序。

1 个答案:

答案 0 :(得分:1)

Tilde扩展规则非常复杂

$ 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文件夹,但在其他语言环境或操作系统下可能不是这种情况。