rc
| This article does not cite any references or sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (October 2008) |
| Paradigm(s) | imperative, pipeline |
|---|---|
| Appeared in | 1989 |
| Designed by | Tom Duff |
| Developer | Bell Labs |
| Typing discipline | weak |
| Dialects | Byron's rc |
| Influenced by | Bourne shell |
| Influenced | Es shell, The Inferno shell. |
| OS | Cross-platform (Version 10 Unix, Plan 9, Plan 9 from User Space) |
| Website | Rc - The Plan 9 Shell |
rc is the command line interpreter for Version 10 Unix and Plan 9 from Bell Labs operating systems. It resembles the Bourne shell, but its syntax is somewhat simpler. It was created by Tom Duff, who is better known for an unusual C programming language construct called Duff's device.
A port of the original rc to Unix is part of Plan 9 from User Space. A rewrite of rc for Unix-like operating systems by Byron Rakitzis is also available but includes some incompatible changes.
Rc uses C-like control structures instead of ALGOL-like, as the original Bourne shell uses, except that it uses a construct if not instead of else and has a Bourne-like for loop to iterate over lists. In rc all variables are lists of strings, which eliminates the need for constructs like "$@".
[edit] Examples
For example, the Bourne shell script
if test "$1" = hello; then echo hello, world else case "$2" in 1) echo $# 'hey' "jude's"$3;; 2) echo `date` :$*: :"$@":;; *) echo why not 1>&2 esac for i in a b c; do echo $i done fi
is expressed in rc as
if(~ $1 hello)
echo hello, world
if not {
switch($2) {
case 1
echo $#* 'hey' 'jude''s'^$3
case 2
echo `{date} :$"*: :$*:
case *
echo why not >[1=2]
}
for(i in a b c)
echo $i
}
Because if and if not are two different statements, they must be grouped in order to be used in certain situations.
Rc also supports more dynamic piping:
a |[2] b # pipe only standard error of a to b — in Bourne shell as a 3>&2 2>&1 >&3 | b
a <>b # opens b as a's standard input and standard output
a <{b} <{c} # becomes a {standard output of b} {standard output of c}
[edit] References
[edit] External links
- "Rc - The Plan 9 Shell" - by Tom Duff
- - Plan 9 manual page.
- Plan 9 from User Space - Includes rc and other Plan 9 tools for Linux, Mac OS X and other Unix-like systems.
- Byron Rakitzis' rewrite for Unix
- werc - A web document management system implemented completely in the rc shell.
- ircrc - An IRC client, using /net directly, implemented completely in one rc file.
- contrib - A Plan 9 package manager made with rc.
| This Unix-related article is a stub. You can help Wikipedia by expanding it. |
| This programming language-related article is a stub. You can help Wikipedia by expanding it. |
|
|
|||||