发布时间:2025-05-24
浏览次数:0
在Jimmy老师近期举办的一次线上直播活动中,我们向观众们展示了一段代码的执行过程。令人惊讶的是,当我们将代码从微信平台复制并粘贴到终端后sublime text replace,却遇到了无法执行的问题。(具体可参考视频演示,大约在第8分钟的位置。)
这个小插曲不仅激起了我的探求欲,还点燃了我对探究其背后机理的渴望。在本文中,我将向大家展示我对此问题进行研究的步骤、揭示的成因,以及应对策略。这段经历警示我们,在日常工作之中,那些看似平常的操作或许潜藏着未知的缺陷,值得我们深入挖掘与领会。
情景再现
起因是需要用到下载一个数据集,代码直接从微信检索了相关代码
image.png
复制了代码后,出现了运行错误,经过仔细检查代码,并未发现任何问题,这显得相当奇怪。
既然报错信息表明命令并未出现,而软件及代码本身并未显现出任何异常,那么很可能问题出在shell字符的识别上。这可能是由于微信复制粘贴时引入了异常字符。思路已经明确,接下来的步骤便是验证这一猜想。
验证猜想在shell查看
在shell环境下检查看看我们复制粘贴了什么鬼东西
观察可以发现,文本中存在一些异常符号。这些符号之所以会在从微信或其他应用复制的内容中出现,是因为原始文本中包含了特定的控制字符或是特殊的空格字符(例如非断空格U+00A0,在shell环境中显示为M-BM-,通常难以察觉),而这些在复制过程中并未得到妥善的处理或转换。
在文本编辑器查看
text 查看
我们同样可以发现存在某些未被直接展示的字符,并且这些字符在shell环境中呈现的效果与实际所见并不一致。
问题产生的原因在于,非断空格sublime text replace,即非空格字符的ASCII编码,常被用于网络页面和文本编辑中,以避免文本自动换行。该字符在十六进制中的表现形式为0xA0,并归属于扩展ASCII码的范畴。在复制微信等应用中的文本时,有时会不经意间将空白字符一同复制,这些字符在微信中用于文本格式化,但在代码编辑器或命令行界面中往往不可见。因此,尽管命令表面上看是正确的,实际操作时却可能无法执行。
解决办法
有多种途径可以解决这个问题,比如在shell中进行特殊字符的替换,或者在文本编辑器里运用查找与替换功能,把所有的\xa0字符替换成标准空格(其ASCII码为0x20),亦或是直接予以删除。值得注意的是,不同的编辑器和集成开发环境(IDE)在显示和处理这些不可打印字符方面各有其独特的方法。
shell替换一下
执行命令echo输出"kingfisher",并指定参数-p为PRJNA289185,同时使用-m选项并传入ena-ascp和ena-ftp,执行prefetch操作,并通过aws-http进行,然后通过sed命令替换字符串'M-BM-'为空字符串。
image.png文本编辑器替换
启动搜索界面:在文本编辑区域,轻按键盘上的Ctrl键加F键(在苹果电脑上则是按下Cmd键加F键)以激活搜索功能窗口。
启动正则表达式搜索功能:请轻触查找界面下方的特定图标,通过此操作,您将能够运用正则表达式进行字符搜索。
请输入您需要搜索的特定正则表达式,在搜索框内填写 \xa0,该符号表示非断空格。
替换所有 All
Text
替换后
碎碎念:说到底,最直接有效的做法是尽量避免在微信上直接复制并粘贴代码。这样可以从源头上彻底消除这种错误的发生。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码