rm:无法删除' -rf':没有这样的文件或目录

时间:2017-08-09 13:45:54

标签: bash rm

我有一个Bash脚本可以自动创建一些SVN文件夹。在这样做的过程中,它会创建一个临时目录。当我尝试使用 rm -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

似乎认为" -rf"是文件名。该命令在命令行上正常工作。

这是我的剧本......

$ ./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

这是输出

List<Product>

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:1)

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

我希望你能发现差异。

rm –rf rm -rf