rc
Paradigm | imperative, pipeline |
---|---|
Designed by | Tom Duff |
Developer | Bell Labs |
First appeared | 1989 |
Typing discipline | weak |
OS | Cross-platform (Version 10 Unix, Plan 9, Plan 9 from User Space) |
Dialects | |
Byron's rc | |
Influenced by | |
Bourne shell | |
Influenced | |
es, The Inferno shell. |
rc (for "run commands") 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 ("Duff's device").[1]
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 the original Bourne shell's ALGOL-like structures, except that it uses an if not
construct 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 "$@
". Variables are not re-split when expanded. The language is described in Duff's paper.[1]
Influences
es
es (for "extensible shell") is an open source, command line interpreter developed by Rakitzis and Paul Haahr[2] that uses a scripting language syntax influenced by the rc shell.[3][4] It was originally based on code from Byron Rakitzis's clone of rc for Unix.[5][6]
Extensible shell is intended to provide a fully functional programming language as a Unix shell.[7] It does so by introducing "program fragments" in braces as a new datatype, lexical scoping via let, and some more minor improvements. The bulk of es development occurred in the early 1990s, after the shell was introduced at the Winter 1993 USENIX conference in San Diego,[8] Official releases appear to have ceased after 0.9-beta-1 in 1997,[9] and es lacks features as compared to more popular shells, such as zsh and bash.[10] A public domain fork of es
is active as of 2019.[11]
Examples
The Bourne shell script:
if [ "$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 }
Rc also supports more dynamic piping:
a |[2] b # pipe only standard error of a to b — equivalent to '3>&2 2>&1 >&3 | b' in Bourne shell[1](Advanced I/O Redirection) a <>b # opens file b as a's standard input and standard output a <{b} <{c} # becomes a {standard output of b} {standard output of c}, # better known as "process substitution"[1](Pipeline Branching)
References
- ↑ 1.0 1.1 1.2 1.3 Duff, Tom (1990). ""Rc — The Plan 9 Shell"". http://doc.cat-v.org/plan_9/4th_edition/papers/rc.
- ↑ Fischer, Manfred M. (13 December 1996). Spatial Analytical Perspectives on GIS. CRC Press. ISBN 9780748403400. https://books.google.com/books?id=iEK6eQQwOF0C&pg=PA43.
- ↑ "Ubuntu Manpage: es - extensible shell". Manpages.ubuntu.com. 1992-03-05. http://manpages.ubuntu.com/manpages/hardy/man1/es.1.html.
- ↑ "Extensible Shell". FOLDOC. http://foldoc.org/Extensible+Shell.
- ↑ "Shells Available for Linux". LUV. http://luv.asn.au/overheads/shells-talk.html.
- ↑ Jones, Tim. "Evolution of shells in Linux". IBM. http://www.ibm.com/developerworks/library/l-linux-shells/.
- ↑ "Linux Journal 12: What's GNU". http://nnc3.com/lj/LJ/LJ12/0062.html.
- ↑ Es: A shell with higher-order functions by Byron Rakitzis, NetApp, Inc, and Paul Haahr, Adobe Systems Incorporated; Archived at Archive.Org.
- ↑ [1]
- ↑ "UNIX shell differences". Faqs.org. http://www.faqs.org/faqs/unix-faq/shell/shell-differences/.
- ↑ Haggerty, James (13 March 2020). "wryun/es-shell: a shell with higher-order functions". http://wryun.github.io/es-shell/.
External links
- - 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 (article )
- es Official website
Original source: https://en.wikipedia.org/wiki/Rc.
Read more |