空格导致的复制命令在终端报 command not found

情况描述:

打算在mac终端执行一段命令,

之前这个命令都可以顺利执行,这次从自己的飞书笔记上复制下来后再执行,结果报错 command not found

(ps:命令的含义是禁止Chrome浏览器左滑回到上次页面,不过这不重要)

命令执行失败了,报错 command not found

 看起来一模一样的命令,之前却成功执行了:

那肯定是肉眼不好区分的地方产生了差异。所以将两段看起来一模一样的命令放到纯文本文档中,使用  od 命令 查看文件内容的 ASCII 码,看看有什么不同。

文件内容:

将文件用 ASCII 码形式打开(od -c):

不难发现,是前后两段空格 的 ASCII 码内容不一样。可以成功运行命令的空格是『 』,报错命令的空格是『 **』。它看起来像一个特殊符号的空格,在ASCII码表上并找不到这玩意儿,而且翻译成『 **』也极有可能和操作系统自身的规定相关。

所以让我们删掉其他内容,仅保留这个奇怪的空格,再用16进制打开,看看能不能通过16进制码反查找到它的真面目: 

用16进制打开文件(od -h):

苹果这玩意儿因为不知名的原因会把一组内的十六进制码反着放,也就说这个空格的16进制码是 c2a0

万能的 CSDN 搜一搜 c2a0 是什么的十六进制码,肯定有前人踩过坑,得到如下结论:

c2a0 是 UTF-8 编码中的 半角非中断空格 (编码表见附录二)

这是一个叫做 Non-breaking space 的东西,即咱们前端熟悉的的 ;&nbsp

到这里终于破案了,这个空格就是&nbsp。所以是飞书文档不知道什么奇奇怪怪的原因,把我所有空格替换成了 &nbsp,导致下次复制命令代码执行的时候发生车祸。

附一:od 命令的语法:

Linux指令:od

示例用法:od -c filepath

od命令

用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。

语法:od [选项] 文件路径…

命令中各选项的含义:

- A 指定地址基数,包括:

d 十进制

o 八进制(系统默认值)

x 十六进制

n 不打印位移值

- t 指定数据的显示格式,主要的参数有:

c ASCII字符或反斜杠序列

d 有符号十进制数

f 浮点数

o 八进制(系统默认值为02)

u 无符号十进制数

x 十六进制数

除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。

说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Dump)

附二:UTF-8 十六进制转码表

https://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值