Term::Shell::Enhanced - more functionality for Term::Shell
use Term::Shell::Enhanced; my $shell = Term::Shell::Enhanced->new; $shell->print_greeting; $shell->cmdloop;
This class subclasses Term::Shell and adds some functionality.
The following features are added:
When the shell starts up, it tries to read the command history from the history file. Before quitting, it writes the command history to the history file - it does not append to it, it overwrites the file.
The default history file name is the shell name - with nonword characters replaced by unterscores -, followed by _history, as a dotfile in $ENV{HOME}. For example, if you shell's name is mysh, the default history file name will be ~/.mysh_history.
_history
$ENV{HOME}
mysh
~/.mysh_history
You can override the history file name in the DEFAULTS(), like this:
DEFAULTS()
use constant DEFAULTS => ( history_filename => ..., ... );
See the alias command below.
alias
When subclassing Term::Shell::Enhanced, you can define how you want your prompt to look like. Use DEFAULTS() to override this.
use constant DEFAULTS => ( prompt_spec => ..., ... );
You can use the following prompt variables:
h the hostname n the shell name '#' the command number (increased after each command) \\ a literal backslash
You can extend the list of available prompt variables by defining your own PROMPT_VARS() - they are cumulative over the class hierarchy.
use constant PROMPT_VARS => ( key => value, ... );
Since more elaborate prompt variables will have some interaction with the shell object, you might need a more elaborate PROMPT_VARS() definition:
PROMPT_VARS()
sub PROMPT_VARS { my $self = shift; ( key => $self->some_method, ... ); }
The prompt variables are interpolated anew for every prompt.
The default prompt string is:
': \n:\#; ',
so if your shell is called mysh, the default prompt looks somewhat like this:
: mysh:1;
The following commands are added:
You can evaluate snippets of Perl code just by putting them on a line beginning with !:
!
psh:~> ! print "$_\n" for keys %ENV
set lets you manipulate environment variables. You can view environment variables using set. To view specific variables, use set name. To set environment variables, use set foo=bar.
set
set name
set foo=bar
cd foo/bar/baz
Change the current directory to the given directory. If no directory is given, the current value of $HOME is used.
$HOME
Prints the current working directory.
alias with no arguments prints the list of aliases in the form NAME=VALUE on standard output. An alias is defined for each NAME whose VALUE is given.
NAME=VALUE
NAME
VALUE
When you enter any command, it is checked against aliases and replaced if there is an alias defined for it. Only the command name - that is, the first word of the input line - undergoes alias replacement.
Output the args.
Exits the program.
Like the help command, but limits the information to commands that contain the given word in the command name or the summary.
help
If you talk about this module in blogs, on del.icio.us or anywhere else, please use the termshellenhanced tag.
termshellenhanced
No bugs have been reported.
Please report any bugs or feature requests to bug-term-shell-enhanced@rt.cpan.org, or through the web interface at http://rt.cpan.org.
bug-term-shell-enhanced@rt.cpan.org
See perlmodinstall for information and options on installing Perl modules.
The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit <http://www.perl.com/CPAN/> to find a CPAN site near you. Or see <http://www.perl.com/CPAN/authors/id/M/MA/MARCEL/>.
Marcel Grünauer, <marcel@cpan.org>
<marcel@cpan.org>
Copyright 2007 by Marcel Grünauer
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Term::Shell::Enhanced, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Term::Shell::Enhanced
CPAN shell
perl -MCPAN -e shell install Term::Shell::Enhanced
For more information on module installation, please visit the detailed CPAN module installation guide.