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

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

作者头像
生信技能树
发布于 2024-04-13 12:55:04
发布于 2024-04-13 12:55:04
52000
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

起因是在最近的一次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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
玩转服务器-还有谁不知道微信的这个坑?
用户反馈了一些奇奇怪怪,都是按照正常理解本不应该出现的报错。追问一下,甚至代码还是参考的我们往期的教程。比如:玩转服务器—从卡顿到秒装,Conda焕新极速体验
生信菜鸟团
2025/04/23
570
玩转服务器-还有谁不知道微信的这个坑?
警告!你的微信聊天窗口复制粘贴的代码有风险!
助教最近很高产啊,前两天刚投稿了:全新购买的的Linux云服务器居然无法使用ssh登陆
生信技能树
2022/06/08
2K0
警告!你的微信聊天窗口复制粘贴的代码有风险!
20款优秀的免费代码编辑器
GitHub开发的文本编辑器Atom发布了0.177.0版,其中一个引入注目的变化是从Node.js切换到了io.js。io.js是Node.js的分支,Node.js社区发生分裂后由核心开发者在2014年12月创建的,已经发布了v1.1版,目前开发非常活跃。Atom是切换到io.js的一个重量级项目。
全栈程序员站长
2022/07/02
5.7K1
20款优秀的免费代码编辑器
快速上手 Vim 编辑器【Linux必知】
如果有兴趣的朋友,可以看我之前写过的几篇文章,Linux我也用的不是特别多,也只是一个在学习途中的菜鸡,整理点文章,顺便总结,顺便与大家一起交流~
BWH_Steven
2020/05/11
1K0
快速上手 Vim 编辑器【Linux必知】
Linux 编辑器之神vim编辑器
Linux:使用文本文件来保存配置信息 文本编辑器:ASCII文件 emacs vi vi:Visual Interface(纯字符界面的编辑器) 全屏文本编辑,nano 模式化的编辑器
李玺
2021/11/22
9.5K0
Linux 编辑器之神vim编辑器
文本编辑利器Notepad++ 10个强大而又鲜为人知的特性
Notepad++ 顾名思义就是 windows 内置 Notepad 的增强版,它采用 C++ 编写,性能优秀,不仅小巧(完整安装包仅 3.8MB),功能众多,插件丰富,而且最关键的是“完全免费”!这一点比起 Editplus、UltraEdit、Sublime Text 等其它文本处理软件来说,算是个大的卖点。 说了这么多咱们言归正传,在日常的研发、数据处理过程中,免不了和各种文本、数据、代码打交道,今天就来细数 Notepad++ 10个强大而又鲜为人知的特性,教你如何快速用它处理各种文本问题,做到事
用户1177713
2018/02/24
4.2K0
文本编辑利器Notepad++ 10个强大而又鲜为人知的特性
Linux Vi编辑器和find命令的使用
Linux:使用文本文件来保存配置文件 文本编辑器:ASCII文件 emacs vi vi:Visual Interface(纯字符界面的编辑器) 全屏文本编辑,nano 模式化的编辑器
李玺
2021/11/22
4K0
文本编辑器及文本处理 文本编辑器介绍 常见的Linux文本编辑器有: emacs nano gedit kedit vi vimLinux文本编辑器-emacs emacs是一款功能强大的
emacs是一款功能强大的编辑器,与其说是一款编辑器,它更像一个操作系统。emacs带有内置的网络浏览器、IRC客户端、计算器,甚至是俄罗斯方块。当然,emacs需要在图形化界面的Linux中使用。
青灯古酒
2023/10/16
9730
图形编辑器开发:实现图形的复制粘贴
如果只支持粘贴到当前编辑器下,方案很简单:只需要监听 Ctrl + C 键盘事件深拷贝一份选中图形对象,然后再监听 Ctrl + V 事件,将拷贝出来的对象添加到图形树的末尾。
前端西瓜哥
2023/08/18
4060
图形编辑器开发:实现图形的复制粘贴
vim复制粘贴_vim怎么复制粘贴到其他程序
Vim 作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情。每当学会了vim的一个新功能,就会很大地提高工作效率。有人使用vim几 十年,还没有完全掌握vim的功能,这也说明了vim的强大。而这样何尝不是一件好事呢,只要有的学习,就有的提高。
全栈程序员站长
2022/10/05
2.6K0
IDEA + Vim,竟可以这么牛逼!!
本教程并不是单纯的vim操作介绍,更多的是与Intellj Idea进行配合。需要同时具备Intellj Idea和vim使用基础的同学学习。
终码一生
2022/04/15
3.1K0
IDEA +  Vim,竟可以这么牛逼!!
Linux中的vim编辑器常用操作
vim是从vi发展成的文本编辑器,相比于功能比较齐全的vi而言,vim编辑器更加方便。使用vim编辑器打开文件后,会自动进入命令模式,用户可以通过点击键盘上的字母i切换至输入模式。键盘上的Esc则可以让用户从输入模式切换回命令模式。
yhni
2022/11/17
9130
【Linux】vim的复制粘贴
3.剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
全栈程序员站长
2022/10/01
8.8K0
Linux进阶-Day3
注意Windows系统文件格式与Linux系统不一样,将Windows的文件上传后需要转换格式,才能使用Linux命令操作
用户11008504
2024/06/12
1620
复制的代码左侧有一竖排行号的极简去除方法
输入输入^[0-9]+[.] 或者输入^[0-9]0-9]0-9]   /    ^[0-9][0-9]     /   ^ [0-9]    /    ^  [0-9]
玖柒的小窝
2021/09/15
1.1K0
你应该学习正则表达式
Regular Expressions (Regex):正则表达式,软件工程中最为强大,且广泛适用,令人信服的技术之一。从验证电子邮件地址到执行复杂的代码重构器,正则表达式的用途非常广泛,是任何软件工程师工具箱中必不可少的条目。
哲洛不闹
2018/09/14
5.7K0
你应该学习正则表达式
vim复制粘贴_linux粘贴复制快捷键
2.复制的命令是y,即yank(提起) ,常用的命令如下:     y      在使用v模式选定了某一块的时候,复制选定块到缓冲区用;     yy    复制整行(nyy或者yny ,复制n行,n为数字);     y^   复制当前到行头的内容;     y$    复制当前到行尾的内容;     yw   复制一个word (nyw或者ynw,复制n个word,n为数字);     yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)  3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.      d      剪切选定块到缓冲区;     dd    剪切整行     d^    剪切至行首     d$     剪切至行尾     dw    剪切一个word     dG     剪切至档尾  4. 粘贴的命令式p,即put(放下)     p      小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面     P      大写P代表贴至游标前(上)     整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
全栈程序员站长
2022/11/09
4.7K0
【Python】已解决:SyntaxError: invalid character in identifier
在Python编程中,SyntaxError: invalid character in identifier是一个常见的编译时错误,通常发生在代码中包含非法字符时。这个错误表明,在解析代码时,Python解释器遇到了一个它无法识别为有效标识符字符的符号。这可能是由于打字错误、复制粘贴时引入了不可见字符,或者是从其他编码格式的文档中复制代码时引入了不兼容的字符。
屿小夏
2025/05/23
1020
马克!程序员必须收藏的 10 类工具&库,助你提高效率变大神
每一个行业都有它自己的一些工具。软件行业也不例外。一个好的程序员比其他人更加熟悉那些工具,也能比一般的程序员更善于使用那些工具。但是,有一些工具你希望每一个软件开发人员都知道。下面清单列出了这样的一些工具。
AI研习社
2018/12/07
6940
马克!程序员必须收藏的 10 类工具&库,助你提高效率变大神
linux基础命令介绍四:文本编辑 vim
其中file可以是一个新文件,也可以是原有文件。这样的命令执行后将打开编辑器,显示文件file的内容。如图所示:
用户5030870
2019/04/11
1.3K0
linux基础命令介绍四:文本编辑 vim
推荐阅读
相关推荐
玩转服务器-还有谁不知道微信的这个坑?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验