在 bash 里,我安装了 fail2ban,想查看是否启动成功,我粘贴一句网上看到的命令 sudo fail2ban-client ping
,然后给我返回的是 bash: sudo fail2ban-client ping: No such file or directory
,在 zsh 里输入同样的内容,返回 zsh: command not found: sudo fail2ban-client ping
。
如果输入了错的命令,zsh 会把输入的内容变为红色,然后我尝试着手动输入 sudo fail2ban-client ping
,同样的命令,居然变绿了?回车一看,返回 Server replied: pong
。
很奇怪喔,为什么粘贴不行,手动输入就可以的?而且手动输入成功了之后,粘贴命令还是不行,假如我粘贴了两次命令,都是不行了之后,按上箭头,第一句命令还是红色的,回车也是不行。但是按两次上箭头,命令居然变绿了,按回车是正常返回???
真把我搞蒙了,有没有人能解释下这个有趣的现象?而且这个情况只出现在 sudo fail2ban-client ping
命令上,其他的我没遇到过。
1
burringcat 2020-05-05 10:10:36 +08:00 via Android
你这明显是三个命令,sudo,fail2ban-client 和 ping,上面两次被解析成一个命令了。至于为什么,我也不知道。( shrugs )
|
2
lewinlan 2020-05-05 10:31:39 +08:00 via Android
空格是标准的么。粘到记事本里再粘 bash 试试
|
3
infun 2020-05-05 10:34:26 +08:00 via Android
大概率非标准空格导致的
|
4
vk42 2020-05-05 10:48:05 +08:00 1
应该是 sudo 前面有个非标准空格或其它非可见字符被你一起 copy 了。试试用 echo "你拷贝的命令" | hexdump -C 看看
|
5
jmyz0455 OP @burringcat 破案了!
@lewinlan @infun 粘贴到 Sublime Text 3 上,果然不是标准空格,把空格重新改一下就可以了,谢谢各位。 @vk42 输出: ❯ echo 'sudo fail2ban-client ping' | hexdump -C 00000000 73 75 64 6f c2 a0 66 61 69 6c 32 62 61 6e 2d 63 |sudo..fail2ban-c| 00000010 6c 69 65 6e 74 c2 a0 70 69 6e 67 0a |lient..ping.| 0000001c |