国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

Shell學(xué)習(xí)筆記

2024-06-28 13:23:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
Shell學(xué)習(xí)筆記

都是一些零碎的知識(shí),遇到什么寫什么吧!

1、shell腳本參數(shù)

C用(int *argc, char *argv[])處理參數(shù),python sys.argv[0](腳本名字)、sys.argv[1]、sys.argv[2]等表示各個(gè)參數(shù),shell腳本自己處理命令參數(shù)的方式如下:

(1) $# 傳遞到腳本的參數(shù)個(gè)數(shù),不包括腳本命令本身。如判斷參數(shù)是否是2個(gè):

   #!/bin/bash   if [ $# != 2 ]; then                                                                                                                          echo "Error! should need 2 parameters!"       exit 1   fi

(2) $0 腳本名字;$1,$2,......依次表示第一個(gè)參數(shù),第二個(gè)參數(shù),。。。。。。

(3) $* 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù),此選參數(shù)可超過(guò)9個(gè)。如:

若腳本參數(shù)為./test.sh arg1 arg2,則執(zhí)行echo  $*,結(jié)果為:"arg1 arg2"

(4) $$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)。

(5) $! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程ID號(hào)。

(6) $@ 與$*相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)。如:

若腳本參數(shù)為./test.sh arg1 arg2,則執(zhí)行echo  $*,結(jié)果為:"arg1""arg2"  與#*的差別,每個(gè)參數(shù)都是一個(gè)單獨(dú)的字符串。

(7) $- 顯示shell使用的當(dāng)前選項(xiàng),與set命令功能相同。(搞不懂)

(8) $? 顯示最后命令的退出狀態(tài)。 0表示沒(méi)有錯(cuò)誤,其他任何值表明有錯(cuò)誤。如:

ls ./echo $?$?為0表示ls命令執(zhí)行成功。

2、管道與重定向

管道操作符”|“,輸出左邊命令傳出的正確輸出信息,對(duì)與stderr信息沒(méi)有直接處理能力。然后,傳遞給右邊的命令,作為stdin。

要求:

(1) 管道命令只處理前一個(gè)命令正確輸出,不處理錯(cuò)誤輸出;

(2) 管道命令右邊命令,必須能夠接收標(biāo)準(zhǔn)輸入流命令才行。如cat test.txt | ls ,ls不支持stdin,左邊的數(shù)據(jù)將被丟棄。

$ cat display.sh | lscall.py     libtest3.so  libtest.so    send_mail_text.py  test3.cpp  test4.cppdisplay.sh  libtest4.so  PRintfile.sh  test2.cpp          test3.so   test.c

重定向:

左邊命令應(yīng)該有標(biāo)準(zhǔn)輸出 > 或者>> 右邊只能是文件

左邊命令應(yīng)該有標(biāo)準(zhǔn)輸入 < 或者<< 右邊只能是文件

管道是觸發(fā)了兩個(gè)子進(jìn)程執(zhí)行"|"兩邊的程序,而重定向是在一個(gè)進(jìn)程內(nèi)執(zhí)行。

3、shell與export首先要知道用戶登錄linux系統(tǒng)之后,系統(tǒng)會(huì)啟動(dòng)一個(gè)用戶shell。在該shell下執(zhí)行shell腳本,會(huì)創(chuàng)建一個(gè)子shell,子shell可以共享父shell的環(huán)境變量,父shell卻不能共享定義在子shell中的環(huán)境變量。子shell中定義的環(huán)境變量只在該子shell中有效。

在shell中執(zhí)行程序時(shí),shell會(huì)提供一組環(huán)境變量,export可新增、修改和刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使用。export設(shè)置的變量效用只在該次登錄中有效。

語(yǔ)法:export [-fnp] [變量名稱]=[變量設(shè)置值]

參數(shù):

-f代表[變量名稱中為]函數(shù)名稱。

-n刪除指定變量,實(shí)際上并未刪除,只是不會(huì)輸出到后續(xù)指令的執(zhí)行環(huán)境中。

-p列出所有shell賦予程序的環(huán)境變量,默認(rèn)參數(shù)。如:

Test@Ubuntu:~/code$ export   //等同 export -pdeclare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_session_ID="1"
</pre><pre name="code" class="plain">Test@ubuntu:~/code$ export mytest="Hi"
<pre name="code" class="plain">Test@ubuntu:~/code$ export declare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_SESSION_ID="1"declare -x mytest="Hi"

Test@ubuntu:~/code$ export -n mytestTest@ubuntu:~/code$ export declare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_SESSION_ID="1"

因?yàn)閑xport添加的環(huán)境變量是臨時(shí)有效,要想永久有效就得添加到文件中:

(1)在/etc/profile文件中添加變量,對(duì)所有用戶永久有效。例如:
#vi    /etc/profileexport CLASSPATH=./java_HOME/lib;$JAVA_HOME/jre/libexport PATH="$PATH:/home/Test"    //在原PATH變量上添加數(shù)據(jù)
<span style="font-family: Arial, Helvetica, sans-serif;">注:修改文件后要想馬上生效還要運(yùn)行source /etc/profile,不然只能在下次重進(jìn)此用戶時(shí)生效。</span>
(2)在用戶目錄下的.bash_profile(該文件在不同的linux系統(tǒng)下,文件名不同,有的是.profile,基本以profile結(jié)尾,可以用man bash查詢)文件中添加環(huán)境變量,對(duì)該用戶永久有效。用法跟上面相同。關(guān)于source,用法為:source FileName,作用是在當(dāng)前bash環(huán)境下讀取并執(zhí)行FileName中的命令,該FileName可以沒(méi)有執(zhí)行權(quán)限。注意該命令中的腳本是在當(dāng)前bash環(huán)境下執(zhí)行,沒(méi)有產(chǎn)生子shell,所以腳本添加的變量也能被當(dāng)前shell所共享,跟直接執(zhí)行腳本產(chǎn)生子shell不太一樣。如同樣的腳本Test.sh:
#!/bin/bash     export mytest="Hi"
用source Test.sh方式執(zhí)行,mytest環(huán)境變量就可以添加到當(dāng)前shell環(huán)境中,./Test.sh方式直接執(zhí)行則不能。另外,source命令常用“.”來(lái)代替。source Test.sh與 . Test.sh等效。:


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 名山县| 九寨沟县| 化州市| 枝江市| 绍兴县| 桃园县| 柯坪县| 遵义县| 和田市| 连江县| 苍溪县| 梅州市| 茶陵县| 专栏| 宁国市| 扶沟县| 东兰县| 方山县| 白山市| 沽源县| 天津市| 如东县| 隆尧县| 仪陇县| 屯门区| 江安县| 大名县| 太原市| 松潘县| 印江| 庆云县| 岐山县| 石狮市| 韶山市| 望江县| 横峰县| 沙河市| 颍上县| 青冈县| 双桥区| 吴忠市|