999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

例談Bash與Tcsh的主要區別

2008-12-31 00:00:00石慶冬
電腦知識與技術 2008年33期

摘要:Bash與tcsh是目前Unix/Linux操作系統中兩種流行的shell。通過舉例,對這兩種shell常用的功能和特性進行了對比,內容包括變量賦值、數組、環境設置、命令參數、數值計算、條件流程控制、循環語句和信號處理等。這些比較是對這二者主要區別的一個很好的總結,能夠為bash與tcsh的學習和使用者提供便利和幫助。

關鍵詞:Unix;Linux;Bash;Tcsh

中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2008)33-1390-03

Main Differences between Bash and Tcsh by Examples

SHI Qing-dong

(Motorola (China) Technologies Ltd., Beijing 100102, China)

Abstract: Bash and tcsh are two kinds of popular shell in the present Unix/Linux operating system. Through some examples, this paper has carried on the contrast to more commonly used functions and the characteristics of the two kinds of shell, the content including variable assignment, array, environment setting, command parameters, numerical calculus, condition flow control, looping construct, signal-catching and so on. The contrast is a very good summary that distinguish the two, which can provides convenience and help for the bash and tcsh learners and users.

Key words: Unix; Linux; Bash; Tcsh

1 引言

Shell是提供用戶與操作系統之間交互的特殊程序,它是一個解釋器,解釋用戶輸入的命令。Tcsh與bash是Unix/Linux操作系統中兩種最常用的shell。Bash,即Bourne Again shell,是Bourne shell的超集,是絕大多數Linux操作系統的缺省shell,直觀而又靈活,適于初學者使用,同時對高級和專業用戶來說也是一個強有力的工具。Tcsh,即Turbo C shell,是csh(C shell)的超集,語法類似于C語言,因為C語言的廣泛使用,tcsh受到廣大程序員的青睞。下面通過舉例,談談二者主要的不同點。

2 變量賦值

給變量賦值,bash直接賦值即可,tcsh則需要使用set命令(見表1)。

Bash與tcsh都可以將某個命令的輸出賦給一個變量,賦值時,命令的兩邊為反引號,即`command`,bash還可以用$(command)。下例,將date命令的輸出(當前日期)賦給變量today(見表2)。

Bash與tcsh都能夠通過鍵盤輸入對變量賦值。Bash使用read命令讀取鍵盤輸入,tcsh使用set命令,并有兩種方法,一種使用\"$<\"(兩邊為雙引號),另一種使用`line`(兩邊為反引號),(見表3)。

3 數組

Bash與tcsh都支持數組,其賦值方法與普通變量的一致。需要注意的是,bash數組的下標從0開始,tcsh的從1開始(見表4)。

修改某個元素的值,并顯示數組所有元素及元素個數(見表5)。

4 環境設置

對于bash用戶,可以修改其主目錄下面的隱藏文件.bashrc來設置自己的環境; tcsh相應的文件是.tcshrc。最常見的環境設置項包括環境變量、別名和系統提示。

4.1 環境變量設置

設置環境變量時,bash使用export命令,tcsh使用setenv命令。例如,在搜索路徑后面添加/usr/sbin(見表6)。

4.2 別名設置

設置別名時,bash需要帶等號,tcsh不能帶等號。下列,設置別名后,運行xe就相當于運行/usr/bin/xemacs(見表7)。

4.3 系統提示設置

對于bash,通過設置內置變量PS1來設置系統命令行提示符,比較常見的是將PS1設為\"[\\h] \\w \\$ \",\\h表示機器名,\\w表示當前工作目錄,當前工作目錄為用戶的主目錄時顯示為~,\\$顯示為$。Tcsh相應的內置變量是prompt,比較常見的是將prompt設為\"[%m] %~ %# \",%m表示機器名,%~表示當前工作目錄,同樣,當前工作目錄為用戶的主目錄時顯示為~,%#顯示為>。下列當中,bash環境的機器名為terrylnx01,tcsh環境的機器名為margesrv02(見表8)。

對PS1和prompt的設置,都各自有很多可選項,這里就不一一列舉了。此外,bash還有PS2、PS3和PS4等用于設置系統提示的內置變量,tcsh還有prompt2和prompt3等內置變量。

5 命令參數

Bash和tcsh腳本都可以帶參數,bash通過$1、$2、$3等讀取參數;tcsh既可以用$1、$2、$3,也可以用$argv[1]、$argv[2]、$argv[3]等讀取參數。Bash通過$#得到參數個數;tcsh則用$#argv,也可以用$#得到參數數量。下面兩段腳本作用相同,先打印人數(參數個數),然后向第一個人(參數)說Hello(見表9)。

6 數值計算

Bash的數值計算要么在雙括號中進行,要么在let后面進行;tcsh的數值計算在@后面進行,@的后面和雙目運算符的兩邊必須有空格(見表10)。

7 條件流程控制

7.1 條件判斷

Bash與tcsh對于兩個整型數的比較判斷符不一樣,見表11。

對于字符串,tcsh只能比較兩個字符串是否相等,而bash能夠按照字典順序判斷兩個字符串的大小關系。判斷字符串是否為空串,bash可以用“-z $string”,而tcsh只能通過與空串的比較來判斷(見表12)。

7.2條件控制

Bash和tcsh都有if、if/else、if/elseif/else和switch/case等條件控制語句,二者條件控制語法的思想是一致的,具體的語法是不同的。表13中兩段腳本的作用相同,根據分數score的值,輸出及格Pass或者不及格Fail。

下面兩段腳本的作用也是相同的,變量day的值為1、2、3時,對應地輸出Monday、Tuesday或Wednesday(見表14)。

8 循環語句

Bash支持while和until循環,tcsh支持while循環而不支持until循環。下面兩段腳本的作用相同,計算1+2+…+100的值,結果存儲在變量sum中(見表15)。

Bash支持for循環,tcsh也支持,但關鍵字是foreach。下面兩循環語句作用相同,將主目錄下的所有的txt文件備份,文件名后面加“_bak”作為備份文件名(見表16)。

另外,tcsh支持goto和repeat語句,bash不支持。例如,repeat 5 uname就是執行5次uname命令。

9 信號處理

Bash用trap命令捕捉信號以及采取相應的處理動作,語法格式為trap 'command-list' signal。Tcsh相應的命令為onintr,語法格式為onintr [-| label],此命令控制tcsh在被中斷時的動作:不帶任何參數,將采取默認的動作,即中斷shell,回到腳本開始運行的地方;如果帶-參數,則忽略中斷;如果用label參數,tcsh將執行goto label,即執行label標號后面的命令。下面兩段腳本的作用相同,每2秒打印一次“Program is running”,當輸入Ctrl-C時,打印“Interrupt”并終止運行(見表17)。

10 結束語

Bash與tcsh都擁有各自的內置命令和變量,二者間不是一一對應的,有些能夠找到對應的命令或變量,有些則不能,從前面的內容可以發現這一點,再例如,bash支持函數和select語句,tcsh不支持。

以上講述了bash與tcsh的主要不同之處,所舉的例子大多點到為止,但對這二者的主要區別是一個很好的總結,為掌握了其中一種shell想使用另一種的用戶提供了便利,也為已經熟悉了這兩種shell,仍時常弄混的用戶提供了幫助。

參考文獻:

[1] 邢國慶.UNIX從入門到精通(普及版)[M].北京:電子工業出版社,2006.

[2] 孟慶昌,牛欣源. Linux教程[M].2版.北京:電子工業出版社,2007.

[3] Quigley E.Linux Shell實例精解[M].吳雨濃,譯.北京:中國電力出版社,2002.

主站蜘蛛池模板: 国产99精品视频| 日韩中文无码av超清| 精品自拍视频在线观看| www成人国产在线观看网站| 伊人久久青草青青综合| 国产一区二区福利| 中文字幕欧美日韩| 国产亚洲精品精品精品| 日韩天堂在线观看| 国产一区在线观看无码| 亚洲三级片在线看| 亚洲一区精品视频在线| 欧美色视频网站| 日本AⅤ精品一区二区三区日| 国产91av在线| 日韩在线播放中文字幕| 国产精品无码一二三视频| 国产欧美精品午夜在线播放| 日韩最新中文字幕| 欧美日韩中文字幕在线| 毛片基地美国正在播放亚洲| 亚洲婷婷在线视频| 亚洲欧美不卡中文字幕| 免费jjzz在在线播放国产| 亚洲综合经典在线一区二区| 777午夜精品电影免费看| 亚洲人成网站在线播放2019| 暴力调教一区二区三区| 日本在线亚洲| 国产丝袜啪啪| 波多野结衣久久精品| 国产精品伦视频观看免费| 久久精品国产999大香线焦| 无码免费视频| 91精品久久久久久无码人妻| 99热这里只有免费国产精品| 99热这里只有精品在线观看| 综合色天天| 99热最新在线| 国产凹凸视频在线观看| 在线免费观看a视频| 2021国产在线视频| 亚洲欧美人成电影在线观看| 美女无遮挡免费网站| 亚洲91精品视频| 精品福利视频导航| 特级aaaaaaaaa毛片免费视频 | 国产精品九九视频| 国产午夜精品一区二区三区软件| 国模在线视频一区二区三区| 熟妇无码人妻| 国产三级成人| 国产亚洲欧美在线中文bt天堂| 色综合狠狠操| 免费jjzz在在线播放国产| 777午夜精品电影免费看| 亚洲天堂自拍| 午夜欧美在线| 高清无码不卡视频| 91精品国产无线乱码在线| 亚洲无码37.| 久久毛片网| swag国产精品| 国产一区三区二区中文在线| 3D动漫精品啪啪一区二区下载| 亚洲精品第五页| 黄色网页在线播放| 亚洲av中文无码乱人伦在线r| 女人18一级毛片免费观看 | 一级在线毛片| 欧美一区二区福利视频| 国产一级精品毛片基地| 欧美日韩91| 一本综合久久| 在线看AV天堂| 国产一级片网址| 亚洲男人的天堂视频| 国产精品9| 先锋资源久久| 夜精品a一区二区三区| 这里只有精品在线播放| 在线无码av一区二区三区|