The startup-files directory provides many examples of what you can put in your own startup files. In particular, bash_aliases has many useful aliases. Bear in mind that if you copy these files wholesale, you’ll have to edit them for your system because many of the paths will be different. Refer to Chapter 16 for further information on changing these files to suit your needs.
The functions directory contains many function definitions that you might find useful. Among them are:
basename
The basename utility, missing from some systems
dirfuncs
Directory manipulation facilities
dirname
The dirname utility, missing from some systems
whatis
An implementation of the Tenth Edition Bourne shell whatis built-in
whence
An almost exact clone of the Korn shell whence built-in
If you come from a Korn shell background, you may find kshenv especially helpful. This contains function definitions for some common Korn facilities such as whence, print, and the two-parameter cd built-ins.
The scripts directory contains many examples of bash scripts. The two largest scripts are examples of the complex things you can do with shell scripts. The first is a (rather amusing) adventure game interpreter and the second is a C shell interpreter. The other scripts include examples of precedence rules, a scrolling text display, a “spinning wheel” progress display, and how to prompt the user for a particular type of answer.
Not only are the script and function examples useful for including in your environment, they also provide many alternative examples that you can learn from when reading this book. We encourage you to experiment with them.
Table B-1 is an index of what you will find as of bash 3.1 or newer.
Table B-1. Paths for bash 3.1. and newer
Path | Description | X-ref |
---|---|---|
./bashdb | Deprecated sample implementation of a bash debugger. | |
./complete | Shell completion code. | |
./functions | Example functions. | |
./functions/array-stuff | Various array functions ( | |
./functions/array-to-string | Convert an array to a string. | |
./functions/autoload | An almost ksh-compatible ‘autoload’ (no lazy load). | ksh |
./functions/autoload.v2 | An almost ksh-compatible ‘autoload’ (no lazy load). | ksh |
./functions/autoload.v3 | A more ksh-compatible ‘autoload’ (with lazy load). | ksh |
./functions/basename | A replacement for basename(1). | basename |
./functions/basename2 | Fast basename(1) and dirname(1) functions for bash/sh. | basename, dirname |
./functions/coproc.bash | Start, control, and end co-processes. | |
./functions/coshell.bash | Control shell co-processes (see coprocess.bash). | |
./functions/coshell.README | README for | |
./functions/csh-compat | A C-shell compatibility package. | csh |
./functions/dirfuncs | Directory manipulation functions from the book The Korn Shell. | |
./functions/dirname | A replacement for dirname(1). | dirname |
./functions/emptydir | Find out if a directory is empty. | |
./functions/exitstat | Display the exit status of processes. | |
./functions/external | Like | |
./functions/fact | Recursive factorial function. | |
./functions/fstty | Front-end to sync | stty.bash |
./functions/func | Print out definitions for functions named by arguments. | |
./functions/gethtml | Get a web page from a remote server (wget(1) in bash). | |
./functions/getoptx.bash | getopt function that parses long-named options. | |
./functions/inetaddr | Internet address conversion (inet2hex and hex2inet). | |
./functions/inpath | Return zero if the argument is in the path and executable. | inpath |
./functions/isnum.bash | Test user input on numeric or character value. | |
./functions/isnum2 | Test user input on numeric values, with floating point. | |
./functions/isvalidip | Test user input for valid IP addresses. | |
./functions/jdate.bash | Julian date conversion. | |
./functions/jj.bash | Look for running jobs. | |
./functions/keep | Try to keep some programs in the foreground and running. | |
./functions/ksh-cd | ksh-like
cd: | ksh |
./functions/ksh-compat-test | ksh-like arithmetic test replacements. | ksh |
./functions/kshenv | Functions and aliases to provide the beginnings of a ksh environment for bash | ksh |
./functions/login | Replace the login and newgrp built-ins in old Bourne shells. | |
./functions/lowercase | Rename files to lowercase. | rename lower |
./functions/manpage | Find and print a manpage. | fman |
./functions/mhfold | Print MH folders, useful only because folders(1) doesn’t print mod date/times. | |
./functions/notify.bash | Notify when jobs change status. | |
./functions/pathfuncs | Path related functions ( | path |
./functions/README | README | |
./functions/recurse | Recursive directory traverser. | |
./functions/repeat2 | A clone of the C shell built-in repeat. | repeat, csh |
./functions/repeat3 | A clone of the C shell built-in repeat. | repeat, csh |
./functions/seq | Generate a sequence from m to n;m defaults to 1. | |
./functions/seq2 | Generate a sequence from m to n;m defaults to 1. | |
./functions/shcat | Readline-based pager. | cat, readline pager |
./functions/shcat2 | Readline-based pagers. | cat, readline pager |
./functions/sort-pos-params | Sort the positional parameters. | |
./functions/substr | A function to emulate the ancient ksh built-in. | ksh |
./functions/substr2 | A function to emulate the ancient ksh built-in. | ksh |
./functions/term | A shell function to set the terminal type interactively or not. | |
./functions/whatis | An implementation of the 10th Edition Unix sh built-in whatis(1) command. | |
./functions/whence | An almost ksh-compatible whence(1) command. | |
./functions/which | An emulation of which(1) as it appears in FreeBSD. | |
./functions/xalias.bash | Convert csh alias commands to bash functions. | csh, aliasconv |
./functions/xfind.bash | A find(1) clone. | |
./loadables/ | Example loadable replacements. | |
./loadables/basename.c | Return nondirectory portion of pathname. | basename |
./loadables/cat.c | cat(1) replacement with no options—the way cat was intended. | cat, readline pager |
./loadables/cut.c | cut(1) replacement. | |
./loadables/dirname.c | Return directory portion of pathname. | dirname |
./loadables/finfo.c | Print file info. | |
./loadables/getconf.c | POSIX.2 getconf utility. | |
./loadables/getconf.h | Replacement definitions for ones the system doesn’t provide. | |
./loadables/head.c | Copy first part of files. | |
./loadables/hello.c | Obligatory “Hello World” / sample loadable. | |
./loadables/id.c | POSIX.2 user identity. | |
./loadables/ln.c | Make links. | |
./loadables/logname.c | Print login name of current user. | |
./loadables/Makefile.in | Simple makefile for the sample loadable built-ins. | |
./loadables/mkdir.c | Make directories. | |
./loadables/necho.c | echo without options or argument interpretation. | |
./loadables/pathchk.c | Check pathnames for validity and portability. | |
./loadables/print.c | Loadable ksh-93 style print built-in. | |
./loadables/printenv.c | Minimal built-in clone of BSD printenv(1). | |
./loadables/push.c | Anyone remember TOPS-20? | |
./loadables/README | README | |
./loadables/realpath.c | Canonicalize pathnames, resolving symlinks. | |
./loadables/rmdir.c | Remove directory. | |
./loadables/sleep.c | Sleep for fractions of a second. | |
./loadables/strftime.c | Loadable built-in interface to strftime(3). | |
./loadables/sync.c | Sync the disks by forcing pending filesystem writes to complete. | |
./loadables/tee.c | Duplicate standard input. | |
./loadables/template.c | Example template for loadable built-in. | |
./loadables/truefalse.c | True and false built-ins. | |
./loadables/tty.c | Return terminal name. | |
./loadables/uname.c | Print system information. | |
./loadables/unlink.c | Remove a directory entry. | |
./loadables/whoami.c | Print out username of current user. | |
./loadables/perl/ | Illustrates how to build a Perl interpreter into bash. | |
./misc | Miscellaneous | |
./misc/aliasconv.bash | Convert csh aliases to bash aliases and functions. | csh, xalias |
./misc/aliasconv.sh | Convert csh aliases to bash aliases and functions. | csh, xalias |
./misc/cshtobash | Convert csh aliases, environment variables, and variables to bash equivalents. | csh, xalias |
./misc/README | README | |
./misc/suncmd.termcap | SunView | |
./obashdb | Modified version of the Korn Shell debugger from Bill Rosenblatt’s Learning the Korn Shell. | |
./scripts.noah | Noah Friedman’s collection of scripts (updated to bash v2 syntax by Chet Ramey). | |
./scripts.noah/aref.bash | Pseudo-arrays and substring indexing examples. | |
./scripts.noah/bash.sub.bash | Library functions used by require.bash. | |
./scripts.noah/bash_version. bash | A function to slice up | |
./scripts.noah/meta.bash | Enable and disable eight-bit readline input. | |
./scripts.noah/mktmp.bash | Make a temporary file with a unique name. | |
./scripts.noah/number.bash | A fun hack to translate numerals into English. | |
./scripts.noah/PERMISSION | Permissions to use the scripts in this directory. | |
./scripts.noah/prompt.bash | A way to set | |
./scripts.noah/README | README | |
./scripts.noah/remap_keys.bash | A front end to bind to redo readline bindings. | readline |
./scripts.noah/require.bash | Lisp-like require/provide library functions for bash. | |
./scripts.noah/send_mail. | Replacement SMTP client written in bash. | |
./scripts.noah/shcat.bash | bash replacement for cat(1). | cat |
./scripts.noah/source.bash | Replacement for source that uses current directory. | |
./scripts.noah/string.bash | The string(3) functions at the shell level. | |
./scripts.noah/stty.bash | Front-end to stty(1) that changes readline bindings too. | fstty |
./scripts.noah/y_or_n_p.bash | Prompt for a yes/no/quit answer. | ask |
./scripts.v2 | John DuBois’ ksh script collection (converted to bash v2 syntax by Chet Ramey). | |
./scripts.v2/arc2tarz | Convert an arc archive to a compressed tar archive. | |
./scripts.v2/bashrand | Random number generator with upper and lower bounds and optional seed. | random |
./scripts.v2/cal2day.bash | Convert a day number to a name. | |
./scripts.v2/cdhist.bash | cd replacement with a directory stack added. | |
./scripts.v2/corename | Tell what produced a core file. | |
./scripts.v2/fman | Fast man(1) replacement. | manpage |
./scripts.v2/frcp | Copy files using ftp(1) but with rcp-type command-line syntax. | |
./scripts.v2/lowercase | Change filenames to lowercase. | rename lower |
./scripts.v2/ncp | A nicer front end for cp(1) (has
| |
./scripts.v2/newext | Change the extension of a group of files. | rename |
./scripts.v2/nmv | A nicer front end for mv(1) (has
| rename |
./scripts.v2/pages | Print specified pages from files. | |
./scripts.v2/PERMISSION | Permissions to use the scripts in this directory. | |
./scripts.v2/pf | A pager front end that handles compressed files. | |
./scripts.v2/pmtop | Poor man’s top(1) for SunOS 4.x and BSD/OS. | |
./scripts.v2/README | README | |
./scripts.v2/ren | Rename files by changing parts of filenames that match a pattern. | rename |
./scripts.v2/rename | Change the names of files that match a pattern. | rename |
./scripts.v2/repeat | Execute a command multiple times. | repeat |
./scripts.v2/shprof | Line profiler for bash scripts. | |
./scripts.v2/untar | Unarchive a (possibly compressed) tarfile into a directory. | |
./scripts.v2/uudec | Carefully uudecode(1) multiple files. | |
./scripts.v2/uuenc | uuencode(1) multiple files. | |
./scripts.v2/vtree | Print a visual display of a directory tree. | tree |
./scripts.v2/where | Show where commands that match a pattern are. | |
./scripts | Example scripts. | |
./scripts/adventure.sh | Text adventure game in bash! | |
./scripts/bcsh.sh | Bourne shell’s C shell emulator. | csh |
./scripts/cat.sh | Readline-based pager. | cat, readline pager |
./scripts/center | Center a group of lines. | |
./scripts/dd-ex.sh | Line editor using only /bin/sh, /bin/dd, and /bin/rm. | |
./scripts/fixfiles.bash | Recurse a tree and fix files containing various bad characters. | |
./scripts/hanoi.bash | The inevitable Towers of Hanoi in bash. | |
./scripts/inpath | Search | inpath |
./scripts/krand.bash | Produces a random number within integer limits. | random |
./scripts/line-input.bash | Line input routine for GNU Bourne Again Shell plus terminal-control primitives. | |
./scripts/nohup.bash | bash version of nohup command. | |
./scripts/precedence | Test relative precedences for && and || operators. | |
./scripts/randomcard.bash | Print a random card from a card deck. | random |
./scripts/README | README | |
./scripts/scrollbar | Display scrolling text. | |
./scripts/scrollbar2 | Display scrolling text. | |
./scripts/self-repro | A self-reproducing script (careful!). | |
./scripts/showperm.bash | Convert ls(1) symbolic permissions into octal mode. | |
./scripts/shprompt | Display a prompt and get an answer satisfying certain criteria. | ask |
./scripts/spin.bash | Display a spinning wheel to show progress. | |
./scripts/timeout | Give rsh(1) a shorter timeout. | |
./scripts/vtree2 | Display a tree printout of the direcotry with disk use in 1k blocks. | tree |
./scripts/vtree3 | Display a graphical tree printout of dir. | tree |
./scripts/vtree3a | Display a graphical tree printout of dir. | tree |
./scripts/websrv.sh | A web server in bash! | |
./scripts/xterm_title | Print the contents of the xterm title bar. | |
./scripts/zprintf | Emulate printf (obsolete since printf is now a bash built-in). | |
./startup-files | Example startup files. | |
./startup-files/Bash_aliases | Some useful aliases (written by Fox). | |
./startup-files/Bash_profile | Sample startup file for bash login shells (written by Fox). | |
./startup-files/bash-profile | Sample startup file for bash login shells (written by Ramey). | |
./startup-files/bashrc | Sample Bourne Again Shell init file (written by Ramey). | |
./startup-files/Bashrc.bfox | Sample Bourne Again Shell init file (written by Fox). | |
./startup-files/README | README | |
./startup-files/apple | Example startup files for Mac OS X. | |
./startup-files/apple/aliases | Sample aliases for Mac OS X. | |
./startup-files/apple/bash.defaults | Sample User preferences file. | |
./startup-files/apple/environment | Sample Bourne Again Shell environment file. | |
./startup-files/apple/login | Sample login wrapper. | |
./startup-files/apple/logout | Sample logout wrapper. | |
./startup-files/apple/rc | Sample Bourne Again Shell config file. | |
./startup-files/apple/README | README |
18.119.125.135