POSIX約定與GNU長選項

2021-09-07 22:26:54 字數 1411 閱讀 1720

posix 標準鐘關於程式名、選項和引數方面的約定

程式名不應該少於 2 個字元,且不多於 9 個字元

程式名應該只包含小寫字母和阿拉伯數字

選項名應該是單字母或單數字的字元,多數字選項應該是不允許的。 -w 選項為專指**商而預留

所有選項應該以 '-' 開始

對於那些不需要引數的選項來說,將多個 '-' 後面的選項聚合在一起應該是可以的(例如,'foo-a-b-c' 和 'foo-abc' 應該同樣處理)

當選項確實需要引數的時候,引數與選項之間應該用空格分隔開(例如,'fgrep -f patfile' )。然而,posix 標準考慮到過去的實踐,有時選項和運算元可以在同乙個字串中:'fgrep -fpatfile'。實際上,getopt() 和 getopt_long() 函式將 '-fpatfile' 解釋稱 '-f patfile' ,而不是 '-f-p-a-t...'

選項引數不應該是可選的

如果選項接受的引數有多個值,那麼程式應該將引數作為乙個字串接收進來,字串中的這些值用逗號或空白符分隔開。如:myprog -u "arnold,joe,jane" ( 以逗號分隔開 );myprog -u "arnold joe jane" (以空白字元分隔開)

選項應該在運算元之前出現在命令列上。unix 版本的 getopt() 強迫選項遵守這個約定,gnu 版本的 getopt() 預設沒有這個約定,不過你可以告訴它這麼做

特殊引數 '--'  指明所有引數都結束了。命令列中後面的任何引數都被認為是運算元,即使它們以 '-' 開始

選項如何排列沒有關係。然而,對於相互排斥的選項,當乙個選項覆蓋其他選項的設定時,那麼(可以說)最後乙個選項起作用。如果帶引數的選項出現重複,那麼程式應該按順序處理這些選項引數。例如,'myprog -u arnold -u jane' 和 'myprog -u "arnold,jane"『 是相同的(你必須自己處理這些引數,getopt() 不能處理這種情況)。

允許運算元的順序影響程式的行為。但這些程式應該用文件來說明這些情況。

讀寫指定檔案的程式應該將單個的引數 』-『 作為有意義的標準輸入或標準輸出來對待(或者作為乙個適合於該程式的引數來對待)。

gnu長選項

gnu鼓勵程式設計師使用--help、--verbose等形式的長選項。這些選項不僅不與posix約定衝突,而且容易記憶,另外也提供了在所有gnu工具之間保持一致性的機會。gnu長選項有自己的約定:

對於已經遵循posix約定的gnu程式,每個短選項都有乙個對應的長選項。

額外針對gnu的長選項不需要對應的短選項,僅僅推薦要有。

長選項可以縮寫成保持惟一性的最短的字串。

選項引數與長選項之間或通過空白字元或通過乙個'='來分隔。

選項引數是可選的(只對短選項有效)。

長選項允許以乙個短橫線為字首。

函式呼叫約定與名字修飾約定

在windows下,由於很多語言支援動態鏈結庫技術,因此動態鏈結庫是一種很好的混合程式設計方法。語言對函式的約定有兩種 函式呼叫約定和名字修飾約定。不同語言預設的呼叫呼叫約定和函式的命名方式是不同的,要想不同的語言開發的動態鏈結庫能夠相互呼叫,那麼開發動態鏈結庫的語言和呼叫鏈結庫的語言的函式約定必須...

POSIX標準與目錄管理

在linux作業系統中,實現了兩類對檔案io的管理,一類是遵循posix標準,linux作業系統自身提供的io系統呼叫,如open close read等函式 另一類是由ansi標準提供的標準io庫函式,這些函式是對直接io系統呼叫的封裝,其在訪問檔案時根據需要設定了不同型別的緩衝區,從而減少了直接...

AppleScript路徑與POSIX路徑的轉換

在做以個mac os的安裝程式,程式安裝完後會生成以乙個 library printers installedprinters.plist 現在的目標是當安裝完成後呼叫腳步把檔案刪除。儲存為postinstall.sh,packagemaker新增到到postinstall的script中。上網查了...