Поддельное демострационное программное обеспечение для командной строки

1058
Joe

Я ищу программное обеспечение, которое было бы полезно для демонстрации.

Мне регулярно приходится показывать эффекты сценариев на уроках, когда я говорю об их эффектах, а также регулярно у меня возникают проблемы с пальцами, и мне приходится переписывать различные команды - тратить время на занятия и общую энергию.

Я бы хотел заранее записать последовательность команд, а затем воспроизвести их со скоростью, которую я выберу.

Так что у меня может быть файл, который содержит команды:

echo "hello world!"  ls ls -l  ls -l | sort 

Я хотел бы иметь возможность воспроизвести эти команды, набрав похожие .

Поэтому у меня будет мигающая командная строка, и если я наберу 'echo "hxxx', командная строка будет читать

home $ echo "ад

и если бы я набрал любые другие буквы, терминал заполнялся бы оставшейся частью команды, пока я не нажму клавишу ввода, когда она выполнит команду. Дело в том, что даже если я напортачу команду при ее наборе, команда, которую я подготовил заранее, будет выполнена.

Мой вопрос - существует ли подобное программное обеспечение для демонстрации? или даже, это легко написать сценарий ...?

РЕДАКТИРОВАТЬ - две быстрые вещи, прежде всего, я нахожусь на OSX - но было бы неплохо получить общее решение для других людей, которые приходят сюда из Google. и во-вторых, многие комментарии / ответы концентрируются на том, что позволяет быстро и легко вводить длинные команды с помощью горячих клавиш и тому подобного. На самом деле, мне бы хотелось, чтобы это выглядело так, как будто я печатаю вживую - вот почему я добавил немного о сопоставлении клавиш «один к одному», но я не думаю, что объяснил это так хорошо, как мог бы. ..

3
На какой ОС вы работаете? slhck 11 лет назад 0
Вы пробовали псевдонимы? Это не выглядело бы так хорошо, но вы могли бы просто напечатать a1, a2, a3, a4, a5 ... bb010g 11 лет назад 1
Почему бы просто не использовать программное обеспечение для создания скринкастов, чтобы делать записи медленно, осторожно в своем офисе, а затем воспроизводить видео в классе с желаемой скоростью? Например, VLC позволяет регулировать скорость воспроизведения с шагом всего в 10%. Synetech 11 лет назад 0
@slhck - OSX - добавлю, хотя меня интересуют общие решения Joe 11 лет назад 0
@ bb010g, это будет мой резервный план, я думаю ... :) Joe 11 лет назад 0
@Synetech - отчасти потому, что тогда для класса, вероятно, будет очевидно, что я просто показываю им видео - но более функционально, возможно, я захочу выйти из приложения после определенного этапа и показать некоторые другие аспекты создаваемых файлов. Созданный - возможно, в ответ на вопрос - с видео вы потеряете любую возможность взаимодействия. :( Joe 11 лет назад 0
Я снова посмотрел на вопрос, и если вы готовы каждый раз печатать все целиком, у ZSH есть как минимум исправления и табуляция команд. bb010g 11 лет назад 0
«отчасти потому, что тогда для класса будет очевидно, что я просто показываю им видео». Так? `Я мог бы хотеть… возможность взаимодействия. Достаточно справедливо. Кроме того, с видео вы теряете возможность неожиданных событий и оживления того, что в противном случае могло бы быть скучным занятием. `; -D` Synetech 11 лет назад 0
есть одна программа, упомянутая однажды в программе youtube, которая называется hack5, хотя я не вспоминаю об этом случайно. barlop 11 лет назад 0
Держать открытым из-за очень узкого характера вопроса. См. Http://meta.superuser.com/questions/2324/in-defense-of-obscure-niche-hardware-recommendation-questions bwDraco 10 лет назад 0

3 ответа на вопрос

1
user49740

You can use Perl and the IO::Prompter module. Here's a script that should help

#!/usr/bin/perl -w use IO::Prompter<<EOF; echo "Hello world!" ls ls -l ls -l | sort EOF use strict; use feature 'say'; use IPC::Open2; use Time::HiRes 'sleep'; open2('>&STDOUT',\*SHELL,'bash'); while(my $cmd=prompt '$'){ say SHELL $cmd; sleep 0.05; } 

This script gives you a prompt (configurable, just edit the argument to prompt) and each keystroke inserts a character from the command block above. Backspace works too, and you can also press enter and IO::Prompter will auto-complete the line and send it to bash at a reasonable writing speed. After running the commands from the command block, the script will continue to accept any input and will send it to bash.

You should have Perl already installed. To install IO::Prompter, run cpan IO::Prompter from your favourite terminal emulator.

Отлично - надеюсь, я вернусь с версией, которая делает бизнес - но вы, конечно, дали мне инструменты ... Joe 11 лет назад 0
0
Synetech

What about a macro-recorder or IronAHK?

  • With IronAHK (the Linux/Mac port of AutoHotkey), you could assign keystrokes or strings to keys to make it fast and easy to enter whole chunks of data and commands. For example, you could assign the following commands as either raw strings, or as a call to system commands.

    echo "hello world!" ls ls -l ls -l | sort 

    Then you can bind it to a key like A, or +1, or +Shift+F1 or whatever you like. Then you can press the hotkeys in order at runtime (this is made easier by using numeric hotkeys).

    By organizing the commands down into groups, you can get as fine-grained as you like so that you can break in at any point you think you may want or need to pause the demonstration to do something else like show files, etc.

  • With a macro-program, you can record your keystrokes, then play them back, usually with the ability to adjust the speed-control.

0
daveyost

I wrote shellscript-runner.zsh to do what you want. Download it, run zsh, then while in zsh, source the file. Now shellscript-runner is armed and ready for you to run the built-in demo. Read your way through the demo text at the end of the file, and try it out. I hope you'll find it every powerful and easy to use.

Your desire to be able to control when each character appears is not currently implemented but could be added.

Zsh (in case you've never tried it) has many features not present in bash. Zsh's powerful line-editing features, made shellscript-runner possible. It would be impossible to implement in bash.