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