V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jmyz0455
V2EX  ›  Linux

粘贴命令并回车,会提示找不到命令,诡异的是手动输入命令就没问题。

  •  
  •   jmyz0455 · 2020-05-05 10:03:44 +08:00 · 3105 次点击
    这是一个创建于 1449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 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 命令上,其他的我没遇到过。

    5 条回复    2020-05-05 15:28:33 +08:00
    burringcat
        1
    burringcat  
       2020-05-05 10:10:36 +08:00 via Android
    你这明显是三个命令,sudo,fail2ban-client 和 ping,上面两次被解析成一个命令了。至于为什么,我也不知道。( shrugs )
    lewinlan
        2
    lewinlan  
       2020-05-05 10:31:39 +08:00 via Android
    空格是标准的么。粘到记事本里再粘 bash 试试
    infun
        3
    infun  
       2020-05-05 10:34:26 +08:00 via Android
    大概率非标准空格导致的
    vk42
        4
    vk42  
       2020-05-05 10:48:05 +08:00   ❤️ 1
    应该是 sudo 前面有个非标准空格或其它非可见字符被你一起 copy 了。试试用 echo "你拷贝的命令" | hexdump -C 看看
    jmyz0455
        5
    jmyz0455  
    OP
       2020-05-05 15:28:33 +08:00
    @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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5432 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:53 · PVG 15:53 · LAX 00:53 · JFK 03:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.