linux - 使用 rm 命令删除所有文件或目录时出现“意外标记 `(' 附近的语法错误”
问题描述
$ sshpass -p "$SSH_PASS" ssh student@"$IP_NFS" "sudo rm -r /srv/nfs4/share/assets_prod/!(v$TAG)"
Warning: Permanently added 'x.x.x.x' (ED0599) to the list of known hosts.
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `sudo rm -r /srv/nfs4/share/assets_prod/!(v0.0.3-rc6)'
检查结果直接到nfs服务器
student@nfs:~$ sudo echo rm -r /srv/nfs4/share/assets_prod/!(v0.0.3-rc6)
rm -r /srv/nfs4/share/assets_prod/kk.dd /srv/nfs4/share/assets_prod/kk.dkk /srv/nfs4/share/assets_prod/kk.dkkff /srv/nfs4/share/assets_prod/v0.0.3-rc2 /srv/nfs4/share/assets_prod/v0.0.3-rc3 /srv/nfs4/share/assets_prod/v0.0.3-rc4 /srv/nfs4/share/assets_prod/v0.0.3-rc5
是什么导致命令运行出现问题?
解决方案
您已使用以下命令:
sudo rm -r /srv/nfs4/share/assets_prod/!(v$TAG)
但是括号对shell有特殊的意义。你最好使用
$ sshpass -p "$SSH_PASS" ssh student@"$IP_NFS" "sudo rm -r '/srv/nfs4/share/assets_prod/!(v$TAG)'"
将文字字符串传递给rm
,没有外壳干扰。
推荐阅读
- cassandra - 如何将用户定义的数据类型列表索引为冻结在表“列表”
>”? - python - 有没有办法编辑过滤器 GET 请求返回的对象?
- encoding - 如何在 Jmeter 的 Http 测试脚本记录器中设置默认 UTF-8?
- typescript - Sublimetext 使用键盘快捷键循环方法签名
- android - 如果 Android Spinner 选择不起作用,如何修复它?
- python - 有没有办法删除文本中不在其他文本中的所有单词?
- javascript - 创建 cookie 以记住字体缩放工具的值
- python - 如何从字符串中提取值并在数据库查询中使用这些值?
- netlogo - Netlogo,在特定多边形的中心创建品种(即 id = 123456)
- php - 如何将我的 PHP 代码连接到 Heroku 的插件“SendGrid”?