【问题标题】:Deleting "C:\Blah\Blah\..\...\Blah" File on Unix在 Unix 上删除“C:\Blah\Blah\..\...\Blah”文件
【发布时间】:2014-03-06 16:14:59
【问题描述】:

我有一个远程 Linode,我正在使用 Cygwin 访问它。创建了一个错误的数据库文件,特别是“C:\Users\Blah\Blah\website\blah\sqlite.db”。该文件用于在我的 Windows 机器上进行本地测试,但由于 Linode 上的错误而生成。请注意,这是 Linode 内的完整文件名,而不是它的位置。这是 Windows 语法,而不是 Unix,我认为这是问题所在。

现在,我无法删除它!它说,不能删除文件名没有任何原始反斜杠的文件“文件名”。这告诉我它无法识别这是一个错误的 Windows DB 文件。

我怎样才能删除这个?如果我可以访问 GUI 文件夹,我可以使用它,但我只有命令行!

请帮忙!

【问题讨论】:

  • 您尝试过使用双反斜杠吗? rm C\:\\Users\\Blah\\Blah\\website\\blah\\sqlite.db(我还建议转义冒号,如图所示)。反斜杠对 Unix shell 有特殊含义,必须转义才能按字面意思理解。
  • 将 \ 替换为 \\。另外,试试tab键

标签: windows cygwin filenames linode


【解决方案1】:

反斜杠和冒号不是文件系统的特殊字符(这就是为什么您可以在文件名中包含这些字符的文件),但反斜杠是 shell 的特殊字符(: 在某些情况下是特殊的)。

您只需将文件名传递给rm 命令。要从 shell 执行此操作,您需要转义反斜杠字符。

这应该可行:

rm C:\\Users\\Blah\\Blah\\website\\blahsqlite.db

例如(我只是在自己的系统上尝试过):

$ touch C:\\Users\\Blah\\Blah\\website\\blahsqlite.db
$ ls
C:\Users\Blah\Blah\website\blahsqlite.db
$ rm C:\\Users\\Blah\\Blah\\website\\blahsqlite.db
$

如果你的 shell 支持 tab 补全,那么你可能只需要输入 rm Ctab 并且,如果当前目录中没有名称以C 开头的其他文件,shell 会将其扩展为文件名的(转义版本)。 (Bash 也恰好在 : 前面插入了一个 \;这是不必要但无害的。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多