rc (シェル)

rc("run commands")は、Version 10 UnixPlan 9のためのコマンドラインインターフェースである。rcはBourne shellに似ているが、その構文はより簡潔なものになっている。また、rcはトム・ダフによって作られた。彼はDuff's deviceと呼ばれるC言語の構築で有名である[1]

rc
パラダイム 命令型, パイプライン
登場時期 1989年 (1989)
設計者 トム・ダフ
開発者 ベル研究所
型付け 弱い型付け
方言 バイロンのrc
影響を受けた言語 Bourne shell
影響を与えた言語 es、The Inferno shell.
プラットフォーム クロスプラットフォーム (Version 10 Unix, Plan 9, Plan 9 from User Space)
An rc session

オリジナルなrcのUNIXに対するポートは、Plan 9 form User Spaceの一部としてなされた。rcのUNIX系OSへのリライトはバイロン・ラキツィスによるものも利用可能だが、それはいくつかの互換性のない変更を含んでいる。

rcは、オリジナルのBourne shellがALGOL風の構造を持つのに対して、C言語のような構造を持つ。ただし、"if not"構造を"else"の代わりに使い、リストの繰り返しにBourne shell風の"for"ループを持っている。rcにおいては"$@"のような構造を排除する必要のために、すべての変数は文のリストとなっている。変数は展開されるときに再分割されない。この言語はダフの論文に記載されている[1]

影響

es

es("extensible shell")は、ラキツィスとポール・ハウァーによって開発[2]された、オープンソースのコマンドラインインターフェースで、rcシェルに影響を受けたスクリプト言語の構文を利用している[3][4]。esは、ラツキィスによるUNIXのためのrcのクローン のコードをオリジナルのベースにしている[5][6]

es(="extensible shell")は、UNIXシェルとして、完全な関数型プログラミング言語を提供することを意図している[7]。esの大部分の開発は1990年代の初頭に始まり、1993年冬のサンディエゴにおけるUSENIXの会議において紹介された後[8]、公式の リリースは1997年の0.9-beta-1以後やめられた[9]。また、esは、zshbashなどのポピュラーなシェルに比べて機能が欠けている[10]esパブリックドメインな派生版は2019年現在でも開発されている[11]

Bourne shellスクリプト

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

は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
}

Rcはまた、より動的なパイプをサポートしている。

a |[2] b    # aの標準エラー出力のみbへパイプする — Bourne shellにおける'3>&2 2>&1 >&3 | b'と等価である[1](Advanced I/Oリダイレクト)
a <>b       # aの標準入力および標準出力としてファイルbを開く
a <{b} <{c} # a {bの標準出力} {cの標準出力}となる。"プロセス置換"という名前でよく知られている[1](パイプライン分岐)

出典

  1. Duff, Tom. Rc — The Plan 9 Shell. http://doc.cat-v.org/plan_9/4th_edition/papers/rc (PDF; 1990 version)
  2. Spatial Analytical Perspectives on GIS. https://books.google.com/books?id=iEK6eQQwOF0C&pg=PA43&redir_esc=y#v=onepage&q&f=false
  3. Ubuntu Manpage: es - extensible shell”. Manpages.ubuntu.com (1992年3月5日). 2014年2月24日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
  4. Extensible Shell”. FOLDOC. 2012年8月24日閲覧。
  5. Shells Available for Linux”. LUV. 2012年8月24日閲覧。
  6. Jones, Tim. Evolution of shells in Linux”. IBM. 2014年3月14日閲覧。
  7. Linux Journal 12: What's GNU”. 2013年1月17日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
  8. Es: A shell with higher-order functions by Byron Rakitzis, NetApp, Inc, and Paul Haahr, Adobe Systems Incorporated; Archived at Archive.Org.
  9. UNIX shell differences”. Faqs.org. 2012年8月24日閲覧。
  10. wryun/es-shell: a shell with higher-order functions”. GitHub (2020年3月13日). 2020年3月13日閲覧。

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.