这Angular 2 风格约定表示延迟加载的文件夹应以加号 ( +
) 开头。
这在执行 时工作正常cd +directory/
,但在从外部对这些目录内的文件使用命令时会出现问题。vim +folder/file.ts
不起作用。在基本目录中执行操作git rm --cached **/*.js*
,将忽略目录内所有带有+
.引用命令参数不起作用。
我可以放弃 的概念+directory
,但我很欣赏惯例。
如何对以特殊字符开头的目录内的文件使用命令?
答案1
许多命令(head
/ tail
、sort
、sh
... vim
)都会处理以+
特殊开头的参数,因此将其用作文件名的第一个字符并不是一个好主意。同样的-
情况也适用于更常用的选项领袖角色。
与 for 一样-
,为了避免+
被特殊对待,您可以使用./
前缀。是另一条不以 开头的./+foo
路径。这个技巧对于其他根据内容不同地对待参数的情况也很有帮助。例如,它有助于包含(与)的文件名或ImageMagick 命令的文件名。+foo
+
./
awk
=
awk 1 a=b
awk 1 ./a=b
:
+x
对于某些识别为选项的命令,使用--
标记选项结尾也可能有所帮助。一般来说,它在比前缀更少的情况下起作用./
。
答案2
如果程序应该停止将命令行参数解释为(潜在)选项,并开始将它们视为您--
在“真实”选项之后使用的文件:
vim -- +folder/file.ts
gif rm --cached -- **/*.js*
并非所有程序都实现了这一点,但大多数现代程序都实现了这一点。