vshnu 1.0211 review

by rbytes.net on

Vshnu is a visual shell for Linux/Unix finally done right

License: GPL (GNU General Public License)
File size: 69K
Developer: Steve Kinzler
0 stars award from rbytes.net

Vshnu is a visual shell for Linux/Unix finally done right. Best used as an optional color visual mode to a regular command line shell, vshnu is handy for powerful directory listing and navigation, Unix command assembly, special actions on file types, and fileset handling. Written in Perl for portability and high configurability, it also provides the advantages of a Perl interpreter as part of your Unix shell environment.

Skilled Unix users know the importance of the shell or command line interface (CLI). (Old-time Unix users didn't even have a choice about it). While having more of a learning curve than a graphical user interface (GUI), it permits powerful, creative, complex operations to be specified quickly and reliably. For anyone but the superficial user, learning a CLI is an investment that pays off rewardingly. Command line environments are still readily usable over low-bandwidth network connections and restricted displays.

However, when one is concerned about file manipulation and management (which is a very good thing to be concerned about as the basis of your interface, as most GUIs would rather lead you to forget), a CLI can be a frustratingly terse interface to the filesystem. Too many tedious ls(1) and cd(1) commands are needed to keep watch on what's there. A GUI file manager can address this problem, but then you're in mouseland and have lost the advantages of the CLI.

Enter the visual shells. Not a new idea, visual shells can operate within an entire terminal or console screen. File listings are displayed for your constant reference. Common commands and operations can typically be performed in fewer keystrokes in a visual interface. As the vi(1) visual editor evolved from the ed(1) and ex(1) command line editors, visual shells have attempted to evolve from command line shells. Some visual shells have promoted themselves as simpler menu-oriented interfaces suitable for novices, while others emphasize more expert functionality.

Nonetheless, visual shells have never really caught on, except some in certain circles such as Emacs' "dired" mode and the Midnight Commander program. I believe this is because they have been designed as largely self-contained applications with limited configurability. Using a visual shell has required a significant jump into a new base interface tool, and few are so compelling or standard to make that worthwhile.

Hence the design of vshnu, the New Visual Shell. In the Unix tradition, it works with things already there and fills a empty niche. When incorporating it into your Unix environment, you keep your command line shell, your editor, your pager, and access to all your tools, tricks and know-how.

Vshnu can operate as an optional supplemental visual mode to your command line shell. You switch between command line and visual mode easily as you wish. Your interface bandwidth and power for Unix operations is on a higher plane and life gets sweeter. In addition, being written in Perl, it ports to any Unix system without compilation, gives you the advantages of a Perl interpreter running readily at hand, and permits visual command customizability limited only by your creativity, yet doesn't require knowledge of Perl for normal usage. Vshnu is a tool that's worthwhile even if only used occasionally as an interactive, pageable, color ls(1), yet still pays back, with interest, whatever more you put into using it.

Here are some key features of "vshnu":
Extensive options for sorting and listing a directory's files
Multiple methods for navigating directories and selecting files
Directory locations may be marked for quick returns
Lists command outputs alongside files, including a builtin "ls -l"
Directory and file histories
In color terminals, uses color for more informative displays, including file coloring by type via the standard LS_COLORS environment variable
Expands and collapses chosen subdirectories
Option to display Internet (Swatch) time
Multiple methods for choosing and operating on individual or arbitrary sets of files
Key commands and file actions are 100% configurable, extensible, self-documenting and arbitrarily complex, including multiple choice options
File actions are customizable by file name/type/contents/etc, with common actions configured by default
Online help descriptions of key commands and file actions, by mode and by command
Separate per-site and per-user configurability
Adjustable file column displays
Adapts to changing screen sizes (but works best on screens 80 characters wide or more)
Current directory and environment is propogated between vshnu and the parent command line shell
Multiple interfaces for shell commands and Perl statements
Perl statements may be {{embedded}} within shell commands
A Perl "where" clause to subset the displayed files
Can use the CD_PATH environment variable as a search path for files and directories
Recognizes the following standard environment variables: DISPLAY, EDITOR, HOME, HOST, LS_COLORS, MAIL, PAGER, PATH, PERL_RL, SHELL and VISUAL

You need Perl 5.002 or greater with the Term::Screen and Term::ANSIColor modules. Term::Screen and Term::ANSIColor module files are also included here in the libperl/Term directory. If you wish to install these, just add a ".pm" extension to the filenames and copy them into a directory in your Perl's @INC or into $HOME/perl/Term, $HOME/lib/Term or $HOME/lib/perl/Term.

Term::Screen uses Term::Cap, so you'll need a termcap file containing your terminals' capabilities definitions. Most systems already have one. The termcap file may be installed as $TERMCAP, $HOME/.termcap, /etc/termcap or /usr/share/misc/termcap. Or on Debian systems, you can just run `apt-get termcap-compat`.


Vshnu may be installed either as a regular Perl module or manually in any desired locations, including your home directory.


The usual routine

perl Makefile.PL
make install clean

should properly install the "vshnu" file in your Perl scripts directory and the "vshnucfg.pl" file in your Perl library directory.


You can edit the first line of the "vshnu" script here to contain the proper path to your perl executable, then copy it into any directory in your PATH. Make sure the copy's made executable.

Then the "vshnucfg.pl" file can be copied where you wish. If it's not installed as $HOME/.vshnucfg or as vshnucfg.pl somewhere in your Perl's @INC or in $HOME/perl, $HOME/lib or $HOME/lib/perl, then you'll have to set the VSHNUCFG environment variable to its location, or edit the installed "vshnu" script near the top to set $default_vshnucfg.

Shell integration

Optionally, your regular shell environment can be enhanced to interact with vshnu as a sort of supplemental visual mode, communicating any environment changes to vshnu and directory changes between the two shells.

vshnu 1.0211 search tags