Поддельное демострационное программное обеспечение для командной строки
Я ищу программное обеспечение, которое было бы полезно для демонстрации.
Мне регулярно приходится показывать эффекты сценариев на уроках, когда я говорю об их эффектах, и регулярно я испытываю проблемы с пальцами, и мне приходится переписывать различные команды - тратить время на занятия и общую энергию.
Я хотел бы иметь возможность записать последовательность команд заранее, а затем воспроизвести их со скоростью, которую я выберу.
Так что у меня может быть файл, который содержит команды:
echo "hello world!"
ls ls -l
ls -l | sort
Я хотел бы иметь возможность воспроизвести эти команды, набрав похожие.
Поэтому у меня будет мигающая командная строка, и если я наберу 'echo "hxxx', командная строка будет читать
home $ echo "ад
и если бы я набрал любые другие буквы, терминал заполнялся бы оставшейся частью команды, пока я не нажму клавишу ввода, когда она выполнит команду. Дело в том, что даже если я напортачу команду при ее наборе, команда, которую я подготовил заранее, будет выполнена.
Мой вопрос - существует ли подобное программное обеспечение для демонстрации? или даже, это легко написать сценарий...?
РЕДАКТИРОВАТЬ - две быстрые вещи, в первую очередь я на OSX - но было бы неплохо получить общее решение для других людей, которые приходят сюда из Google. и во-вторых, многие комментарии / ответы концентрируются на том, что позволяет быстро и легко вводить длинные команды с помощью горячих клавиш и тому подобного. На самом деле, я бы хотел, чтобы это выглядело так, как будто я печатаю вживую - вот почему я добавил немного о сопоставлении клавиш "один к одному", но я не думаю, что объяснил это так хорошо, как мог бы...
3 ответа
Вы можете использовать Perl и модуль IO::Prompter. Вот скрипт, который должен помочь
#!/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;
}
Этот скрипт выдает подсказку (настраивается, просто измените аргумент на prompt
) и каждое нажатие клавиши вставляет символ из командного блока выше. Backspace также работает, и вы также можете нажать Enter, и IO::Prompter автоматически завершит строку и отправит ее в bash с разумной скоростью записи. После запуска команд из командного блока скрипт продолжит принимать любые входные данные и отправит их в bash.
У вас должен быть уже установлен Perl. Чтобы установить IO::Prompter, запустите cpan IO::Prompter
с вашего любимого терминала эмулятора.
Я написал shellscript-runner.zsh, чтобы делать то, что вы хотите. Загрузите его, запустите zsh, затем, находясь в zsh, загрузите файл. Теперь shellscript-runner вооружен и готов к запуску встроенной демонстрации. Прочтите демонстрационный текст в конце файла и попробуйте. Я надеюсь, вы найдете его мощным и простым в использовании.
Ваше желание иметь возможность контролировать появление каждого персонажа в настоящее время не реализовано, но может быть добавлено.
Zsh (на случай, если вы никогда не пробовали) имеет много функций, отсутствующих в bash. Мощные возможности редактирования строк в Zsh сделали возможным использование shellscript-runner. Это было бы невозможно реализовать в bash.
А как насчет макро-рекордера или IronAHK?
С помощью IronAHK ( порт AutoHotkey для Linux/Mac) вы можете назначать клавиши или строки клавишам, чтобы быстро и легко вводить целые порции данных и команд. Например, вы можете назначить следующие команды либо как необработанные строки, либо как вызов системных команд.
echo "hello world!" ls ls -l ls -l | sort
Затем вы можете привязать его к клавише, такой как A, или ⌥+1, или ⌘+Shift+F1, или как вам угодно. Затем вы можете нажимать горячие клавиши по порядку во время выполнения (это делается проще с помощью цифровых горячих клавиш).
Организовав команды по группам, вы можете получить как можно более детальную информацию, так что вы можете разбить ее в любой момент, который, по вашему мнению, может потребоваться или вам нужно приостановить демонстрацию, чтобы сделать что-то еще, например, файлы шоу и т. Д.
С помощью макропрограммы вы можете записывать нажатия клавиш, а затем воспроизводить их, как правило, с возможностью регулировки скорости.