rc (shell)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Rc
linguaggio di programmazione
AutoreTom Duff
Data di origine1989
Paradigmiprogrammazione imperativa e programmazione procedurale
Influenzato daBourne shell
Implementazione di riferimento
Sistema operativoMultipiattaforma
Sito webdoc.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]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica