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。

csh和bash的区别相关推荐

  1. shell脚本头,#!/bin/sh与#!/bin/bash的区别.

    因为今天写了个小脚本,死活不成功,总是报文件或者目录不存在,问了一下我们马同学的正常写法,发现只有脚本头的区别,也就是今天本文要讲的#!/bin/sh与#!/bin/bash. 本文参考:https: ...

  2. Linux - #!/bin/bash 和 #!/usr/bin/env bash 的区别

    起因 为什么会想到写 #!/bin/bash 和 #!/usr/bin/env bash 的区别呢?还要从一次装插件的过程说起. 由于刚开始接触 Shell Script 不久,对一些语法用法等还不是 ...

  3. Shell编程之Csh和Bash的经验总结

    文章目录 前言 1. 变量和环境变量设置 1. csh 2. bash 2. if语句 1. csh 2. bash 3. while循环 1. csh 2. bash 4. 数组 1. csh 2. ...

  4. zsh和bash的区别

    看了一些资料,总结出来一句话:zsh完美兼容bash,并且有比bash更强大的功能,用起来也比bash更优雅. 参考1:Linux服务器上zsh和bash的区别 参考2:使用 zsh 的九个理由 参考 ...

  5. 查看终端是csh还是bash和更改shell设置

    1.判断终端是csh还是bash: 终端命令:env 直接执行:echo $SHELL 可以直接看出当前使用的shell 2.更改shell设置: 终端命令:chsh -s /bin/bash 执行完 ...

  6. 几种常见的Shell:sh、bash、tcsh、csh、ash的区别

    @Author : Spinach | GHB @Link : http://blog.csdn.net/bocai8058 文章目录 概念 sh csh tcsh ash bash 查看 Shell ...

  7. #!/bin/sh与#!/bin/bash的区别

    Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh).C shell (csh) 和 Korn shell (ksh), 各有优缺点.Bourne she ...

  8. csh和bash的语法对比

    一般来说,能用bash 语言编程就不用csh编程,因为bash语言的使用体验更好,但是某些情况的terminal窗口就是csh语言,因而,用csh语言会更适合.下面将bash和csh,做一些对比,方便 ...

  9. ./和bash的区别

    直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器, 如果没指定,那么就用当前系统默认的shell是sh. sh是bash的"子集" 什么场合这两种必须区分开来呢? 例如 ...

最新文章

  1. 解释型语言与编译型的必须知识点
  2. vue代码转换成小程序
  3. 3.3 目标检测-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. http接口和webservice接口的区别
  5. PAT (Basic Level) 1039 到底买不买(模拟)
  6. 日常生活收缩毛孔几个小妙招 - 健康程序员,至尚生活!
  7. 智能机器人建房子后房价走势_明后年日照房价走势如何?究竟是“上涨”还是下降...
  8. Greendao bean序列化出现的 问题!
  9. 道指mt4代码_剑指offer算法题052:正则表达式匹配
  10. Matlab中的logspace函数,matlab之logspace函数
  11. SpringBoot是什么?
  12. 为了拿Ph.D而做出的诺贝尔奖
  13. win10 最新版1803 1809打不开xps文件找不到xps查看器的解决办法
  14. 珍藏版创业思维导图,帮你成功创业!
  15. ERROR 1820 (HY000): You must reset your password using ALTER USER statement
  16. CRM:网站证书过期怎么办
  17. 嫁给年薪百万的程序员,结婚 6 年后的我竟然还是处女
  18. HP惠普笔记本电脑暗影精灵5 OMEN by HP 15-dh0153tx原装出厂Win10系统恢复原厂OEM系统
  19. 电脑配置ip--host修改ip地址然后刷新操作-win10
  20. 多线程基础:两种实现方式

热门文章

  1. 住在我隔壁的一对大学生夫妻(九)
  2. 本地搭建EasyMock环境
  3. AutoML在推荐系统中的应用
  4. 301跳转:http跳转https不带www跳转到带www
  5. 【观察】AWE 2019:三组关键词前瞻未来智慧家庭
  6. scrapy 爬网站 显示 Filtered offsite request to 错误
  7. HTML实现旋转太极图
  8. sql server 附加数据库 错误5123 解决办法
  9. 洛谷-官方题单版【入门篇】
  10. 引入非线性激励函数的作用