bash vs csh (从csh 转换为 bash)

http://homepage2.nifty.com/freeline/bash_vs_csh.html

 

终于 决意 从csh 转换为 bash,关于bash与 csh的 区别,把笔记 总结 如下。今后,在使用 bash的 过程中,也许会追加新发觉的东西。

功能 bash csh 备考
shell变量的定义

VAR=X

AVAR=(X1 X2)

set VAR = X

set AVAR = (X1 X2)  

在bash中,"="的前后不能有空白
环境变量的定义

export VAR=X

VAR=X

export VAR

setenv VAR X 在bash中,"="的前后不能有空白
命令搜索路径的定义 PATH=/bin:/usr/bin set path=(/bin /usr/bin) 或
setenv PATH /bin:/usr/bin
 
命令hash的更新 (不要) rehash  





 

 








redirect

把stdin从file CMD < FILE CMD < FILE bash与csh方法相同
把stdout向file CMD > FILE CMD > FILE bash与csh方法相同

把stdout向file

(shell变量noclobber已被设定

并且文件存在的场合)

CMD >| FILE CMD >! FILE  
向stdout追加 CMD >> FILE CMD >> FILE  
把stdout与stderr向同一文件

CMD &> FILE

CMD > FILE 2>&1

CMD >& FILE

在bash,下记亦可。

CMD >& FILE

把stdout与stderr向同一文件

(shell变量noclobber已被设定

并且文件存在的场合)

(在bash中,在这个场合下,不考虑

noclobber的设定)

CMD >&! FILE  
把stdout与stderr向不同文件 CMD > FILE1 2>FILE2 (CMD > FILE1) >& FILE2 在csh中,变为使用subshell的方法
here-document CMD << LABEL CMD << LABEl bash与csh方法相同
pipe CMD1 | CMD2 CMD1 | CMD2 bash与csh方法相同
命令置换(向命令的输出的命令行的置换) CMD1 $(CMD2)

CMD1 `CMD2`

(反向引用backquote)

在bash中,可以采取嵌套的方法



 






 

 

 



 

 

 

 

流程控制

if

if CON1 ; then

 CMD1

elif CON2 ; then

 CMD2

else

 CMD3

fi 

 

(CONDをコマンドとして実行した終了ステータスで判定)

if( COND1 ) then
  CMD1
else if(COND2) then
  CMD2
else
  CMD3
endif

(CONDの式としての値で判定)

bashでCONDとして式を用いる場合は下記
[ EXPR ]
または、
test EXPR
for
for VAR if LIST; do
 CMD
done
foreach VAR (LIST)
 CMD
end
 
while while COND ; do
 CMD
done

while (COND )
 CMD
end

 

bashでは下記もあり
until NOT_COND ; do
 CMD
done
case
  case EXP in
 PAT1)
  CMD1;;
 PAT2)
  CMD2;;
 *)
  CMD3;;
esac
switch (EXP)
case LABEL1:
  CMD1
  breaksw
case LABEL2:
  CMD2  breaksw
default:
  CMD3
endsw

你可能感兴趣的:(bash)