2007年8月7日 星期二

Unix指令命名的由來

awk = "Aho Weinberger and Kernighan" 

    這個語言以作者 Al Aho, Peter Weinberger 和 Brian Kernighan 的 
    姓來命名。 

grep
 = "Global Regular Expression Print" 

    grep 來自 ed 的列印所有符合某 pattern 指令 

    g/re/p 

    "re" 代表 regular expression 

fgrep
 = "Fixed GREP". 

    fgrep 找固定的字串。"f" 不是代表 "fast" - 事實上, "fgrep 
    foobar *.c" 通常比 "egrep foobar *.c" 來得慢(有點意外吧, 不信 
    的話, 自己試試嘍)。 


    儘管如此,Fgrep 仍然有可取之處,在檔案中搜尋字串的時候,Fgrep 
    能處理的字串數目較 egrep 多。 

egrep
 = "Extended GREP" 

    egrep 用比 grep 更 fancy 的 regular rexpression。許多人始終只 
    用 egrep,因爲它用的 algorithm 比 grep 或 fgrep 用的高級,而 
    且通常是三個程式中最快的。 

cat
 = "CATenate" 

    catenate 是一個艱深難懂的單字,意思是"把它連成一串", 這就是 
    "cat" 這個指令對一個或多個檔案所做的處理。 

    請不要跟 C/A/T 混淆了,C/A/T 是指電腦輔助排版系統(Computer 
    Aided Typesetter)。 

gecos
 = "General Electric Comprehensive Operating Supervisor" 

    不過,當通用電器 (GE) 的大型系統部門賣給 Honeywell 的時候, 
    Honeywell 就把 GECOS 的 E 拿掉了。 

    目前 Unix 的密碼檔裏面仍保有 "pw_gecos" 這個欄位。這個名字是 
    從古早的年代沿用過來的。 

    Dennis Ritchie 曾經說過: 

    "有時候我們會把印表輸出或整批工作丟到 GCOS 機器。密碼檔 
    裏面的 gcos 欄位元是用來隱藏 $IDENT 卡片上的資訊,這樣做不 
    夠優雅"。 


nroff
 = "New ROFF" 
troff
 = "Typesetter new ROFF" 

    這些字都是從"roff"衍生的, roff 是重寫 Multics 上的 runoff 程式得來 
    的 (runoff 的意思就是"印出文件")。 

tee
 = T 

    這是管線工人的術語,代表 T 型的管線分叉器。 

bss
 = "Block Started by Symbol" (由符號啓始的區塊) 

    Dennis  Ritchie 曾說過: 

    這個縮寫也許有其他說法,但事實上我們採用這個縮寫的本意是 
    "Block Started by Symbol"。它是 FAP 上的虛擬指令,FAP 
    (Fortran Assembly [-er?] Program) 是指 IBM 704-709-7090-7094 
    這種機型的組譯器。這個指令可定義自己的標號,並且預留一定數目 
    的字組空間。還有另一個虛擬指令 BES,是 "Block Ended by 
Symbol"
,跟 BSS 指令幾乎一樣,不同點在於標號是定義在預留字組 
    空間尾端的位址 + 1 的地方。在這些機器上,Fortran 的陣列是以反 
    方向儲存,而且陣列的索引是從 1 算起。 

    這種用法是合理的,因爲這跟 UNIX 上標準的程式載入器一樣,程式 
    碼當中並非真的放入這一整塊預留空間,而是先用一個數目表示,在 
    載入時才真的把所需的預留空間定出來。 

biff
 = "BIFF" 

    這個指令是用來設定當您有新郵件進來時,是否要通知您。這是柏克 
    萊大學校園內一隻狗的名字。 

        我可以確定這個名稱的起源,如果您有興趣的話,Biff 是 Heidi 
        Stettner 養的寵物,想當年 Heidi (還有我,跟 Bill Joy) 都還是 
        UCB 的研究生時,早期的 BSD 版本還在發展中。Biff 受到流連於 
        Evans Halls 這些人的喜愛,也因爲它會對前來的郵差吠叫而聞名;因 
        此就以 biff 當作指令的名稱。 
        (這是卡內基美濃大學的 Eric Cooper 證實的) 

rc
 (像是 ".cshrc" 或 "/etc/rc" 中的 rc 這兩個字母) = "RunCom" 

    "rc" 是取自 "runcom", 來自麻省理工學院在 1965 年發展的 CTSS 
    系統。相關文獻曾記載這一段話: '具有從檔案中取出一系列命令來執 
    行的功能;這稱爲 "run commands" 又稱爲 "runcom",而這種檔案又 
    稱爲一個 runcom (a runcom)' 

    Brian Kernighan 與 Dennis Ritchie 告訴 Vicki Brown 說: "rc" 也 
    是Plan 9 作業系統 shell 的名字。 



Perl
 = "Practical Extraction and Report Language" 
Perl
 = "Pathologically Eclectic Rubbish Lister" 

    Perl是 Larry Wall 所發展的一種相當受歡迎的語言, Perl 在處理文字, 
    process,與檔案時非常便利,可以說是兼得 shell 與 C 之長。想知道 
   更多關於Perl 的訊息,請看 Usenet  newsgroup  comp.lang.perl。 

Don
 Libes 的 "Life with Unix" 一書裏有更多這類的珍聞軼事。