网页终端粘贴 heredoc 被拆成一行?用 base64 稳稳写文件

举报
yd_258878246 发表于 2026/10/29 09:31:29 2026/10/29
【摘要】 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,粘贴多行会被拆成一个个回车。本地终端没这毛病,所以平时不会遇到。

几个办法:

  1. 确认是“整体粘贴”而不是逐字符输入。CloudShell 这版支持 bracketed paste,但前提是你的粘贴动作走的是剪贴板事件。
  2. 稳妥点,把内容先编码成一行:
echo 'IyB2aW0g...' | base64 -d > /usr/lib/systemd/system/docker.service
  1. 或者干脆用 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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。