【问题标题】:rm: cannot remove '–rf': No such file or directoryrm: 无法删除 '-rf': 没有这样的文件或目录
【发布时间】:2018-01-17 10:52:16
【问题描述】:

我有一个自动创建一些 SVN 文件夹的 Bash 脚本。在此过程中,它会创建一个临时目录。当我尝试使用 rm -rf 命令删除该临时目录时,我收到以下错误...

rm: cannot remove '–rf': No such file or directory

似乎认为“-rf”是一个文件名。该命令在命令行上运行良好。

这是我的脚本...

#!/bin/bash

if [ $# -lt 1 ]; then
  echo "Usage: $0 reponame1 reponame2 ..."

else
  for var in "$@"
  do
      REPONAME=$var

      mkdir -p ~/temp-$REPONAME/branches
      mkdir ~/temp-$REPONAME/tags
      mkdir ~/temp-$REPONAME/trunk

      svnadmin create $REPONAME
      svn import ~/temp-$REPONAME svn+ssh://username@192.168.123.234/home/username/svnrepos/$REPONAME -m "Initial structure"

      rm –rf ~/temp-$REPONAME/
  done
fi

这是输出

$ ./mkrepo.sh mysvnrepo
username@192.168.123.234's password:
username@192.168.123.234's password:
Adding         /home/username/temp-mysvnrepo/branches
Adding         /home/username/temp-mysvnrepo/tags
Adding         /home/username/temp-mysvnrepo/trunk
Committing transaction...
Committed revision 1.
rm: cannot remove '–rf': No such file or directory
rm: cannot remove '/home/username/temp-mysvnrepo/': Is a directory

【问题讨论】:

    标签: bash rm


    【解决方案1】:

    您设法键入了一个 unicode "EN DASH"(U+2013),rm 无法将其识别为普通连字符 "-"(U+002D),因此 rm 认为它是文件的开头名称而不是您的参数。它们看起来确实相似,但对于一个程序来说它们并不相同。要修复它,只需擦除它并再次输入,确保使用正常的连字符/减号键。

    【讨论】:

    • 我替换了破折号字符并解决了问题。我不确定另一个破折号是如何插入的,因为我的键盘只有一个破折号键。感谢您的帮助。
    【解决方案2】:

    rm –rf 中脚本中的“-”不是它所期望的。 正确的是rm -rf

    我希望你能发现其中的不同。

    rm –rf rm -rf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 2016-07-09
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2022-08-08
      相关资源
      最近更新 更多