交互式Bash课程:如何捕获用户输入并对其做出反应

时间:2014-04-02 12:43:20

标签: python linux bash shell

我想为我的女朋友(以及其他人)写一点'游戏',这样她就可以通过一个有趣的故事情节来学习基本的bash和linux命令。

由于我不希望她能够在没有我手动检查她是否正确的情况下进行探索,我需要一种方法来捕捉她与命令行和输出的交互。

现在我看到两种方法,我知道它是否有效:

  1. 使用python脚本作为解释器/ login-shell,将命令传递给os.system或subprocess,并在该脚本中实现“游戏逻辑”。问题:我不能教她的东西,比如ctrl-z,ctrl-d等。

  2. 使用实际的bash作为解释器/登录shell,并使'游戏逻辑'的脚本在每个命令之前/之后运行(作为一种挂钩)。如果没有深入挖掘bash代码本身就可能吗?

1 个答案:

答案 0 :(得分:1)

首先关闭:

import signal, time
def signal_handler(signal, frame):
        print('You pressed Ctrl+<KEY>, ignoring!')
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTSTP, signal_handler)
while 1:
    time.sleep(1)

你的一个问题已经开始了。
其次,我不知道你希望如何抓住&#34;她的互动......但我还是假设你必须在场,所以为什么不让她拥有两个终端,让她在游戏时尽情享受?#34;游戏&#34;正在一个单独的控制台中运行,您只需输入y / n,具体取决于她是否执行了正确的任务?

或者,如果你真的想变得怪异,为什么不建立一个她不能做任何伤害的虚拟环境让她做任何事情并在失败时重置它。给她5套指示去做和看如果她可以谷歌吗?她需要学习如何获取信息而不是学习#34;如果我按照他说的去做,我会得到cookie&#34;。

有更好的游戏&#34;实现学习曲线的场景然后让你跳进并纠正所有内容,给她关键词搜索并教她只是尝试在谷歌搜索结果中看到的一切 ..它不能去毕竟错了......它只是一台电脑......

一个实际例子:

  1. 创建一个qemu的虚拟机(指南比它应该更长,你只需要一小部分就可以开始)
  2. 在其上安装基础Linux系统
  3. 拍摄快照

  4. 创建一个恢复到上一个​​快照并引导操作系统的脚本

  5. 给她(或他)一套说明,例如&#34; 1:安装Python2.7,(关键字:archlinux python)&#34;
  6. 我为几个网络实验室做过这样的事情,人们可能会把他们想要的东西搞得一团糟......没关系,因为下次他们重启(通过脚本)机器就像新的一样好。只有当你(或他)在你的教程中处于一个好位置时,你才能调用一个新的快照。