前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从微信聊天记录复制粘贴的Linux代码为什么运行失败?

从微信聊天记录复制粘贴的Linux代码为什么运行失败?

作者头像
生信技能树
发布2024-04-13 20:55:04
1370
发布2024-04-13 20:55:04
举报
文章被收录于专栏:生信技能树生信技能树

起因是在最近的一次Jimmy老师给大家的视频号直播中,我们尝试演示了一段代码的运行过程。意外发现,当代码从微信中复制粘贴到终端时,竟然出现了无法运行的情况。(详见下面的视频演示,大约是在第8分钟左右。。。)

这个小插曲不仅引起了我的好奇心,也激发了我探索和解析背后原因的欲望。在这篇文章中,我将与大家分享我对这个问题的研究过程、发现的原因,以及如何j解决。这个经历提醒我们,在日常工作中,一些看似简单的操作也可能隐藏着意想不到的bug,值得我们深入探讨和理解。

情景再现

起因是需要用到kingfisher下载一个数据集,代码直接从微信检索了相关代码

image.png

直接复制粘贴,运行报错信息如下,仔细有看了下代码,没有问题,这就很诡异。

既然报错是显示命令没有,而软件和代码看起来是没有问题的,那大概率就是shell字符识别的问题。因为微信复制粘贴可能会有诡异字符。思路有了,下面就是验证猜想。

验证猜想

在shell查看

在shell环境下检查看看我们复制粘贴了什么鬼东西

可以看到是有一些诡异字符的。这些字符出现在从微信或其他应用程序复制的文本中,是因为原始文本含有特定的控制字符或特殊的空格字符(如非断空格U+00A0,在shell环境显示为M-BM- ,通常不可见),这些在复制过程中没有被正确处理或转换。

在文本编辑器查看

sublime text 查看

也可以看到是有一些隐藏字符的,而且和在shell环境显示的还不一样。

问题原因:\xa0是非断空格(non-breaking space)的ASCII表示,它通常用于Web页面和文本处理中以防止自动换行。在十六进制中,它的表示是0xA0,属于扩展ASCII码的一部分。当从微信这样的应用中复制文本时,可能会无意中复制了这种空白字符,因为它们在微信中可能用于格式化文本但在代码编辑器或命令行环境中通常是不可见的。所以就会出现命令看起来正确,但是却运行不了的情况。

解决办法

解决方法有很多,在shell替换一下特殊字符或者在文本编辑器中使用查找和替换功能,将所有\xa0实例替换为常规空格(ASCII码为0x20),或者直接删除它们。不同的编辑器和IDE具有不同的方法来显示和处理这些非打印字符。

shell替换一下

代码语言:javascript
复制
echo "kingfisher  get -p PRJNA289185 -m ena-ascp ena-ftp prefetch aws-http" |sed 's/M-BM-//g'

image.png

文本编辑器替换

  1. 打开查找面板: 在Sublime Text中,按下 Ctrl + F (在Mac上是 Cmd + F)打开查找面板。
  2. 开启正则表达式搜索: 点击查找面板左下角的.*按钮,这样你就可以使用正则表达式来查找字符。
  3. 输入要查找的正则表达式: 在查找输入框中输入 \xa0 这代表非断空格。
  4. 替换所有 Replace All

Sublime Text

替换后

碎碎念:其实最简单的方法,就是尽量不从微信复制粘贴代码。从根源上避免出现这个bug

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 情景再现
  • 验证猜想
    • 在shell查看
      • 在文本编辑器查看
      • 解决办法
        • shell替换一下
          • 文本编辑器替换
          相关产品与服务
          云直播
          云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档