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 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 )
| 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 |
本文总结了从csh转向bash的原因及两者的主要区别,包括如何在bash中进行重定向操作,如将stdout和stderr合并到同一文件,并提到了bash中的反向引用backquote用法。
1万+

被折叠的 条评论
为什么被折叠?



