linux常用系統變數

2021-06-06 11:00:46 字數 3407 閱讀 5720

常用系統變數

$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 對這段話的理解 如果是互動式系統則...