前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
洛谷CF1744A题解
这道题目就是说每个测试都有一个数组和一个同样长的字符串,每次可以把数组中的一个数批量换成一个小写英文字母,问给定的组合是否合法?
嘉嘉123
2022/12/14
2510
Codeforces 1114E(交互题)
管理员有个乱序数列(举例:{14, 24, 9, 19}),排序以后是个等差数列({9, 14, 19, 24}),现在他只告诉你有n个数(样例n = 4)却不给你数列,让你求出最小的那个数(9)和公差d(5)。
ACM算法日常
2019/03/04
1.2K0
Codeforces Round #549(div1)简析
正解貌似有分四种情况什么的,我做时是发现各个起点其实都等价的,所以随便选一个起点,再暴举终点以暴举答案,更新即可。
ACM算法日常
2019/04/25
4190
1466: [蓝桥杯2019初赛]等差数列
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?
可爱见见
2020/02/26
8110
2019 第十届蓝桥杯C/C++ 省赛B组题解
又是一年一度的蓝桥杯,这次也应该是我大学最后一次学科竞赛了,今年的省赛题型和往届有些不同,代码填空没有了,只有结果填空和编程大题,不过坑还是一样的多,稍不注意就出错了。这里记录一下自己的做题思路,因为没有现场判题,所以我也不能确定我的答案一定是对的,小伙伴们看看一些题目的思路就好了。话不多说,看题。
指点
2019/03/29
9.2K2
2019 第十届蓝桥杯C/C++ 省赛B组题解
建模-判断一列数是不是等差数列
该文讲述了如何判断一个数列是否为等差数列,并给出了相应的算法实现。主要包括计算最大值、最小值、个数和公差,然后根据这些值判断数列是否满足等差数列的条件。
chaibubble
2018/01/02
1.1K0
动规习题-间隔选数求最大和
现有一个含有n个正整数的数列,从中选择任意个数,但选了第i个数,就不能选第i-1和第i+1的数,求选择的数的最大和。 输入第一行为一个n,表示数的个数,第二行为n个数表示数列 输出选数最大和。 样例输入: 5 4 1 1 9 1 样例输出: 13
六月丶
2022/12/26
1990
动规习题-间隔选数求最大和
河南工程学院2022级新生周赛(三)题解
A. 6男 ---- 原题链接 题目大意: 给定一个字符串 S,求最长的连续的 6 的字串的长度。 S 可能含有空格。 ---- 思想: 签到题。 读入时注意空格。 ---- 代码: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> #include <sstream> #include <vector> #include <queue> #include <stac
浪漫主义狗
2022/10/09
3010
洛谷-----P5534 【XR-3】等差数列
显然这里是对一叉树的遍历,递归过程中我们需要求出当前所要累加上去的当前项的值,当前项的值可以通过递推公式求出来,即an=a1+(n-1)*d
大忽悠爱学习
2021/11/15
3190
树状数组-从入门到拓展(转载非原创)
转载来源:https://www.cnblogs.com/AKing-/p/15311440.html
xlj
2021/09/20
4460
AtCoder Beginner Contest 161 A~~F
思路:根据性质,无非是差为0,-1,1的这样的数,但不一定每个都有这样的三个数能找到,因为最后一个数为9的话,要进位,为0的话,自然-1那个实现不了。
杨鹏伟
2020/09/10
2490
武工大2022蓝桥杯预选赛题解复现
寒假期间,痛恨英语的阿祥终于妥协了,他决定重新开始学习英语。但阿祥的英语实在是太差了,他得从最基础的数字开始复习。单纯的背单词也太无聊了吧,你说是不是?所以阿祥花了半天时间用小写英文(zero~nine,add, sub)写了一个超级长的英文加减法算式(当然,垃圾的阿祥不会写大于10的英文数字,全是逐字符翻译的,每个单词都用一个空格隔开),完成后他觉得非常有成就感,hh!!!
h-t-m
2022/11/24
6780
武工大2022蓝桥杯预选赛题解复现
【洛谷 P1141】01迷宫
从每一个为000的位置,可以走到相邻的111处;从每一个为111的位置,可以走到相邻的000处。即上一个走过来的格子不能与现在的格子相同。
pai233
2022/01/12
5260
【洛谷 P1141】01迷宫
Codeforces Round 524(Div. 2)
需要邀请n个人来参加派对.需要制作邀请卡.一张邀请卡需要2红, 5绿, 8蓝. 每个笔记本有k个某种颜色.求最少需要多少个笔记本.
xiaohejun
2020/02/18
3070
【第005题】题解及代码分享:AtCoder ABC326-D
就是一个搜索,4ms的时限还怕什么,更别说n还这么小,这个题给我感觉有点像数独那道题(洛谷可搜),然后再多开数组维护是否满足题目所要求的第一个字符对应就行
小码匠
2023/11/06
2390
【第005题】题解及代码分享:AtCoder ABC326-D
【题解】Gym – 102307C Common Subsequence
题目大意就是给出两个序列,找他们的最长公共子序列,然后判断这个子序列的长度是否大于原序列的0.99。
灯珑LoGin
2022/10/31
1590
codeforces 1216E1(数学+暴力)
题意描述 思路 image.png AC代码 #include<bits/stdc++.h> #define x first #define y second #define PB push_back
dejavu1zz
2020/10/23
3090
codeforces 1216E1(数学+暴力)
KMP算法
一个文本串$S$(主串)和一个模式串$P$,求$P$在$S$中出现的位置,或者$P$在$S$中出现的次数,等等问题。
xiaohejun
2020/02/18
5390
codeforces 1213D2(贪心+思维)
题目中说答案始终存在,因为每个数都可以变成0,但很明显,让数字变成0的情况是不存在的,每个数字不停的除2肯定可以变成1,如果变成0,肯定不是最优解。我们可以使用一个 c n t cnt cnt数组来记录每个数字出现的次数,使用 t o t tot tot数组来记录变成该数需要的次数,因为数据范围最大是 2 ∗ 1 0 5 2*10^5 2∗105,每个数字除2不超过20次就可以变成1,我们遍历一遍数组即可得到答案。
dejavu1zz
2020/10/23
2650
【洛谷习题】P1255 数楼梯
根据题意会发现,到每阶楼梯的走法数量和斐波那契数列很相像,都是f[i] = f[i-2]+f[i-1],但基准情况有点不同,先总结出该题公式
六月丶
2022/12/26
4290
【洛谷习题】P1255 数楼梯
相关推荐
洛谷CF1744A题解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验