目錄
8.3? shell 可識(shí)別的命令形式
8.3.1? 單條命令
8.3.2? 多條命令
8.3.3? 復(fù)合命令
8.3.4? 后臺(tái)命令
8.4? shell 變量和引用符
8.4.1? 環(huán)境變量
plus. echo 命令的使用
8.4.2? 系統(tǒng)變量
8.4.3? 局部變量(用戶變量)
8.4.4? 單引號(hào)、雙引號(hào)、反撇號(hào)和花括號(hào)
8.4.5? 變量輸出命令 export
8.5? shell 的內(nèi)部命令
8.3? shell 可識(shí)別的命令形式
8.3.1? 單條命令
這是最常用的命令形式:
$ cat file1
本命令執(zhí)行完成后出現(xiàn) shell 提示符,再接收下一條鍵盤命令。
8.3.2? 多條命令
采用分號(hào)隔開多條命令:
$ pwd; who; date
第一條命令執(zhí)行完成后,無停頓地再執(zhí)行第二條命令,如此下去。運(yùn)行功能和效果與在鍵盤上逐條輸入命令并運(yùn)行是完全一樣的,其主要目的是提高鍵盤命令輸入效率。
8.3.3? 復(fù)合命令
① 管道前后的命令任意組合、同時(shí)運(yùn)行,形成功能更強(qiáng)大靈活的復(fù)合命令:
$ ps –e | grep student
- 查看 student 進(jìn)程的信息
- ps:查看服務(wù)器的進(jìn)程信息
- -e:列出全部的進(jìn)程
- grep student:匹配到 student 進(jìn)程
首先看看我們當(dāng)前運(yùn)行的進(jìn)程有哪些:
再來鎖定 tty2 進(jìn)程的信息:
② 括號(hào)內(nèi)的命令從左到右按順序執(zhí)行,且由一個(gè)子 shell 來單獨(dú)控制運(yùn)行,相當(dāng)于一個(gè)小的功能程序。方便靈活,運(yùn)行效率高:
$ (ls; pwd; ps) > run_log
- ls:列出目錄的內(nèi)容,包括文件和子目錄的名稱
- pwd:查看當(dāng)前工作目錄的完整路徑
8.3.4? 后臺(tái)命令
在普通命令行的行尾加上 & 符號(hào),表示將該命令放到后臺(tái)執(zhí)行:
$ ls -lR > file_list &
[1] 7981
注意:-lR 中是小寫的 L 和大寫的 R,- 是減號(hào)!
- ls -lR:將當(dāng)前目錄和子目錄下的文件(夾)以樹格式輸出
- [1]:當(dāng)前 shell 的后臺(tái)作業(yè)(進(jìn)程)序號(hào)
- 7981:當(dāng)前這個(gè)后臺(tái)進(jìn)程(ls 進(jìn)程)的進(jìn)程號(hào)(PID)
shell 啟動(dòng)該后臺(tái)進(jìn)程后不再等待該進(jìn)程結(jié)束,立即開始接受新的鍵盤命令——多進(jìn)程并發(fā),數(shù)量不限,充分利用系統(tǒng)資源。
8.4? shell 變量和引用符
① 每個(gè) shell 都可以設(shè)置一組變量來限定 shell 及其子程序的功能模式和取值范圍。
- 這些變量中有些是系統(tǒng)設(shè)置的,有些是由用戶設(shè)置的
② 每個(gè) shell 都可以有完全不同的變量設(shè)置,由此構(gòu)成各具特色的運(yùn)行環(huán)境。
③ 系統(tǒng)環(huán)境變量放在 /etc/profile 中,用戶環(huán)境變量放在用戶主目錄下的 .profile 文件中。用戶 shell 啟動(dòng)時(shí),先執(zhí)行 /etc/profile,再執(zhí)行用戶主目錄下的 .profile 。
④ 環(huán)境變量可以在 shell 運(yùn)行時(shí)動(dòng)態(tài)修改。
8.4.1? 環(huán)境變量
常用的 shell 環(huán)境變量
1. HOME 變量
HOME 變量用于標(biāo)識(shí)當(dāng)前用戶的主目錄,也是用戶登錄系統(tǒng)后的初始目錄。用戶自己建立的文件都保存在這個(gè)目錄以及這個(gè)目錄的子目錄下:
$ HOME=/usr/computer/student
2. PATH 變量
PATH 變量用于標(biāo)識(shí)鍵盤命令的搜索路徑。該變量的值是由若干個(gè)用冒號(hào)隔開的目錄名組成的,shell 收到用戶的鍵盤命令后,就從左至右依次在這些目錄中查找命令:
$ PATH=/bin:/usr/bin:$HOME/bin:./
# 將會(huì)搜索以下目錄
# /bin
# /usr/bin
# $HOME/bin
# 當(dāng)前目錄
3. SHELL 變量
SHELL 變量中保存的是當(dāng)前用戶的初始 shell 的路徑名稱:
$ SHELL=/bin/sh
4. TERM 變量
TERM 變量用于指定當(dāng)前用戶所用的終端類型:
$ TERM=vt100
5. PS1 變量
PS1 變量用于保存系統(tǒng)中的基本提示符,默認(rèn)值是 "$":
$ PS1=$
$ PS1=IVE:
IVE:
6. IFS 變量
IFS 變量用于 shell 在解釋命令行上的各個(gè)選項(xiàng)和參數(shù)時(shí),定義什么字符是這些選項(xiàng)和參數(shù)之間的間隔。通常為空白符:
$ IFS=
plus. echo 命令的使用
1、echo 的功能
功能:在標(biāo)準(zhǔn)輸出上顯示 echo 后面的字符串,或變量的值。
注意:當(dāng)字符串中帶空白符或其它控制字符時(shí),用引號(hào)將其括起來。
2、應(yīng)用舉例
$ echo 12345
12345
$ echo "department computer"
department computer
$ echo "My home directory is: $HOME"
My home directory is: /usr/teacher/david
$ echo –n "Input your choice (y/n) []"
Input your choice (y/n) []
- -e:打開反斜杠轉(zhuǎn)義
- -E:關(guān)閉反斜杠轉(zhuǎn)義(默認(rèn))
- -n:取消自動(dòng)換行
8.4.2? 系統(tǒng)變量
系統(tǒng)變量只能引用不能修改!常用系統(tǒng)變量:
$0 當(dāng)前shell程序的名字
$1 ~ $9 命令行上的第一到第九個(gè)參數(shù)
$# 命令行上的參數(shù)個(gè)數(shù)
$* 命令行上的所有參數(shù)
$@ 分別用雙引號(hào)引用命令行上的所有參數(shù)
$$ 當(dāng)前進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)(PID)
$? 上一條命令的退出狀態(tài)
$! 最后一個(gè)后臺(tái)進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)
what is 命令行的參數(shù):
$ ./test.sh arg[0] arg[1]
運(yùn)行 shell 程序的那行命令后面跟著的內(nèi)容就是命令行參數(shù)。
$ echo aa bb cc dd $$
aa bb cc dd 2391
$ cat file1 file2 > file3 2> errlog
$ echo $? 非0表示命令運(yùn)行失敗,錯(cuò)誤信息在errlog文件中
$ echo 空行,即echo輸出串尾隱含的換行符
$ echo This is a test. 單詞間多個(gè)空格
This is a test.
$ echo "This is a test." 用引號(hào)包括時(shí)結(jié)果如何
errlog 內(nèi)容:
cat: file1: 是一個(gè)目錄
cat: file2: 是一個(gè)目錄
8.4.3? 局部變量(用戶變量)
局部變量是用戶根據(jù)需要任意創(chuàng)建的。
- 變量名:由一個(gè)字母 + (零個(gè)到多個(gè)字母、數(shù)字或下劃線) 組成。
- 引用變量的值:在變量名前面加上 $ 符號(hào)。
$ AA=123 定義變量AA
$ echo $AA 引用變量AA的值
123 變量AA的值
$ B="this is a string" 定義變量B,字符串中有空格時(shí)用引號(hào)
$ echo $B 引用變量B的值
this is a string 變量B的值
8.4.4? 單引號(hào)、雙引號(hào)、反撇號(hào)和花括號(hào)
1、單引號(hào)和雙引號(hào)
shell 規(guī)定:
- 單引號(hào)禁止變量替換,元字符 $ 和 * 等保持其符號(hào)本身
- 雙引號(hào)允許變量替換,元字符 $ 和 * 等將被變量值替換
$ a="he is a student"
$ echo "She said: $a"
She said: he is a student echo執(zhí)行時(shí),替換了變量$a的值
$ b='The value of a is $a'
$ echo $b
The value of a is $a echo執(zhí)行時(shí),未替換了變量$a的值
2、反撇號(hào)
反撇號(hào)在鍵盤的左上方,將把其中的字符串當(dāng)作命令執(zhí)行:
$ a=date
$ echo $a
date 變量a的值是字符串date
$ b=`date` 反撇號(hào)中的字符串作為命令名
$ echo $b
Sat Feb 1 16:28:19 Beijing 2003 變量b的值是反撇號(hào)中命令的執(zhí)行結(jié)果
3、花括號(hào)
花括號(hào)將變量名和后面的字符串區(qū)分開:
$ c="There is a teach"
$ echo "$cer reading room"
reading room 未定義變量cer,其值用空串替代
$ echo "${c}er reading room"
There is a teacher reading room
8.4.5? 變量輸出命令 export
新的 shell 變量定義后或已有的 shell 變量修改值后,如果未經(jīng) export 命令輸出,則只在當(dāng)前的 shell 中起作用,對其各個(gè)子 shell 不產(chǎn)生任何影響。
經(jīng)過 export 命令輸出的變量才能對當(dāng)前 shell 的各個(gè)子 shell、以及子 shell 的子 shell 起作用。
$ PATH=$PATH:./
$ export PATH
說明:
① export 后面的變量名前不加 $ 符號(hào)
② 經(jīng) export 輸出給子 shell 的變量如果在子 shell 中被修改,則只影響子 shell,不影響父 shell;如果在子 shell 中被 export 輸出,則也只影響子 shell 的子 shell
③ export 命令常用在 .profile 文件中
8.5? shell 的內(nèi)部命令
exit、echo、cd、pwd、time and so on
shell 的內(nèi)部命令包含在 shell 內(nèi)部,用戶可以像使用普通命令一樣使用這些命令。所不同的是這些命令在 shell 內(nèi)部識(shí)別和執(zhí)行,而不是文件系統(tǒng)中一個(gè)單獨(dú)的可執(zhí)行的程序。例如:
cd 改變當(dāng)前工作目錄
pwd 顯示當(dāng)前工作目錄
time 顯示當(dāng)前shell運(yùn)行命令所花費(fèi)的時(shí)間
例如:文章來源:http://www.zghlxwxcb.cn/news/detail-487878.html
$ time ls -lR /usr > flist
real 2m 17.32s 該ls進(jìn)程的總運(yùn)行時(shí)間
user 0m 7.63s 其中用戶程序部分的運(yùn)行時(shí)間
sys 0m 6.79s 其中操作系統(tǒng)核心部分運(yùn)行時(shí)間
文章來源地址http://www.zghlxwxcb.cn/news/detail-487878.html
到了這里,關(guān)于DJ8-2 shell 的命令形式、shell 的變量、shell 的內(nèi)部命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!