參考文章:1 http://blog.csdn.net/wuwenxiang91322/article/details/9259877 通過chmod改變文件權限
補充知識:1linux文件的三種身份和四種權限,三種身份分別為:
對于每個身份,又有四種權限,分別為:
2 Linux中有兩種表示文件權限的方式,分別為數字以及符號表示方式。
3 chmod以數字形式改變文件權限?。篶hmod 755 test.sh?。ń忉專鹤x 寫 執行 權值依次是:4?。病。薄《罚担狄来未碛脩簟∮脩艚M 其他用戶對應的權 限,將755換算成 字符形式,為rwxr-xr-x,也就是說文件的擁有者、所屬群組 以及其他用戶都可以讀取與運行test.sh這個文件,但是只有擁有者自己可以寫入這個文 件,也就是其他人無權修改test.sh這個文件。(當然 root用戶無此限制,想改誰就該誰,這也是一個體現root賬號至高無上權力的體驗)
4 chmod以字符形式改變文件權限 :
chmod u+x test.sh 只給擁有者加上可執行權限
chmod g+x test.sh 只給群組身份加上可執行權限
chmod o+x test.sh 只給其他人身份加上可執行權限
chmod a+x test.sh 給所有人都賦予x權限
chmod o-x test.sh 如果要去掉某個身份的某個權限,只需要將+變為-即可,例如去除其他人身份的可執行權限:
5 shell 腳本的編寫流程如下:
6編寫shell的習慣:一般情況下,最后在文件打開始寫上注釋.第一,因為shell有多個版本,在不同的linux操作系統下,shell是不 同的.比如,在Ubuntu下是bash,所以首先表明編寫的是什么shell腳本,如果不知道,在終端中輸入echo $SHELL查看shell版 本.第二,寫上本shell腳本的注釋說明,即函數的目的,參數的意義.這其實和編寫其他編程語言是一樣的,便于別人了解自己所寫腳本打含義.
正文:一 變量
shell 語言中可以使用變量,不過這里的變量不同于其他的高級語言中的變量。shell 腳本中的變量在使用時并不需要提前定義,也就是說每一個變量都可以在程序員需要時就使用。因為大部分 Linux 命令使用的是小寫字母,而大多數的 shell 中的環境變量是使用大些字母表示的。因此,在 shell 腳本中出現的用戶自定義變量最好使用小寫字母,這樣可以很好地區別 shell 中的環境變量。可以在終端中輸入 set查看全部系統定義變量.使用 unset 命令可以刪除變量的賦值,使變量的值為空。如果用戶需要清除一個變量的值可以這樣做,其等效于將這個變量賦值為空。shell中腳本變量對大叫寫敏感的,這與linux以及很多高級編程語言一樣的.注釋使用"#"
二 退 出 狀 態
exit 命令用于結束一個 shell 腳本的運行,就像 C 語言中的調用“exit(0)”,或者在main 函數中“return 0;”一樣。shell 腳本在結束運行時也返回一個值,并且這個值會傳遞給調用腳本的父進程。這個父進程通常就是 shell,但是有些時候一些其他的用戶程序也會調用 shell 腳本。父進程接收到這個值(其實這個值作為子進程結束狀態的一部分)后,做下一步的處理.每個 shell 命令在結束執行時都會返回一個退出狀態碼。成功執行了該命令則返回 0;否則,不成功的命令將返回一個非零值。非零值通常都被解釋成一個錯誤碼,從慣例的角度來講返回 0 代表正常。如果返回一個非零值,則表示進程出現了異常。這時候需要根據退出狀態碼找到進程退出的原因。通常來講程序員和系統管理員之間應當約定一個退出狀態碼的協議,這樣便于系統管理員幫助程序員發現錯誤。注意:退出狀態碼必須是十進制數,范圍必須是 0 至 255。當腳本以不帶參數的 exit 命令來結束時,腳本的退出狀態碼就由腳本中最后執行的命令來決定。也就是 exit 之前的命令。下面實例演示了 shell 腳本的退出狀態碼的使用,該腳本調用一個用戶編寫的簡單程序。讀者可以對比使用 exit 命令退出和不使用該命令退出的兩個版本的 shell 腳本的區別。
三 條 件 測 試
1 條件測試命令一般有兩種格式。1 test condition?。病 condition ] 注意:使用“[ ]”時,要在條件和“[ ]”之間加上空格。測試文件狀態的條件表達式很多,但是最常用幾個如下所示。-d 文件是否為目錄;-s 文件是否長度大于 0;-f 文件是否是普通文件;-L 文件是否是符號鏈接;-u 文件是否設置了 suid 位;-r 文件是否可讀;-w 文件是否可寫;-x 文件是否可執行。當條件測試的返回狀態是 0 時,則表示測試成功,否則失敗。下面實例測試 test.txt 文件是否可讀、可寫和可執行的。該腳本中使用兩種條件測試的方法,讀者可以對照理解。(1)在 vi 編輯器中編輯該腳本如下:#!/bin/sh# file.sh 測試 test.txt 文件是否可讀可寫可執行#測試 test.txt 文件的讀權限,使用“[ ]”的方法[ -r test.txt ]echo $?#測試 test.txt 文件的寫權限,使用“[ ]”的方法[ -w test.txt ]echo $?#測試 test.txt 文件的執行權限,使用“[ ]”的方法[ -x test.txt ]echo $?#測試 test.txt 文件的讀權限,使用“test 命令”的方法test -r test.txtecho $?#測試 test.txt 文件的寫權限,使用“test 命令”的方法test -w test.txtecho $?#測試 test.txt 文件的執行權限,使用“test 命令”的方法test -x test.txtecho $?exit 0(2)編寫好腳本后,增加 shell 腳本文件的可執行權限??梢允褂?chmod 命令增加 file.sh文件的可執行權限。$ chmod u+x file.sh(3)使用 ls 命令查看 test.txt 的權限信息。$ls –l test.txt-rw-r--r--1root0Feb704:50test.txt(4)在 shell 中運行該 shell 腳本如下:001001運行結果說明 test.txt 文件只有可讀寫的權限,但是沒有可執行的權限。
下面實例測試,傳入腳本的文件名的文件是否是普通文件、目錄文件和符號鏈接。該腳本使用位置變量作為文件名進行測試。(1)在 vi 編輯器中編輯該腳本如下:#!/bin/sh# test.sh 測試文件的種類#第一個文件是一個普通文件[ -f $1]echo $?#第二個文件是一個目錄文件[ -d $2]echo $?#第二個文件是一個符號鏈接[ -l $3]echo $?#運行的 shell 腳本本身也是一個普通文件[ -f $0]echo $?exit 0(2)編寫好腳本后,增加 shell 腳本文件的可執行權限??梢允褂?chmod 命令增加 test.sh文件的可執行權限。$ chmod u+x test.sh(3)使用 mkdir 命令創建一個目錄 dir。$mkdir dir(4)使用 symlink 命令創建一個符號鏈接。$symlink link test.txt(5)在 shell 中運行該 shell 腳本如下:$./test.sh test.txt dir link0000試驗結果說明每一步的測試都是成功的,每個文件的類型都和預期的一樣。測試時使用邏輯操作符與 C 語言類似,shell 腳本中同樣提供三種邏輯操作完成此功能。邏輯運算符通常和分支語句配合使用,實現程序執行流程的不同。-a 邏輯與,兩個操作數均為真,結果為真,否則為假。-o 邏輯或,兩個操作數一個為真,結果為真,否則為假。! 邏輯非,條件為假,結果為真,否則為假。
新聞熱點
疑難解答