欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Csh的基本語法介紹

 更新時間:2014年11月24日 12:03:54   投稿:junjie  
這篇文章主要介紹了Csh的基本語法,講解了變量、數(shù)組、命令替換、命令行參數(shù)、IO重定向和管道等內(nèi)容,需要的朋友可以參考下

在*unix系統(tǒng)中,常用的shell有sh,bash,csh/tcsh, ksh.

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

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

1) 變量

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

復(fù)制代碼 代碼如下:

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

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

$$表示當(dāng)前進(jìn)程的PID, $status 或 $? 表示退出狀態(tài)。

2)數(shù)組

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

復(fù)制代碼 代碼如下:

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

3)命令替換

通過set x = `cmd`來執(zhí)行命令,且結(jié)果賦值給變量。

復(fù)制代碼 代碼如下:

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

4)命令行參數(shù)

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

5)文件名擴展的元字符

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

6)IO重定向和管道

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

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

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

復(fù)制代碼 代碼如下:

set var = $<

8)算術(shù)

復(fù)制代碼 代碼如下:

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

9)代字符號擴展

~username 表示username的home目錄。

10)別名

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

11)初始化文件

.login 在登錄時執(zhí)行的文件。
.cshrc 在每次調(diào)用shell時都執(zhí)行的文件。

12) label 和 goto

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

復(fù)制代碼 代碼如下:

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

13) if/else/switch/case

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

while(expression)
  commands
  continue

  break

end
foreach var (wordlist)
  commands
end

15、repeat

repeat表示重復(fù)執(zhí)行后面的命令。

復(fù)制代碼 代碼如下:

repeat 3 "echo helloworld"

16、csh中設(shè)置環(huán)境變量PATH的方法

csh中使用path代替PATH,設(shè)置類似于數(shù)組的使用。

復(fù)制代碼 代碼如下:

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

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

source使得程序在當(dāng)前的shell中被執(zhí)行,而不是派生子進(jìn)程來執(zhí)行。

18、轉(zhuǎn)義字符與單雙引號

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

19、歷史command

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

20、pushd和popd用來維護(hù)目錄棧

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

22、在腳本中處理中斷

復(fù)制代碼 代碼如下:

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

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

23、noclobber 禁止覆蓋變量,設(shè)定 $noclobber 預(yù)設(shè)變量改變輸出重定向特性.    

變量設(shè)定語法 set noclobber

取消變量設(shè)定語法 unset noclobber

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

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

例子一:

復(fù)制代碼 代碼如下:

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

例子二:

復(fù)制代碼 代碼如下:

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

您可能感興趣的文章:

相關(guān)文章

  • Linux 打包壓縮命令詳解

    Linux 打包壓縮命令詳解

    在Linux系統(tǒng)中,有多種命令可以用于打包和壓縮文件,這些命令可以幫助用戶將多個文件或目錄打包成一個文件,并可以選擇不同的壓縮算法來減小文件大小,下面給大家介紹Linux 打包壓縮命令詳解,感興趣的朋友一起看看吧
    2023-09-09
  • linux shutdown命令詳解

    linux shutdown命令詳解

    Windows 系統(tǒng)自帶一個名為Shutdown.exe的程序,可以用于關(guān)機操作(位置在Windows\System32下),一般情況下Windows系統(tǒng)的關(guān)機都可以通過調(diào)用程序 shutdown.exe來實現(xiàn)的,同時該程序也可以用于終止正在計劃中的關(guān)機操作
    2017-09-09
  • Shell中的${}、##和%%使用范例

    Shell中的${}、##和%%使用范例

    這篇文章主要介紹了Shell中的${}、##和%%使用范例,本文給出了不同情況下得到的結(jié)果,需要的朋友可以參考下
    2015-04-04
  • linux下安裝配置Memcache和PHP環(huán)境的實現(xiàn)

    linux下安裝配置Memcache和PHP環(huán)境的實現(xiàn)

    下面小編就為大家?guī)硪黄猯inux下安裝配置Memcache和PHP環(huán)境的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Shell腳本統(tǒng)計文件行數(shù)的8種方法

    Shell腳本統(tǒng)計文件行數(shù)的8種方法

    這篇文章主要介紹了Shell腳本統(tǒng)計文件行數(shù)的8種方法,本文講解了獲取單個文件行數(shù)、獲取特定目錄所有文件的行數(shù)兩種需求共計8種方法,需要的朋友可以參考下
    2015-03-03
  • shell通過正則匹配ip地址實例代碼

    shell通過正則匹配ip地址實例代碼

    這篇文章主要給大家介紹了關(guān)于shell如何通過正則匹配ip地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用shell具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • shell腳本自動安裝jdk的方法示例

    shell腳本自動安裝jdk的方法示例

    這篇文章主要介紹了shell腳本自動安裝jdk的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 阿里云主機一鍵安裝lamp、lnmp環(huán)境的shell腳本分享

    阿里云主機一鍵安裝lamp、lnmp環(huán)境的shell腳本分享

    這篇文章主要介紹了阿里云主機一鍵安裝lamp、lnmp環(huán)境的shell腳本分享,需要的朋友可以參考下
    2014-07-07
  • Linux 實現(xiàn)壓縮保留源文件的方法

    Linux 實現(xiàn)壓縮保留源文件的方法

    下面小編就為大家分享一篇Linux 實現(xiàn)壓縮保留源文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Shell腳本的超詳細(xì)講解(推薦!)

    Shell腳本的超詳細(xì)講解(推薦!)

    Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁,下面這篇文章主要給大家介紹了關(guān)于Shell腳本的超詳細(xì)講解,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評論