常用系統變數
$0 當前程式的名稱
$n 當前程式的第n個引數,n=1,2,…9
$* 當前程式的所有引數(不包括程式本身)
$# 當前程式的引數個數(不包括程式本身)
$$ 當前程式的pid
$@ 與$#相同,但是使用時加引號,並在引號中返回每個引數
$- 顯示shell使用的當前選項,與set命令功能相同
$! 執行上乙個指令的pid(好像不行?)
$? 執行上乙個指令的返回值
條件判斷:expression為字串操作
-n str
字串str是否不為空
-z str
字串str是否為空
str1 =str2 str1是否與str2相同
str1!=str2 str1是否與str2不同
條件判斷:expression為整數操作
expr1 -a expr2 如果 expr1 和 expr2 評估為真,則為真
expr1 -o expr2 如果 expr1 或 expr2 評估為真,則為真
條件判斷:expression為bool操作
int1 -eq int2 如果int1等於int2,則為真
int1 -ge int2 如果int1大於或等於int2,則為真
int1 -gt int2 如果int1大於int2 ,則為真
int1 -le int2 如果int1小於或等於int2 ,則為真
int1 -lt int2 如果int1小於int2 ,則為真
int1 -ne int2 如果int1不等於int2 ,則為真
條件判斷:expression為檔案操作
-b 是否塊檔案
-p 檔案是否為乙個命名管道
-c 是否字元檔案
-r 檔案是否可讀
-d 是否乙個目錄
-s 檔案的長度是否不為零
-e 檔案是否存在
-s 是否為套接字檔案
-f 是否普通檔案
-x 檔案是否可執行,則為真
-g 是否設定了檔案的 sgid 位 -u 是否設定了檔案的 suid 位
-g 檔案是否存在且歸該組所有 -w 檔案是否可寫,則為真
-k 檔案是否設定了的貼上位
-t fd fd 是否是乙個與終端相連的開啟的檔案描述符(fd 預設為 1)
-o 檔案是否存在且歸該使用者所有
shell變數的分類
v環境變數
v預定義變數
v位置變數
v使用者自定義變數(本地變數)
常用環境變數echo $user
表示當前使用者的登入名稱,值與whoami命令的結果一致
echo $uid
表示當前使用者的使用者名稱,該變數的值與」id-u」命令的結果一致
echo $shel
表示當前使用者的登入shell,值與」passwd」檔案中的shell欄位一致
echo $home
表示當前使用者的登入目錄(宿主目錄),值與」psaawd」檔案中home欄位一致
echo $pwd
表示使用者當前所在的目錄,值與pwd命令的結果一致
echo $path
表示當前使用者的命令搜尋路徑,即使用者不指定全路徑名執行命令時,shell程
序將在哪些目錄以及按照何種順序進行命令的搜尋
echo $ps1 和echo $ps2
環境變數配置檔案
/etc/bashrc
系統中使用者登陸是預設載入的變數
/etc/profile
/home/~/.bash_profile
使用者個人環境變數 為隱藏檔案位於屬主目錄下
/home/~/.bashrc
使用者自定義變數自定義變數的設定
$ day=sunday
自定義變數
自定義的變數一定要大寫
$ echo $day
自定義變數的檢視與引用
$ export day
自定義變數的輸出
$ unset day
自定義變數的清除
使用tab鍵可以補全 命令名 或檔名和資料夾名
使用上下方向鍵瀏覽已輸入命令(歷史命令)
$ history
歷史命令的檢視
屬主目錄/.bash_history
使用者命令歷史儲存檔案
$ history -c
命令歷史的清除
$ alias
顯示已定義的別名
$ alias lujing='pwd'
命令別名的定義 把pwd 定義為lujing
$ alias lujing
取消lujing的別名定義
$ unalias -a
取消所有定義的別名
系統別名定義配置檔案在 /etc/profile.d/ 目錄的中
輸入輸出檔案
檔案編號
預設裝置
標準輸入
0 鍵盤
標準輸出
1 顯示器
標準錯誤輸出
2 顯示器
輸入重定向
$ wc < test
把test重定向到wc統計「字數 單詞數 行數」
輸出重定向
$ ls /etc/ > etcdir
將標準輸出重定向到etcdir檔案
$ ls /etc/sysconfig/ >> etcdir 將標準輸出重定向追加到etcdir檔案 >>代表追加
$ nocmd 2> errfile
將錯誤輸出重定向到errfile檔案
$ ls afile bfile &> errfile
將標準輸出和錯誤輸出重定向到errfile檔案
管道 cat 123 | head -5
把第乙個處理結果交給|以後的引數處理
shell指令碼概念:類似與dos批處理、以文字方式儲存、執行是不用編譯、具有可執行(x)屬性
/etc/init.d/
下存在這很多系統服務的指令碼
vi hello.sh
建立並編輯指令碼 hello
輸入 echo hi,magic 儲存 並用chmod 設定可執行許可權
$ bash hello.sh
使用shell命令程式執行指令碼程式
$ . hello.sh
使用「.」命令執行指令碼程式
$ ./hello.sh
直接執行具有執行屬性的指令碼程式 (必須具有可執行許可權)
linux常用系統變數
常用系統變數 0 當前程式的名稱 n 當前程式的第n個引數,n 1,2,9 當前程式的所有引數 不包括程式本身 當前程式的引數個數 不包括程式本身 當前程式的pid 與 相同,但是使用時加引號,並在引號中返回每個引數 顯示shell使用的當前選項,與set命令功能相同 執行上乙個指令的pid 好像不...
常用系統變數
常用系統變數 sy langu 當前登入語言 sy uname 使用者名稱 sy datum 伺服器日期 sy subrc 執行狀態 0表示成功 sy tcode 當前的事務 sy tabix 當前處理的內錶的index sy index 迴圈的次數 do while sy uzeit 當前時間 s...
linux 系統變數
linux 系統變數 在linux配置檔案中經常用到。比如在 etc profile配置檔案中有如下 for i in etc profile.d sh do for r i then if then i else i dev null 2 1 fifi done 對這段話的理解 如果是互動式系統則...