本文轉載於:http://monkeymusic.blog.163.com/blog/static/4797639200912533652666/
用途
返回一個字串參數的基本檔案名稱。
文法
basename String [ Suffix ]
描述
basename 命令讀取 String 參數,刪除以 /(斜杠) 結尾的首碼以及任何指定的 Suffix 參數,並將剩餘的基本檔案名稱寫至標準輸出。basename 命令應用以下建立基本檔案名稱的規則:
- 如果 String 參數是 //(雙斜杠) 或如果 String 參數包含的都是斜杠字元,則將字串更改為單個 /(斜杠)。跳過步驟 2 到 4。
- 從指定字串除去任何拖尾的 / 字元。
- 如果在 String 參數中剩餘任何 / 字元,則除去字串的首碼直到(包含)最後一個 / 字元。
- 如果指定 Suffix 參數,且它和字串中的剩餘的字元相同,則不修改此字串。例如,輸入:
K > basename /u/dee/desktop/cns.boo cns.boo
結果是:
cns.boo
如果指定 Suffix 參數,且它和字串中所有字元都不相同,但和字串的尾碼相同,則除去指定尾碼。例如,輸入:
K > basename /u/dee/desktop/cns.boo .boo
結果是:
cns
不能在字串中尋找到指定的尾碼不作為錯誤處理。
basename 和 dirname命令通常用於 shell
指令碼中的命令替換來指定和指定的輸入檔案名稱有所差異的輸出檔案名稱。
退出狀態
該命令返回以下退出值:
0 成功完成
〉0 發生錯誤
樣本
- 要顯示一個 shell 變數的基本名稱,請輸入:
basename $WORKFILE
此命令顯示指定給 shell 變數 WORKFILE 的值的基本名稱。如果 WORKFILE 變數的值是 /home/jim/program.c 檔案,則此命令顯示 program.c。
- 要構造一個和另一個檔案名稱相同(除了尾碼)的檔案名稱,請輸入:
OFILE=`basename $1 .c`.o
此命令指定給 OFILE 檔案第一個位置上的參數($1)的值,但它的 .c 尾碼更改至 .o。如果 $1 是 /home/jim/program.c 檔案,則 OFILE 成為 program.o。因為 program.o 僅是一個基本檔案名稱,它標識在目前的目錄中的檔案。