网页终端粘贴 heredoc 被拆成一行?用 base64 稳稳写文件
【摘要】 CloudShell 里直接粘贴 heredoc,命令会被拆行执行,配置文件只剩半截。本文给出 base64 一行写入和完整性检查方法。
在网页终端里写 docker.service,我用的是最熟的那套:
cat >/usr/lib/systemd/system/docker.service <<'EOF'
[Unit]
Description=Docker Application Container Engine
...
EOF
结果粘进去之后,终端把每一行都当命令执行了一遍,刷了一屏 command not found,文件最后只剩半截。
原因也简单:网页终端如果没开 bracketed paste,粘贴多行会被拆成一个个回车。本地终端没这毛病,所以平时不会遇到。
几个办法:
- 确认是“整体粘贴”而不是逐字符输入。CloudShell 这版支持 bracketed paste,但前提是你的粘贴动作走的是剪贴板事件。
- 稳妥点,把内容先编码成一行:
echo 'IyB2aW0g...' | base64 -d > /usr/lib/systemd/system/docker.service
- 或者干脆用
vim一段段敲。
写完一定要验一下文件完整性,别写完就 systemctl start:
tail -3 /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl enable --now docker
systemctl is-active docker
is-active 返回 active 才算真的起来了。返回 failed 就去看 journalctl -u docker -n 50,别硬着头皮往下走。
教训:网页终端粘贴,跟本地终端不是一回事。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)