rc (shell)
Rc linguaggio di programmazione | |
---|---|
Autore | Tom Duff |
Data di origine | 1989 |
Paradigmi | programmazione imperativa e programmazione procedurale |
Influenzato da | Bourne shell |
Implementazione di riferimento | |
Sistema operativo | Multipiattaforma |
Sito web | doc.cat-v.org/plan_9/4th_edition/papers/rc |
rc (abbreviazione di run commands) è l'interprete dei comandi per i sistemi operativi Unix Versione 10 e Plan 9 from Bell Labs. Somiglia alla Bourne shell, ma la sintassi è un po' più semplice.
È stato creato da Tom Duff, meglio noto per l'inusuale costrutto del linguaggio di programmazione C chiamato Duff's device.
Caratteristiche
[modifica | modifica wikitesto]Rc usa delle strutture di controllo C-like invece di ALGOL-like, come quelle utilizzate dalla Bourne shell originale, eccetto che per l'utilizzo di un costrutto if not anziché else ed avere un ciclo for Bourne-like per scorrere le liste.
Su rc tutte le variabili sono liste di stringhe, cosa questa che elimina la necessità di costrutti come "$@".
Versioni
[modifica | modifica wikitesto]Un port su Unix dell'rc originale è parte di Plan 9 from User Space. È disponibile anche una riscrittura di rc per sistemi operativi Unix-like fatta da Byron Rakitzi, che però ha richiesto modifiche tali da renderla incompatibile.
Esempi
[modifica | modifica wikitesto]Per esempio, lo script per la shell Bourne
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
in rc si esprime con
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
}
Dato che if e if not sono due istruzioni differenti, in casi particolari queste hanno bisogno di essere raggruppate.
Rc supporta anche pipe più dinamiche:
a |[2] b # mette in pipe lo standard error di a con b - Nella shell Bourne equivale a 1>&2 |b
a <>b # apre b come lo standard input ed error di a
a <{b} <{c} # diventa a {standard output di b} {standard output di c}
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- Sito ufficiale, su doc.cat-v.org.
- Rc, su packages.debian.org.
- "Rc - The Plan 9 Shell" - di Tom Duff
- Plan 9 Pagina di manuale di rc, su man.cat-v.org.
- Plan 9 from User Space - Include rc e altri strumenti di Plan9 per Linux, Mac OS X e altri sistemi Unix-like.
- Riscrittura di Byron Rakitzis' per Unix, su libra-aries-books.co.uk. URL consultato il 29 dicembre 2009 (archiviato dall'url originale il 28 maggio 2009).
- werc - Un sistema per la gestione dei documenti per il web implementato completamente in rc.