【问题标题】:Erroneously using STDIN when pasting a script into the Terminal.app将脚本粘贴到 Terminal.app 时错误地使用 STDIN
【发布时间】:2014-11-29 05:46:37
【问题描述】:

我有以下脚本片段,我经常使用它来半自动化我的一个工作流程。 我打开一个 bash 终端并启动 irb,然后粘贴脚本:

require 'highline/import'

# ...
user = ask("User:")
repo = ask("Repository:")
# ...
# Do advanced fancy stuff

现在我希望能够将其粘贴到终端中,但用户的第一个提示被以下行覆盖:repo = ask("Repository:")

有没有办法防止这种行为。

我知道我可以写一个脚本。但是

  1. 我发现将其粘贴到终端很方便
  2. 我想知道在这种情况下如何以某种方式超越 STDIN

【问题讨论】:

  • 你是从哪里粘贴的? ;) load 那些行不是一样方便吗?
  • @TomFenech 我从我的笔记中复制了这个。我经常使用这样的脚本 sn-ps 并且在我处理给定项目时总是有一个终端打开。所以从某个路径加载它不是我想要的......

标签: ruby macos bash irb highline


【解决方案1】:

有没有办法防止这种行为。

您可以使用命令防止粘贴文本的回显

stty -echo

-你喜不喜欢那是另外一个问题,因为这也不可避免地会阻止输入命令的回显,但是你输入后又可以看到

stty echo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多