最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Csh的基本語(yǔ)法介紹

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

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

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

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

1) 變量

通過(guò)set來(lái)定義局部變量x,通過(guò)$x或${x}來(lái)使用變量x的值,$%x表示變量的值的長(zhǎng)度, $?x來(lái)判斷變量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, 通過(guò)$myarr[index]來(lái)訪問(wèn)數(shù)組中的值,注意index是從1開(kāi)始的。通過(guò)$myarr或$myarr[*]來(lái)訪問(wèn)數(shù)組所有的元素。通過(guò)$#myarr來(lái)查看元素的個(gè)數(shù)。

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

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

3)命令替換

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

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

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

4)命令行參數(shù)

通過(guò)$argv[1],$argv[2]或$1,$2來(lái)訪問(wèn)命令行參數(shù)。命令行參數(shù)的個(gè)數(shù)為$#argv。

5)文件名擴(kuò)展的元字符

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

6)IO重定向和管道

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

將命令的輸出和報(bào)錯(cuò)信息重定向到一個(gè)文件cmd>&file。
將命令的輸出經(jīng)管道發(fā)往另一個(gè)命令cmd|cmd.
將命令的輸出和報(bào)錯(cuò)信息經(jīng)管道發(fā)往另一個(gè)命令cmd|&cmd。
條件語(yǔ)句為 cmd && cmd 或 cmd || cmd。
command<<WORD 表示將command的輸入重定向?yàn)閺牡谝粋€(gè)WORD處開(kāi)始,到下一個(gè)WORD處之間的內(nèi)容(即here文檔)。

7)從鍵盤(pán)讀取并保存到變量中

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

set var = $<

8)算術(shù)

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

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

9)代字符號(hào)擴(kuò)展

~username 表示username的home目錄。

10)別名

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

11)初始化文件

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

12) label 和 goto

csh中沒(méi)有函數(shù)的概念,使用類(lèi)似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è)置類(lèi)似于數(shù)組的使用。

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

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

17、source等價(jià)于其他shell中的.

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

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

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

19、歷史command

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

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

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

22、在腳本中處理中斷

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

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

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

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

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

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

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

僅用兩個(gè)例子讓讀者明白,設(shè)定后的實(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)文章

  • Shell實(shí)現(xiàn)批量操作文件的方法詳解

    Shell實(shí)現(xiàn)批量操作文件的方法詳解

    這篇文章主要為大家總結(jié)了一下Shell實(shí)現(xiàn)批量操作文件的命令,例如:查找某文件夾下指定文件所在的路徑、批量刪除某個(gè)文件夾下的指定文件,感興趣的可以了解一下
    2022-09-09
  • Linux文件管理方法介紹

    Linux文件管理方法介紹

    這篇文章介紹了Linux文件管理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • linux下解決?git?clone每次都要輸入用戶(hù)名密碼問(wèn)題(推薦)

    linux下解決?git?clone每次都要輸入用戶(hù)名密碼問(wèn)題(推薦)

    這篇文章主要介紹了linux下解決?git?clone每次都要輸入用戶(hù)名密碼問(wèn)題,先用git?config?--global?user.name?'username’和git?config?--global?user.email?'xxx@xxx.com’配置一下用戶(hù)名和郵箱,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • shell批量設(shè)置key過(guò)期時(shí)間的兩種方法步驟

    shell批量設(shè)置key過(guò)期時(shí)間的兩種方法步驟

    本文主要介紹了shell批量設(shè)置key過(guò)期時(shí)間的兩種方法步驟,包括設(shè)置?Redis?db1中所有key的過(guò)期時(shí)間,和設(shè)置未設(shè)置過(guò)期時(shí)間key的過(guò)期時(shí)間為1小時(shí),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • shell腳本中 /dev/null 的用法小結(jié)

    shell腳本中 /dev/null 的用法小結(jié)

    /dev/null 通常被用于丟棄不需要的輸出流,或作為用于輸入流的空文件,這些操作通常由重定向完成,任何你想丟棄的數(shù)據(jù)都可以寫(xiě)入其中,本文重點(diǎn)給大家介紹shell腳本中 /dev/null 的用法小結(jié),感興趣的朋友一起看看吧
    2021-09-09
  • shell判斷變量是否含某個(gè)字符串的6種方法

    shell判斷變量是否含某個(gè)字符串的6種方法

    本文主要介紹了shell判斷變量是否含某個(gè)字符串的6種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • shell中的各種括號(hào)的使用方法

    shell中的各種括號(hào)的使用方法

    這篇文章主要介紹了shell中的各種括號(hào)的使用方法,需要的朋友可以參考下
    2015-01-01
  • Shell腳本實(shí)現(xiàn)IP地址合法性判斷

    Shell腳本實(shí)現(xiàn)IP地址合法性判斷

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)IP地址合法性判斷,本文給出了實(shí)現(xiàn)代碼和運(yùn)行代碼,需要的朋友可以參考下
    2014-10-10
  • shell編程時(shí)出現(xiàn):未預(yù)期的符號(hào)?`then'?附近有語(yǔ)法錯(cuò)誤?或者?:?行?:?`then'問(wèn)題

    shell編程時(shí)出現(xiàn):未預(yù)期的符號(hào)?`then'?附近有語(yǔ)法錯(cuò)誤?或者?:?行?:?`then&

    這篇文章主要介紹了shell編程時(shí)出現(xiàn):未預(yù)期的符號(hào)?`then'?附近有語(yǔ)法錯(cuò)誤?或者?:?行?:?`then'問(wèn)題,本文給大家介紹的非常詳細(xì),需要的朋友參考下
    2022-12-12
  • Linux 刪除文件夾和文件的命令(強(qiáng)制刪除包括非空文件)

    Linux 刪除文件夾和文件的命令(強(qiáng)制刪除包括非空文件)

    linux刪除目錄很簡(jiǎn)單,很多人還是習(xí)慣用rmdir,不過(guò)一旦目錄非空,就陷入深深的苦惱之中,現(xiàn)在使用rm -rf命令即可。接下來(lái)通過(guò)本文給大家介紹Linux 刪除文件夾和文件的命令(強(qiáng)制刪除包括非空文件),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05

最新評(píng)論

博野县| 榆树市| 海南省| 启东市| 平阴县| 喀什市| 东城区| 陆丰市| 平远县| 麦盖提县| 甘谷县| 托克逊县| 景泰县| 杨浦区| 光泽县| 库伦旗| 南皮县| 潮安县| 米易县| 灵宝市| 马鞍山市| 加查县| 阳春市| 旬邑县| 安仁县| 景宁| 汶川县| 新乡市| 鲜城| 翁牛特旗| 西乌珠穆沁旗| 如东县| 东山县| 德保县| 莆田市| 石阡县| 景东| 阿拉尔市| 卢龙县| 基隆市| 陵水|