Command-line history logging utilities
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

50 lines
950 B

#!/usr/bin/env perl
=pod
=head1 NAME
commandlog-add - log command line history and context to an sqlite db
=head1 SYNOPSIS
# in zsh
function preexec {
commandlog add "$@"
}
=head1 AUTHOR
Brennen Bearnes <bbearnes@gmail.com>
=cut
use warnings;
use strict;
use 5.10.0;
use App::CommandLog;
use Cwd;
use Sys::Hostname;
# Bail if logging is paused - can toggle this with commandlog-pause and
# commandlog-resume:
if (-e "$ENV{HOME}/commandlog-paused") {
exit;
}
my $command = $ARGV[0];
my $expanded_command = $ARGV[2];
# Skip things prefixed with a space:
if ($command =~ m/^[ ]+/) {
exit;
}
my $dbh = App::CommandLog::get_dbh();
my $sth = $dbh->prepare(q{
INSERT INTO commands (command, expanded_command, path, hostname, username, shell, terminal, datetime)
VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'))
});
$sth->execute($command, $expanded_command, cwd(), hostname(), $ENV{USER}, $ENV{SHELL}, $ENV{TERM});