如何将输出重定向到名称中包含斜杠的文件


1

我想创建一个名为的文件 ./https://www.example.com,但以下不起作用:

[ ~]$ URL="https://www.example.com"
[ ~]$ echo "Hello!" >"$URL"
bash: https://www.example.com: No such file or directory

我怎么能告诉bash我想要一个带有斜杠的文件名,而且我不是要查看另一个(不存在的)目录?


8
你不能。斜杠是Unix文件名中不允许的两个字符之一。 (另一个是NUL。)。
John1024

2
我刚刚在Ubuntu 12.04上尝试了它,它允许在文件名中使用反斜杠...所以真正的问题是为什么人们想要一个名称是URL的文件,如果这个原因很简单,就可以轻松替换带有反斜杠的正斜杠......
Hitsugaya198

Answers:


0

这不会使URL成为文件,而是使其成为变量(通过赋值):

$ URL="https://www.example.com"

http://tldp.org/LDP/abs/html/varassignment.html

你能解释一下你正在做什么吗?


1
是的,$ URL是一个变量。当你执行 command [args] >filedescriptor,filedescriptor被视为文件的名称。例如。 echo hello, world! > hello.txt 将创建一个名为hello.txt的文件并放入“hello,world!”在里面。在这种情况下,我想要一个名称为的文件 https://www.example.com。但是,正如@ John1024指出的那样,这是不可能的,因为“/”不是文件名中的有效字符。
nullUser

0

我想你要重新映射某些特殊字符,因为'/'不能是有效的POSIX文件名。

试试这个:

FILENAME="$(echo "$URL" | tr '//:?+' '_')"
echo "Hello!" >"$FILENAME"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.