man pages plus {with cached sample code}

Bill Hernandez ms at mac-specialist.com
Mon Mar 2 12:10:27 PST 2009


Over time I have written a bunch of shell scripts. Some I use  
frequently, some I never use.

One of the handy ones is called bh_man. It creates a small hierarchy  
of directories if they don't exist, checks the $PATH in ./ 
bash_profile, and sets it if necessary.

The gist of it, is that it would be nice to be able to add {comments,  
notes, sample code, urls, etc} to man pages, but I don't know of an  
easy way to do that, so with that in mind I wrote "bh_man".

When bh_man is called with an argument (unix_command_name) it first  
determines if I already have that command in my personal cache, if it  
exists then it pulls it up instead of the actual man page, if it does  
not exist in the cache, it copies the man page, strips out all the  
bizarre characters, and opens it in BBEdit.

The huge advantage is that the cached document pulls up instantly, is  
easily editable with BBEdit, or any other text editor, and the best  
thing is that I can add/modify {comments, notes, sample code, urls,  
etc} for each man page I choose to. Consequently most of the commands  
I have already cached have a lot of example code included. The example  
code is right at the top, so once I have added some snippets, I don't  
even have to scroll through the document. The examples are right  
there...

The hierarchy below shows that a dir is created that provides a  
starting place at "~/unix_scripts".

The "bh_man" script does the following :

( 1 ) checks the "~/unix_scripts" hierarchy, and creates it, if it  
does not exist.
( 2 ) checks "~/.bash_profile", and creates it, if it does not exist.
( 3 ) checks "~/.bash_profile" to make sure "~/unix_scripts/bin"  
exists in the path, and adds it to the $PATH, if it does not exist.
( 4 ) creates the "bh_open" shell script in "~/unix_scripts/bin"
( 5 ) when finished with steps ( 1 ) thru ( 4 ) above, it moves  
(itself) "bh_man" to  "~/unix_scripts/bin" as shown below.

Note : The hierarchy below shows, for example, when you do "bh_man  
open" it creates "open.txt" as shown below.

I put the hierarchy in my home directory instead of /usr/local or /opt/ 
local, because it gets backed up more often that way.

 > unix_scripts
	> admin
	> bbedit
	> bin
		bh_man
		bh_open
	> docs
		> manual
			open.txt
	> help
	> history
	> logs
	> macports
	> misc
	> modules
	> src

These are the commands I have already, many of them contain sample  
usage code, which for me, is what the man pages have always lacked,  
even some simple examples would be nice.

Anyway I figured out a way around the problem for myself.

If anyone is interested in trying the script please reply. If there is  
enough interest, I'll put it on my server.


	> docs
		> manual
			addgroup.txt
			adduser.txt
			alias.txt
			ascii.txt
			awk.txt
			bash.txt
			bz2.txt
			bzip2.txt
			case.txt
			cat.txt
			chmod.txt
			colrm.txt
			curl.txt
			cut.txt
			date.txt
			defaults.txt
			diff.txt
			DirectoryService.txt
			dscl.txt
			dseditgroup.txt
			dsexport.txt
			dsmemberutil.txt
			echo.txt
			egrep.txt
			export.txt
			file.txt
			for.txt
			format.txt
			FUNCNAME.txt
			functions.txt
			getcwd.txt
			getopts.txt
			grep.txt
			group.txt
			id.txt
			jot.txt
			kill.txt
			launchd.txt
			lookupd.txt
			loop.txt
			ls.txt
			mkdir.txt
			mysql.basic_info.txt
			mysql.GRANT.txt
			mysql.mysqladmin.txt
			nicl.txt
			nidump.txt
			niload.txt
			nireport.txt
			niutil.txt
			open.txt
			operator.txt
			parameters.txt
			passwd.txt
			pgsql.txt
			pidof.txt
			port.txt
			printf.txt
			PS1.txt
			psql.txt
			rand.txt
			read.txt
			reboot.txt
			redirection.txt
			repl.txt
			rm.txt
			rmdir.txt
			rpl.txt
			rs.txt
			security.txt
			sed.txt
			seq.txt
			sh.txt
			sort.txt
			ssh.txt
			str_repeat.txt
			stty.txt
			su.txt
			sudo.txt
			tar.txt
			tee.txt
			termcap.txt
			test.txt
			touch.txt
			tr.txt
			uname.txt
			wc.txt
			wget.txt
			xargs.txt

Best Regards,

Bill Hernandez
Plano, Texas




More information about the macports-users mailing list