Существует ли такая программа для терминала, как плагин iMacros для Firefox, которая может записывать то, что я сделал, а затем автоматически выполнять работу, которую я сделал? Я надеюсь, что есть такая программа, которая поможет мне выполнить повторную работу в терминале, так что, какие советы?

С уважением

4 ответа4

1

bash содержит все утилиты, которые вам действительно нужны. Если вы хотите выполнить несколько команд с помощью одной команды, вы можете написать свои собственные сценарии оболочки или написать функции.

Функции просты

Несколько дней назад я определил функцию cs чтобы изменить каталог и вывести его через ls .

function cs() { cd $1 && ls ; }

$1 является первым аргументом. Если вы хотите использовать список всех аргументов, используйте $@ .

Это может быть вызвано как

$ cs my_directory

Это здорово, чтобы быстро сгруппировать несколько команд в текущем сеансе. Вы можете поместить функцию в конец вашего ~/.bashrc чтобы загружать ее при каждом новом экземпляре bash .

Скрипты довольно мощные

Сценарии выполняются в своем собственном процессе. Это означает, что любые переменные, которые вы назначаете, являются локальными для этого процесса. Чтобы написать сценарий, поместите шебанг вверху. Он состоит из символов #! затем путь к интерпретатору, который выполнит ваш файл. Шебангс может включать

#!sh
#!/bin/bash
#!/usr/bin/perl

В сценарии оболочки вы можете сделать что-то вроде

#!/bin/bash
VARIABLE=42
echo "The variable is $VARIABLE"  # echo appends a newline
echo "I'm now going to Google"
firefox http://www.google.com

Не забудьте сделать скрипт исполняемым через

$ chmod +x my_script

Затем он может быть выполнен как

$ ./my_script         # from the current directory
$ ~/path/to/my_script # absolute path, ~ is your User directory.

Синтаксис bash содержит условные выражения, циклы, переключатели и почти все. Если вам не нравится низкая производительность или вам нужен более приятный синтаксис, вы можете легко научить себя нескольким строкам Perl или Python.

Видя, что вы напечатали

Эти решения зависят от знания того, что вы хотите сделать, прежде чем сделать это. Если это не так, вы можете посмотреть файл истории (по умолчанию ~/.bash_history ) или использовать команду history .

$ history 5

перечисляет 5 последних команд с порядковым номером. В моем случае это дает

 1892  function foo() { cd $1 ; ls ; }
 1893  foo ..
 1894  history
 1895  history 15
 1896  history 5

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

Быстрое домашнее решение

Вот решение для записи макросов. Он использует две пользовательские функции и встроенный Perl-скрипт для интересной обработки.

function create-marker() { echo "Starting the recording" ; }
function process-marker() { history | perl -ne's/^\s*\d*\s*//; chomp; push @commands, $_; }{ pop @commands; push @macro, pop @commands until $commands[-1] eq "create-marker" or !@commands; print "$_\n" for reverse @macro;' ; }

Эта сессия

$ create-marker
Starting the recording
$ cd ~
$ ls
# omitted
$ firefox http://www.google.com
$ process-marker

Создает следующий вывод:

cd ~
ls
firefox http://www.google.com

Затем вы можете легко скопировать и вставить это в новый скрипт.


Примечание: у меня нет Mac, и я проверил это на Ubuntu. Пути могут отличаться, но концепции разумны.

1

Google находит это. Это то, что вы после?

Если бы я автоматизировал взаимодействие между людьми и TTY, я бы предпочел сделать это с помощью Expect.

0

Это вряд ли вас заинтересует, если вы не пользователь, но в emacs есть режим оболочки (M-x shell), который, конечно, поддерживает обычные команды редактирования emacs, включая клавиатурные макросы (C-x ( для начала записи, C-x ) для остановки, затем C-x e выполнить). Если все, что вы делаете, это повторяете набор текста, это может быть полезно.

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

0

Я знаю, что вы спрашиваете об этом для терминала, но так как я не слышал о такой программе, альтернативой будет терминал ZOC. Он коммерческий, поэтому, возможно, он не в твоем переулке, но это самая близкая вещь, о которой я могу подумать, учитывая описание твоей проблемы. Он поддерживает использование локальной оболочки в Mac OS (по сути, замену терминала) и имеет функцию записи сценариев (Script-menu -> Record Scipt). Вы также можете отобразить эти сценарии (или более короткие тексты) на кнопки и комбинации клавиш.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .