home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 19.3 unshar: Unarchive a Shell Archive Chapter 19
Creating and Reading Archives
Next: 19.5 Using tar to Create and Unpack Archives
 

19.4 A Simple Version of unshar

This little script is a great example of how something simple in UNIX can do a lot. It skips past the mail header and comments that come before some shell archives (19.2 ) , then feeds the archive to a shell. You can use it while you're reading a message with most UNIX mail programs (1.33 ) :

& save | unshar

or give it the name of an archive file on its command line:

% unshar somefile.shar

and so on. Here's a version of the script:

#! /bin/sh
# IGNORE LINES BEFORE FIRST "#" COMMENT STARTING IN FIRST COLUMN:
sed -n '/^#/,$p' $1 | sh

The script reads from its standard input or a single file. It skips all lines until the comment (# ) that starts most shell archives; the rest of the lines are piped to the shell. It doesn't read from multiple files; that would add another couple of lines for a loop - and make the script too long! :-) In the last few years, much fancier unshar programs (19.3 ) have come out. They protect against "Trojan horses" buried in shar files and let systems without a Bourne shell (like DOS) unpack shell archives. This basic script still does a fine job though. [It also gives one more demonstration of why at least basic knowledge of sed (34.24 ) is so important to would-be power users. It's an incredibly handy utility. -TOR  ]

- JP


Previous: 19.3 unshar: Unarchive a Shell Archive UNIX Power Tools Next: 19.5 Using tar to Create and Unpack Archives
19.3 unshar: Unarchive a Shell Archive Book Index 19.5 Using tar to Create and Unpack Archives

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System