【Shell】-- 基礎知識(2),shell--基礎知識
1、Shell指令碼運行方式
建立Shell指令檔,一般以.sh結尾(如:example.sh)
Shell指令碼運行方式如下:
- 添加 ‘x’ 執行許可權(相對或絕對路徑執行)
- 使用bash或source(.)命令呼叫指令碼檔案
2、Bash的準系統
(1)、曆史命令history
-c:清空曆史命令
-w:將緩衝中的曆史命令儲存到設定檔當中(~/.bash_history)
調用曆史命令的方法:
①、使用上、下鍵調用
②、使用“!n”重複執行第n條曆史命令
③、使用“!!”重複執行上一條命令
④、使用“!字元”重複執行最近一條以此字元開頭的命令
(2)、命令別名alias
格式:alias 別名=‘原命令’ [選項]
例:alias ls=‘ls -l’
設定檔:
單個使用者:~/.bashrc
所有使用者:/etc/bashrc
(對此處兩個設定檔不太明白同學,可以理解為一個為全域變數,一個為局部變數。)
不同類型的命令執行優先順序:
No.1、相對或絕對路徑的方式執行命令
No.2、別名命令
No.3、bash內建命令
No.4、根據環境變數定義的目錄查詢到的命令
(3)、Bash常用快速鍵
3、輸入輸出重新導向
(1)、Bash的標準輸入輸出
裝置 裝置檔案名稱 檔案描述符 類型
鍵盤 /dev/stdin 0 標準輸入
顯示器 /dev/stdout 1 標準正確輸出
顯示器 /dev/stderr 2 標準錯誤輸出
(2)、輸出重新導向
(3)、輸入重新導向
命令:wc 【選項】 【檔案名稱】
-c:統計字數(字元)
-w:統計單詞數(字串)
-l :統計行數
例如:
wc < 檔案(統計檔案中的字數,單詞數,行數)
wc << 字元(統計從開始字元到結束字元中的單詞,字,行數)
4、多命令順序執行
5、管道符
格式:命令1 | 命令2(將命令1的標準輸出作為命令2的標準輸入)
xargs實現將命令1的標準輸出作為命令2的選項
例如:
echo “--help” | cat
echo “--help” | xargs cat
6、萬用字元
7、Bash中其他特殊符號
父Shell和子Shell(使用pstree查看)
使用Shell不影響父Shell,在()中執行的命令,在新開啟Shell中執行,不影響本Shell
8、變數
(1)、變數規範
可以由字母、數字和底線組成,但是不能以數字開頭,變數中間不能有空格。
(2)、注意事項
v 在Bash中,變數的預設類型都是字串型,如果需要進行數值運算,則需要轉換為數值型
v 變數用等號連結值,等號左右兩側不能有空格
v 變數若有空格,需要使用單引號或雙引號包括
v 雙引號“”括起來的$、|、``都有特殊含義
v 單引號括起來的都是一般字元
v 如果需要增加變數值,進行變數值疊加,”$變數名”或”${變數名}”,eg:PATH=$PATH:/sh
v 變數名建議大寫,易於區分
(3)、變數分類
v 使用者自訂變數
v 環境變數
v 位置參數變數
v 預定義變數
a) 調用:
echo $變數名
例如:echo $PATH
b) 查看:
set [選項] ---- 直接斷行符號顯示系統中所有變數
-u 調用沒有聲明的變數時會報錯(建議使用)
-x 命令執行前,先將命令輸出一次
c) 刪除:
unset 變數名
2、環境變數
a) 設定:
export 變數名=值------(聲明~/.bash_profile)
#export聲明的是環境變數
b) 查看:
env
常用格式: env | grep 變數
#set中包括env,env查詢環境變數,set查詢所有變數
c) PS1變數:定義命令提示字元
PS1可支援以下選項:
v \d:顯示日期,格式為“星期月日”
v \H:顯示完整的主機名稱。如預設主控件名“localhost.localdomain”
v \h:顯示簡寫主機名稱。如預設主控件名“localhost”
v \t:顯示24小時制時間,格式為“HH:MM:SS”
v \T:顯示12小時制時間,格式為“HH:MM:SS”
v \A:顯示24小時制時間,格式為“HH:MM”
v \@:顯示12小時制時間,格式為“HH:MM am/pm”
v \u:顯示目前使用者名
v \v:顯示Bash的版本資訊
v \w:顯示當前所在目錄的完整名稱
v \W:顯示當前所在目錄的最後一個目錄
v \#:執行的第幾個命令
v \$:提示符。如果是root提示符為“#”,如果是普通使用者提示符為“$”
3、調用格式:
d) LANG語系變數----定義主語系環境變數
i.查看Linux支援的語系
locale –a | more
ii.當前使用可用語系
locale
iii.查詢預設語系
cat /etc/sysconfig/i18n
iv.修改案頭版中文為英文
export LANG=en_US.UTF-8
xdg-user-dirs-gtk-update
4、位置參數變數
v $*顯示所有參數(作為整體接收)
v $@顯示所有參數(分開接收)
v $#顯示參數個數
預定義變數
v $? 判斷上一條命令是否正常執行
錯誤數值非0,正確的是0
v $$ 當前進程的PID
v $!最後一個後台執行的命令的進程
注意事項:
v 變數名可以自訂,如果不指定變數名,會把輸入儲存入預設變數REPLY
v 如果只提供了一個變數名,則整個輸入行賦予該變數
v 如果提供了一個以上的變數名,則輸入行分為若干字,一個接一個地賦予各個變數,而命令列上的最後一個變數取得剩餘的所有值
5、接受鍵盤輸入
格式:read [選項] [變數名]
選項:-p “提示資訊”:在read等待時輸入的資訊
-t 秒數 :read等待的秒數(到達秒數自動跳轉下一條)
-n 字元數 :read最多能接收的字元數
-s :隱藏輸入的資訊
註:若特殊選項不換行,使用\n控制轉換符