csh和bash的区别

csh和bash的区别

csh和bash是两种不同的Unix和Linux shell,它们有一些语法和功能上的差异。例如:

  1. csh使用C语言风格的语法,如if endif, while end等,而bash使用Bourne shell风格的语法,如if fi, for do done等。
  2. csh设置变量时使用set命令,并且=号两边不能有空格,如set a=pwd;而bash设置变量时不需要set命令,并且=号两边必须无空格,如a = pwd
    csh设置环境变量时使用setenv命令,如setenv PATH $PATH:/usr/local/bin;而bash设置环境变量时使用export命令,并且=号两边不能有空格,如export PATH=$PATH:/usr/local/bin
  3. csh引用变量时使用$符号,并且可以省略{}符号,如echo $a;而bash引用变量时也使用$符号,但是如果变量名后面紧跟其他字符,则必须加上{}符号以区分变量名和其他字符,如echo ${a}b
  4. csh支持算术运算符 @$(),并且可以直接在shell中进行数学计算,如 @ a = 1 + 2set a = $(1 + 2);而bash支持算术运算符 $[]$(())let命令,并且也可以直接在shell中进行数学计算,如 a=$[1+2]a=$((1+2))let a=1+2
  5. csh支持历史命令替换符 !!!n(n为数字),并且可以直接在shell中重复执行或修改之前输入过的命令,如 !!!5;而bash也支持历史命令替换符 !!!n(n为数字),但是还支持历史命令搜索功能(按Ctrl+R键),并且也可以直接在shell中重复执行或修改之前输入过的命令。
  6. csh支持别名功能alias,并且可以在shell中为常用的命令或参数设定简短的名称以方便输入,如alias ll ‘ls -l’;而bash也支持别名功能alias,并且也可以在shell中为常用的命令或参数设定简短的名称以方便输入。
  7. csh不支持数组类型的变量,并且只能通过循环来遍历一个列表或文件夹下的文件;而bash支持数组类型的变量,并且可以通过下标来访问数组元素或通过*来遍历数组所有元素。
  8. csh支持文件名通配符和?,并且可以在shell中匹配任意长度或单个字符的文件名,如ls .txt 或 ls ??.c;而bash也支持文件名通配符和?,但是还支持正则表达式的元字符,如[ ]、^、$等,并且可以在shell中匹配更复杂的文件名模式,如ls [a-z].txt 或 ls ^a.*c$。
  9. csh不支持函数定义,并且只能通过外部脚本或命令来实现函数功能;而bash支持函数定义,并且可以在shell中直接定义和调用函数,如function hello() { echo “Hello world!” } 或 hello() { echo “Hello world!” }。
  10. csh不支持重定向符号>和<的多次使用,并且只能将标准输出或标准输入重定向到一个文件或设备;而bash支持重定向符号>和<的多次使用,并且可以将标准输出或标准输入重定向到多个文件或设备,如cat file1 > file2 > file3 或 cat < file1 < file2。
  11. csh不支持管道符号|的多次使用,并且只能将一个命令的输出作为另一个命令的输入;而bash支持管道符号|的多次使用,并且可以将多个命令的输出作为另一个命令的输入,如ls | grep a | wc -l。
  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值