Как получить команду Unix, которую я запустил, используя скрипт Perl? - PullRequest
1 голос
/ 08 июля 2011

Поскольку я все еще новичок в Unix и Perl, я нахожу простой и прямой способ получить команду Unix, которую я выполнил с помощью сценария Perl.

Что я знаю, так это то, что «history» может отслеживать команды, которые я выполнил, но в Perl он не работает с использованием обратных тиков history для его запуска.

Я попытался поместить «history> filename» в текстовый редактор vi во временный файл, использовать команду «source», и это работает, но команда «source» также не работает в сценарии Perl с использованием обратных тиков.

Может кто-нибудь рассказать мне о моих проблемах? направить меня на правильный метод решения моих проблем? T.T

Спасибо.

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

Вы не можете.Оболочки (ну, в любом случае, bash и tcsh, ваша оболочка может, но, вероятно, не меняется) сохраняют историю команд только в интерактивном режиме.Команды, запускаемые в подоболочке сценарием perl, не будут добавлены в файл истории.

0 голосов
/ 19 июля 2011

Если у вас есть доступ к сценарию perl (то есть вы можете изменить его), вы можете просто записать каждую команду, запущенную в сценарии perl, в выбранный текстовый файл:

sub run_program 
{
    my $program = shift;
    open PROGS, ">>my-commands.txt", or die $!;
    print PROGS $program."\n";
    `$program`;
    close(PROGS);
}

, а затем просто запустить`run_program ($ command) каждый раз, когда вы хотите выполнить команду в скрипте.

0 голосов
/ 08 июля 2011

Получит историю команд, которые пользователь выполнил в интерактивном режиме:

$data_file = "~/.bash_history";
open(DAT, $data_file) || die("Could not open file!");
@fileData = <DAT>;
close(DAT);
foreach $command (@fileData) {
    # Do things here.
}

Как упомянул Wobble, однако, этот файл истории не будет включать команды, запускаемые из скрипта Perl - вам нужно будет, чтобы скрипт добавлял команду к файлу при запуске, создавая свой собственный файл истории , добавьте его к ~/.bash_history, что позволит использовать файл истории с интерактивными оболочками).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...