这是什么意思?

这是什么意思?

我很难明白该怎么./做。

在 Linux Essentials 书籍中,它要求我在练习中删除名为-file.谷歌搜索后,我发现我需要这样做,rm ./-file但我不明白为什么!

答案1

.目录是当前目录。该目录..是该目录的上层目录

$ pwd
/home/user

$ cd docs; pwd   # change to directory 'docs'
/home/user/docs

$ cd .  ; pwd     # we change to the '.' directory, therefore we'll stay. No change
/home/user/docs

$ cd .. ; pwd     # back to up level
/home/user

在Linux 中,命令选项由符号引入-,即ls -l,因此如果您想引用以-等开头的文件-file,命令会认为您正在尝试指定一个选项。例如,如果你想删除它:

rm -file

file会抱怨,因为它正在尝试使用命令的选项rm。在这种情况下,您需要指示该文件的位置。在当前目录(即目录)中.,您需要将该文件引用为./-file,这意味着在目录 中.,文件-file。在这种情况下,该命令rm不会认为这是一个选项。

rm ./-file

也可以使用 来完成--

man rm

要删除名称以“-”开头的文件(例如“-foo”),请使用以下命令之一:

rm -- -foo
rm ./-foo

答案2

句号字符.是当前目录。所以例如lsls .是同义词。如果你在/etc命令中cat /etc/fstab/cat ./fstabcat fstab同样的事情。

rm ./-file使用是因为rm解析-以命令行选项而不是文件名开头的所有内容。例如,ls -l不会尝试显示名为 的文件-l,但ls ./-lls /some/directory/-l执行此操作。

答案3

如果您键入,rm -file您将传递一个命令行选项而rm不是名称-file

要删除,请在引号中-file传递rm名称rm "-file"或转义-. rm \\-file。在 bash 或 zsh 中,如果您不确定命令是否获取正确的文件名,请使用制表符补全。示例:type rm -fiTAB如果屏幕没有打印输出,rm -file您知道自己做错了什么,应该在按回车键之前修复它,另一个示例rm "-fiTAB应该打印输出rm "-file"

至于./,/只是目录和文件名之间的分隔符。 “。”表示当前目录。 “..”表示目录向上。因此,要删除foo当前目录中的文件,请键入rm ./foorm foo也可以)。要删除上一个目录中的文件,请键入要删除上一级目录所包含的目录rm ../foo中的文件。barrm ../bar/foo

在这种情况下,./将其放在前面-file,以便该-角色不是第一个rm看到的东西,因为这会使其认为您正在使用某些选项。

如果你了解一点DOS,rm -file就会对应rm /file于DOS。

相关内容