【问题标题】:rm -r in shell script (my first *.sh)rm -r 在 shell 脚本中(我的第一个 *.sh)
【发布时间】:2015-05-05 09:42:21
【问题描述】:

我想删除 Ubuntu 8.04 服务器上的一些文件夹。

我想启动一个脚本来删除这个文件夹。

我启动到服务器的 ssh 会话。

我的脚本如下所示:

#!/bin/bash
rm -r /var/lib/backuppc/pc/PC1/
rm -r /var/lib/backuppc/pc/PC2/

我这样运行脚本:

sh scriptname.sh

但我收到了这条消息:

rm: cannot remove `/var/lib/backuppc/pc/PC1/\r': No such file or directory
rm: cannot remove `/var/lib/backuppc/pc/PC1/\r': No such file or directory

很抱歉,我从来没有在 linux 上使用过 shell 脚本。 我认为这是我的错,因为我不了解基础知识:-(

有人可以帮助我吗?我要删除 ~80 文件夹... :-(

【问题讨论】:

  • 您是否在 Windows 上创建了脚本?它在每行的末尾有一个回车符 (\r) 和换行符 (\n)。 Unix/Linux 只需要换行符,\n。在服务器上,试试dos2unix scriptname.sh
  • 不想听起来居高临下,我可以建议如果这是你的第一个脚本,请非常小心使用rm -r和(如果在Unix平台上)从不以root身份运行它。我是从痛苦的个人经历中这么说的。
  • 是的,我是在 Windows 上使用 Notepad++ 创建的。
  • Ubuntu 8 已经 7 岁了!
  • 我的祖父非常喜欢 Ubuntu 8。 :-)如果他没有死,他会要求你继续前进到14岁!

标签: bash shell rm delete-file


【解决方案1】:

您的文件夹名称(即\r)后面似乎有一些“垃圾”字符。可以肯定的是,输入cat -A scriptname.sh 并检查是否可以在行尾看到一些奇怪的字符。如果是这样,我认为对您来说最简单的事情(因为您的行数很少)是手动删除这些行的结尾并再次重新输入。 (我说的只是最后两个或三个字符) 键入cat -A scriptname.sh 并查看字符是否消失。如果是这样,您应该很好地使用您的代码。

【讨论】:

  • 非常感谢!有一些字符。这就是我在 windows 下创建 shell 并在 unix 上运行它的方法: 1.使用 notepad++ 创建脚本 2.选择视图 - 显示符号 - 显示所有字符(我看到 CR&LF) 3.选择编辑 - EOL 转换 - UNIX 格式(CR&LF 已更改到LF)
  • 所以我猜这解决了你的问题?我可以建议您开始在 Linux 中编写 bash 代码吗?对于“命令行”编辑器,您可以使用nano(更简单)或vim(可能有点太高级了)。对于“图形用户界面”编辑器,您可以使用 geditgeany(两种颜色都为您的脚本编码,因此更容易可视化)。
  • 谢谢汤姆乔! - 是的,我的问题解决了。 - 我会看看你推荐的编辑器。
  • 嘿,我不是说因为我想要加分或任何东西,但是当答案解决了您的问题时,您应该单击答案旁边的“复选标记”。这样,您就可以向社区表明您解决了您的问题,您获得积分,其他人获得积分,每个人都可以快速查看哪些答案对您有用。这样整个社区都会受益。你可以阅读更多关于它here ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2022-01-09
相关资源
最近更新 更多