linux - 使用 rm 和 ls 时无法通过 SSH 删除目录
问题描述
我在将代码部署到服务器时尝试清理发布目录,但我需要保留至少 5 个。
现在我使用这个命令来做我提到的。
rm -rf $(ls -1t /path/to/deploy/release | tail -n +6)
当我在服务器上运行它时,一切看起来都很好,但是当我尝试通过 ssh 运行时它不起作用。. .
ssh user@123.456.789.100 'rm -rf $(ls -1t /path/to/deploy/release | tail -n +6)'
任何人请帮助或建议我。我做错了什么?
解决方案
警告:就像所有涉及rm -Rf
和“应该工作”的事情一样,下面的内容实际上可能会删除计算机上的所有文件(因为ssh
涉及到,那就是本地和远程计算机),并可能让你的厨房着火。我对损坏等不承担任何责任......备份(存储在厨房以外的地方)总是一件好事,也许你应该rm -Ri
先测试一下?
您没有说失败是什么,但我注意到的一件事是该ls
命令将在目录中生成文件名列表/path/to/deploy/release
,但rm
不会在该目录中运行,因此它将尝试删除这些名称的文件您的主目录而不是/path/to/deploy/release
. 这很容易通过cd
首先进入该目录来修复(尽管请确保编写命令,以便如果cd
失败,它不会只是随机删除错误目录中的文件)。
另一个问题是该命令依赖于分词来将输出ls ... | tail ...
转换为文件名列表,如果任何文件名包含空格和/或通配符,这将失败。这更难解决,所以我会忽略这个问题,希望它永远不会在你身上爆发。
无论如何,cd
修复(和未修复的空白错误),这就是我得到的:
ssh user@123.456.789.100 'cd /path/to/deploy/release && rm -Rf $(ls -1t | tail -n +6)'
同样,rm -Ri
建议使用(并拥有良好的备份)进行测试。
推荐阅读
- python - Django-tables 分页 per_page 未按预期工作
- php - 如何像在 python 中一样在 PHP 中执行校验和?
- python - 如何解决 Fenics 示例 ft06_elasticity.py 中未定义名称“nabla_div”错误?
- cluster-computing - pcs 在同时启动两台机器时在主节点中启动它们之前不会停止伙伴节点中的故障转移资源
- excel - 我能否以编程方式启用和禁用存储在 SharePoint 中并链接到 ms-access 的 xlsx 文件的 ms-excel 文件共享/共同创作?
- java - 我们可以使用包装类将 int 转换为 Byte 而不进行类型转换吗?
- javascript - React-DOM 自动触发 onClick 处理程序
- typescript - 试图让 fromEntries 类型正确
- mysql - 经典 ASP 遗留系统为 MySQL 8.0 中的所有整数返回 0
- c++ - Win32 更新后重启应用