[Chapter 10] 10.9 Shell Functions
Author: Jerry Peek, Tim O'Reilly & Mike Loukides
Date: 1998-08-04T21:35:57Z

#

| Chapter 10 Aliases |

## 10.9 Shell Functions

sh_init | The C shell has aliases (10.2). But until System V Release 2, the Bourne Shell had almost (10.10) no way for users to set up their own built-in commands. Functions are like aliases, but better. For instance, functions can return a status (44.7) and have much more reasonable syntax (10.7). bash and the Korn Shell have shell functions, too. To find out all about functions, check a shell programming book. There are examples in the sh_init file on the CD-ROM. Here are the examples from articles 10.2 and 10.3 changed into Bourne shell aliases:

- The la function includes "hidden" files in ls listings. The lf function labels the names as directories, executable files, and so on:

  >     la () { ls -a "$@"; }
  >     lf () { ls -F "$@"; }

  The spaces and the semicolon (`;`) are both important! [3] The `"$@"` (44.15) is replaced by the command-line arguments (other options, or directory and filenames), if you use any:

  > [3] A function is a Bourne shell list construct (13.8). You can omit the semicolon in bash-but, if you do, your functions won't be portable.

  >     $ la -l somedir            ...runs ls -a -l somedir

- This next simple function, cur, gives the name of your current directory and then lists it:

  >     cur()
  >     {
  >         pwd
  >         ls
  >     }

That example shows how to write a function with more than one line. In that style, with the ending curly brace on its own line, you don't need a semicolon after the last command.

- JP

10.8 Fix Quoting in csh Aliases with makealias and quote |  | 10.10 Simulated Bourne Shell Functions and Aliases