linux - 如何在不使用引号的情况下删除名为 *(星号)的文件?

标签 linux bash shell

我实现了以下命令来创建一个名为 *(星号)的文件:

 echo > '*'

现在我应该删除这个文件而不使用任何引号。

我知道如何通过使用引号来删除它,但不确定如何在不使用引号的情况下删除它。

我尝试了以下命令,但由于命令行扩展,我确信它们不会工作:

rm ./*
rm /*

如果有人能帮助我解决这个问题,我将不胜感激。

最佳答案

我认为你应该自己解决这个问题:-)

不涉及引用的最简单解决方案是使用模式[*]。 shell 中的括号表达式的工作方式与正则表达式中的字符类非常相似,因此将匹配名称为单个字符 * 的文件。因此,您可以使用

删除您的文件
rm [*]

请注意,您不能使用该模式创建名为*的文件,因为 shell 将包含模式的单词替换为与该模式匹配的文件名;如果不存在这样的文件,则模式不匹配并且不执行替换。因此,如果没有名为 * 的文件,则 touch [*] 将创建一个名为 [*] 的文件。

关于linux - 如何在不使用引号的情况下删除名为 *(星号)的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56214656/

相关文章:

bash - 当其中一个子进程退出时退出 bash 脚本

bash - awk 对一列求和并在每行输入中打印该总和

bash - 使用 POSIX 提取 git url 的域

file - 编译程序,仅在编译失败时报告(不显示错误)

c# - Mac 和 Linux 上类似 Windows 的 shell 扩展

shell - `chmod` 不适用于 Dockerfile (macbook)

windows - 我如何在 node.js 中监听剪贴板事件?

linux - Accept() 不会阻止程序执行

c++ - 将使用 CreateEvent 和 WaitForMultipleObjects 的程序移植到 Linux

linux - 将进程标准输入和标准输出重定向到 netcat