亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Csh的基本語法介紹

2020-07-27 19:12:33
字體:
來源:轉載
供稿:網友

在*unix系統中,常用的shell有sh,bash,csh/tcsh, ksh.

sh來自于systemV的Unix,是傳統的Unix的shell,直到現在很多的系統管理員仍然喜歡使用sh。
bash來自于BSD Unix,語法非常類似于C語言,所以通常有C/C++編程背景的開發人員最喜歡使用。
ksh是對sh的擴展,且吸收了csh的一些有用的功能,但是由于開始ksh的license是AT&T,所以后來出現了很多的ksh的開源版本,例如mksh,pdksh等。
bash是現在很多Linux的發行版中默認的shell,綜合了其他shell的很多優點。

下面描述csh的一些基本的語法(在sh環境中執行csh切換到csh環境):

1) 變量

通過set來定義局部變量x,通過$x或${x}來使用變量x的值,$%x表示變量的值的長度, $?x來判斷變量x是否設置,如設置則為1,否則為0。

復制代碼 代碼如下:

set x = 5
echo $x
echo ${x}kg
echo $%x  

全局變量的定義setenv v  value 該變量將被此shell派生的所有子shell繼承。

$$表示當前進程的PID, $status 或 $? 表示退出狀態。

2)數組

定義數組myarr, 通過$myarr[index]來訪問數組中的值,注意index是從1開始的。通過$myarr或$myarr[*]來訪問數組所有的元素。通過$#myarr來查看元素的個數。

復制代碼 代碼如下:

set myarr = (str1, str2,str3)
echo $myarr[2]
echo $myarr
echo $myarr[*]

3)命令替換

通過set x = `cmd`來執行命令,且結果賦值給變量。

復制代碼 代碼如下:

set d = `date`
echo $d
echo $d[6]-$d[2]-$d[3]

4)命令行參數

通過$argv[1],$argv[2]或$1,$2來訪問命令行參數。命令行參數的個數為$#argv。

5)文件名擴展的元字符

只能使用?,*,[abc],[a-c]。

6)IO重定向和管道

將命令的輸出重定向到文件為>。
將命令的輸出重定向并追加到文件為>>。
將命令的輸入重定向到文件為<。
將命令的報錯信息重定向到一個文件(cmd>/dev/tty)>&errors。
將命令的輸出和錯誤輸出分別重定向(cmd > goodstuff)  >& badstuff。

將命令的輸出和報錯信息重定向到一個文件cmd>&file。
將命令的輸出經管道發往另一個命令cmd|cmd.
將命令的輸出和報錯信息經管道發往另一個命令cmd|&cmd。
條件語句為 cmd && cmd 或 cmd || cmd。
command<<WORD 表示將command的輸入重定向為從第一個WORD處開始,到下一個WORD處之間的內容(即here文檔)。

7)從鍵盤讀取并保存到變量中

復制代碼 代碼如下:

set var = $<

8)算術

復制代碼 代碼如下:

@ var = 5 + 5
echo $var
@ v2 = $var + 3
echo $v2

9)代字符號擴展

~username 表示username的home目錄。

10)別名

alias m more 為more創建別名m。
alias 列出所有的alias。
unalias m 用來刪除more的alias定義。

11)初始化文件

.login 在登錄時執行的文件。
.cshrc 在每次調用shell時都執行的文件。

12) label 和 goto

csh中沒有函數的概念,使用類似windows批處理中的label和goto。

復制代碼 代碼如下:

goto label
......
label:
....

13) if/else/switch/case

復制代碼 代碼如下:

if(expression)then
  commands
endif
 

if {(command)} then
  commands
endif
 

if(expression) then
  commands
else if(expression) then
  commands
else
  commands
endif
 

switch("$value")
case pattern1:
  commands
  breaksw
case pattern2:
  commands
  breaksw
default:
  commands
  breaksw
endsw

14 while/foreach

復制代碼 代碼如下:

while(expression)
  commands
  continue

  break

end
foreach var (wordlist)
  commands
end

15、repeat

repeat表示重復執行后面的命令。

復制代碼 代碼如下:

repeat 3 "echo helloworld"

16、csh中設置環境變量PATH的方法

csh中使用path代替PATH,設置類似于數組的使用。

復制代碼 代碼如下:

set path = ($path /home)
echo $path
echo $PATH

17、source等價于其他shell中的.

source使得程序在當前的shell中被執行,而不是派生子進程來執行。

18、轉義字符與單雙引號

引號必須成對出現,而且必須在同一行上配對。可以用反斜杠來轉義換行符,這樣就能在下一行配對了。
單引號可用于保護雙引號,雙引號也可以用來保護單引號。
單引號保護除歷史字符(!)之外的所有元字符不被解釋。
雙引號保護除歷史字符(!),變量替換字符($)和反引號(用于命令替換)之外的所有元字符,使其不被解釋。

19、歷史command

history用來查看command執行的歷史。
!!用來執行上一條命令。

20、pushd和popd用來維護目錄棧

21、csh -vx用來顯示輸入的原樣和變量替換后的腳本,用來幫助調試。

22、在腳本中處理中斷

復制代碼 代碼如下:

onintr finish
  <script continues here>
 
finish:
onintr - # Disable further interrupts
echo Cleaning temp files
exit 1

onintr 命令后跟一個標號名,finish是用戶自定義的標號。如果發生中斷,控制將被轉移到finish標號。通常該行位于腳本的開頭。除非當程序正在執行時按ctrl+C(中斷鍵),此時控制將被轉移到該標號。onintr - 表示屏蔽所有的中斷,此時按下ctrl+C將會被忽略。 

23、noclobber 禁止覆蓋變量,設定 $noclobber 預設變量改變輸出重定向特性.    

變量設定語法 set noclobber

取消變量設定語法 unset noclobber

這個 noclobber 變量,它的功能便是停止重定向符號“>”的覆蓋(overwiting)已存在文件以及符號“>>”要將字符寫入一個不存在的文件時,自動產生該文件的特性。

僅用兩個例子讓讀者明白,設定后的實際使用狀況。 

例子一:

復制代碼 代碼如下:

% ps axu > testfile
% set noclobber
% echo "test set noclobber" > testfile
testfile: File exists.
% echo "test set noclobber" >! testfile
%

例子二:

復制代碼 代碼如下:

% set noclobber
% cat /etc/passwd >> nopass
nopass: No such file or directory
% cat /etc/passwd >>! nopass
%

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高潮呻吟视频| 国产一区二区三区视频免费| 亚洲高清不卡av| 成人免费在线视频网站| 亚洲第一网中文字幕| 成人久久一区二区三区| 97精品久久久| 尤物yw午夜国产精品视频明星| 国产日韩在线播放| 亚洲自拍中文字幕| 久久久欧美一区二区| 精品视频一区在线视频| 欧美成人免费小视频| 日本欧美爱爱爱| 色在人av网站天堂精品| 亚洲欧洲激情在线| 日韩国产中文字幕| 亚洲毛茸茸少妇高潮呻吟| 亚洲精品日韩欧美| 日韩毛片中文字幕| 在线精品国产欧美| 欧美大人香蕉在线| 欧美三级免费观看| 日韩精品欧美激情| 亚洲天堂网在线观看| 自拍偷拍亚洲欧美| 亚洲一区二区三区四区视频| 亚洲第一区中文字幕| 亚洲在线免费观看| 精品亚洲一区二区三区在线播放| 中文字幕精品视频| 91在线精品视频| 美女扒开尿口让男人操亚洲视频网站| 日韩激情在线视频| 欧美日韩美女在线观看| 欧美日韩亚洲一区二区| 欧美极品美女电影一区| 成人乱人伦精品视频在线观看| 亚洲无线码在线一区观看| 欧美一区深夜视频| 欧美日本黄视频| 久久噜噜噜精品国产亚洲综合| 日本精品一区二区三区在线播放视频| 中文字幕在线国产精品| 亚洲国产欧美在线成人app| 久久久天堂国产精品女人| 国内精品视频一区| 国产亚洲欧美另类中文| 亚洲电影免费观看高清完整版| 欧美一区二区三区精品电影| 亚洲欧美精品一区| 亚洲人线精品午夜| 欧美综合国产精品久久丁香| 国产精品扒开腿做| 免费av在线一区| 亚洲国模精品私拍| 九九视频这里只有精品| 日本三级韩国三级久久| 久久视频国产精品免费视频在线| 中文字幕在线看视频国产欧美在线看完整| 亚洲自拍偷拍第一页| 欧美一级电影在线| 国产精品国内视频| 亚洲欧洲成视频免费观看| 成人激情视频免费在线| 成人亲热视频网站| 91免费人成网站在线观看18| 国产一区二区三区在线播放免费观看| 色偷偷88888欧美精品久久久| 国产美女91呻吟求| 亚洲护士老师的毛茸茸最新章节| 国产成人一区二区三区小说| 久久免费精品视频| 大胆欧美人体视频| 日韩有码片在线观看| 两个人的视频www国产精品| 中文字幕精品av| 精品视频在线播放| 欧美日韩精品在线| 日韩在线观看成人| 欧美一区二区三区四区在线| 国产成人拍精品视频午夜网站| 亚洲第一精品电影| 91亚洲国产成人久久精品网站| 日韩黄色在线免费观看| 中文字幕欧美日韩va免费视频| 91欧美视频网站| 乱亲女秽乱长久久久| 国产精品av免费在线观看| 91麻豆国产精品| 51视频国产精品一区二区| 精品动漫一区二区三区| 最近2019中文字幕一页二页| 亚洲免费中文字幕| 成人在线观看视频网站| 国产精品久久77777| 在线观看91久久久久久| 国产精品男女猛烈高潮激情| 国产成人精品综合| 日韩经典中文字幕在线观看| 欧美精品福利视频| 欧美性生交大片免费| 亚洲精品国产拍免费91在线| 91精品国产91久久久久久吃药| 国产精品成人国产乱一区| 91手机视频在线观看| 91国自产精品中文字幕亚洲| 久久夜色精品国产| 亚洲韩国青草视频| 成人有码在线视频| 美日韩精品视频免费看| 亚洲视频在线视频| 欧美黑人狂野猛交老妇| 日本高清久久天堂| 91爱爱小视频k| 亚洲日本中文字幕免费在线不卡| 日韩欧美国产视频| 91精品国产综合久久香蕉922| 亚洲美女自拍视频| 午夜精品久久久久久久99黑人| 精品国产精品自拍| 深夜福利一区二区| 精品国产成人在线| 日韩高清a**址| 欧美亚洲成人网| 欧美成人亚洲成人日韩成人| 欧美日韩第一页| 精品亚洲一区二区三区在线观看| 大荫蒂欧美视频另类xxxx| 亚洲第一av网| 国产在线播放不卡| 国产女同一区二区| 久久精品国产亚洲| 九九热视频这里只有精品| 成人欧美在线观看| 色av吧综合网| 亚洲人成网7777777国产| 九九九热精品免费视频观看网站| 日韩中文字幕av| 国产欧美精品一区二区| 97免费视频在线播放| 欧美在线视频一区二区| 久久久精品网站| 91精品在线影院| 成人精品一区二区三区| 亚洲美女av黄| 欧美日韩亚洲一区二区三区| 久久视频在线播放| 国产精品一久久香蕉国产线看观看| 欧美丰满少妇xxxxx| 亚洲欧美国产制服动漫| 亚洲影院色在线观看免费| 亚洲国产91精品在线观看| 日韩人在线观看| 美女av一区二区| 国产精品狠色婷| 欧美色另类天堂2015| 久久久亚洲天堂| 亚洲第一视频网| 欧美日韩免费区域视频在线观看| 国产视频一区在线| 欧美中文字幕在线播放| 亚洲香蕉伊综合在人在线视看| 亚洲欧美制服另类日韩|