我想知道如何处理名称为标志的文件,例如'-a',' - f'等。我不能将它们作为参数传递给rm
或ls
等程序,因为它们被解释为标志,并且执行rm *
或ls *
只是使用文件名的标志运行这些程序(出于显而易见的原因)。如何在程序参数中将标志作为普通文件名传递?
答案 0 :(得分:8)
常见的诀窍是以./
:
edd@max:/tmp$ touch ./-a ./-b ./-c
edd@max:/tmp$ ls -l ./-*
-rw-rw-r-- 1 edd edd 0 May 22 21:07 ./-a
-rw-rw-r-- 1 edd edd 0 May 22 21:07 ./-b
-rw-rw-r-- 1 edd edd 0 May 22 21:07 ./-c
edd@max:/tmp$ rm ./-*
edd@max:/tmp$ ls -l ./-*
ls: cannot access ./-*: No such file or directory
edd@max:/tmp$