rc (Unix)

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια


Ο rc είναι ο διερμηνέας γραμμής εντολών των λειτουργικών συστημάτων Έκδοση 10 του Unix και Plan 9 from Bell Labs. Μοιάζει με το κέλυφος Bourne, αλλά η σύνταξή του είναι λίγο απλούστερη. Δημιουργήθηκε από τον Tom Duff, ο οποίος είναι γνωστός για μια ιδιαίτερη δομή της γλώσσας προγραμματισμού C που ονομάζεται Duff's device.

Το Plan 9 from User Space περιέχει μια μεταφορά του αυθεντικού rc στο Unix. Επίσης έχει γραφεί από την αρχή μια άλλη έκδοση του rc για Unix-οειδή λειτουργικά συστήματα από το Βύρωνα Ρακιντζή αλλά περιέχει κάποιες ασύμβατες αλλαγές.

Το rc χρησιμοποιεί δομές ελέγχου σαν της C αντί της ALGOL του αυθεντικού κελύφους Bourne, αν και χρησιμοποιεί μια δομή if not αντί της else και έχει ένα βρόχο for όπως το Bourne για να επαναλαμβάνεται πάνω σε λίστες. Όλες οι μεταβλητές στο rc είναι λίστες από συμβολοσειρές, επομένως δε χρειάζονται χαρακτηριστικά όπως το "$@".

Παραδείγματα[Επεξεργασία | επεξεργασία κώδικα]

Για παράδειγμα, το σενάριο κελύφους 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

εκφράζεται στο rc ως εξής:

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
}

Επειδή το if και το if not είναι δύο διαφορετικές εντολές, πρέπει να ομαδοποιούνται όταν χρησιμοποιούνται σε συγκεκριμένες καταστάσεις.

Το rc υποστηρίζει επίσης δυναμικές σωληνώσεις:

a |[2] b    # κατευθύνει την έξοδο λάθους από το a στο b — στο κέλυφος Bourne είναι a 2>&1 | b
a <>b       # ανοίγει το b σαν είσοδο και έξοδο του a
a <{b} <{c} # γίνεται a {έξοδος του b} {έξοδος του c}

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]