C shell 也是 shell 的 一种,以下为一个简单 cshell脚本;

#!/bin/csh           //开头解释文件为 csh, 必须写
set a="helloworld"   //shell 一般语法
echo $a             //shell 一般语法
cd ..              //系统命令cd
ls                 //系统命令ls

一、C shell 的含义与作用

含义:是一种编程语言,有自己的语法;但其多数主要面向 命令 进行编程

作用:更加系统的执行用户的命令,解释执行用户的命令,如写一个shell 脚本 ,脚本中可能含义多个系统命令,shell执行时,就一起执行了多个命令,称为批处理。

二、C shell 的编程

重点知识

编写shell 脚本 须知:

编写工具:vim 、gvim

shell脚本的扩展名:.csh  文件

开头必须写:#! /bin/csh  //用来说明 该文件是 csh 格式

特殊符号说明:

$ : 表示取值、取消回显

# :表示 注释

echo :  表示 输出、显示

(1)变量

文献参考:

(64条消息) 【shell】Cshell_lbt_dvshare的博客-CSDN博客_cshell

(64条消息) [Cshell]Cshell基本語法 --- 從入門到精通_gsithxy的博客-CSDN博客_cshell

C Shell 编程中,需要用 set 修饰 变量,变量一直到脚本执行结束。

shell内变量只能在当前shell 进程中使用,不能跨进程。

注意:等号两边不能有 空格;

set a="helloworld"

//屏幕输出 helloworld

set a="helloworld"
echo $a

//屏幕输出 任意想说的内容

echo "任意内容"

(2)全局变量

setenv 定义全局变量,类似于define

setenv  NAME  "data"   //脚本中所以 NAME 都是 “data”

(3)数组

数值定义:array[index]   //index 从1开始,与C语言不同

//通过$#myarr来查看元素的个数;

set  array=(data1, data2, data3)     //array[1] = data1,  array[2] = data2;

unset array[1]       //删除data1

unset array          //删除整个数组

echo array[1]       //输出

(4)调用子脚本

在file.csh中调用 file2.csh 脚本:

source ./file2.csh      //在file.csh中写

(5)环境变量

用 export 修饰的变量, 环境变量的传递是单向的,可以由子进程传递到父进程。

//用于传递参数

export envir="this is envir"

(6)命令键入参数

通过$argv[1],$argv[2]或$1,$2来访问命令行参数。

命令行参数的个数为$#argv。

echo $1    // ./csh a 这里指第二个参数 a,第一个参数 ./csh 为 $0// echo 指在命令行中 输出

(7)Cshell中的命令:

参考文献:Linux sed命令完全攻略(超级详细) (biancheng.net)

(1)find 命令

(2)sed 命令

sed 是流编辑器(Stream Editor),在shell 脚本 和 Makefile 中使用比较常见,把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一个格式输出。

作用:文本1 经过 sed + 脚本 的处理 生成 文本2

使用的两种方式:

sed option 'script' file1 file2            // sed 参数  ‘脚本文件’  待处理文件

sed option -f scriptfile file1 file2     // sed 参数 ’脚本文件‘   待处理文件

【1】option

-n  //默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。

-e  //允许多个脚本指令被执行

-i  //此选项会直接修改源文件,要慎用。

-f  //该选项会将其后文件中的脚本命令添加到已有的命令中

代码举例:

sed -n '2p' text.txt    //只显示text.txt的第二行

【2】脚本命令

说明:脚本命令都是写在 'script' 中的

s  //substitution 替换

d  //delete  删除

i  //insert  插入

a  //append  追加

s 替换脚本命令

此命令的基本格式为:[行数]s/需要替换的内容/替换的新内容/flags标记

flags 标记:

n   //1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;

g  //对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;

p  //会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。

w file   //将缓冲区中的内容写到指定的 file 文件中;

&     //用正则表达式匹配的内容进行替换;

\n   //匹配第 n 个子串,该子串之前在 pattern 中用 \(\) 指定。

\    //转义(转义替换部分包含:&、\ 等)

代码举例:

sed 's/123/567g' test.txt        //将test.txt中所有的123替换为567
sed 's/test/trial/2' data.txt   //将data.txt中的第二个test文件替换为trial

d 删除脚本命令

此命令的基本格式为:[行数]d [删除内容]

代码举例:

sed '2d' test.txt   //将第二行删除

i 插入脚本命令

此命令的基本格式为:[行数]i [插入内容]

代码举例:

sed '2i aaaaaa' text.txt     //在text.txt 的第二行插入 aaaaaaa

a 追加脚本命令

此命令的基本格式为:[行数]a [插入内容]

代码举例:

sed '2a aaaaaa' text.txt     //在text.txt 的第二行追加 aaaaaaa

(3)awk 命令

sed 是以行为单位处理文件的,awk则是以 行和列 处理文件,所以功能更加强大。

awk 缺省的行分隔符是换行,缺省的列分隔符是连续的空格和tab,

使用的两种方式:

sed option 'script' file1 file2            // sed 参数  ‘脚本文件’  待处理文件

sed option -f scriptfile file1 file2     // sed 参数 ’脚本文件‘   待处理文件

最常见的用法就是过滤哪一列:

xxxxx | awk -F: '{print $3}'   //以 : 为列分隔符 打印第3列

cat /etc/passwd | awk -F: '{print $3}'  //以 :为分隔符,打印第3列
awk '{print $2}' test.txt               //打印test.txt 文件的第二列

【1】option

-n  //默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。

-e  //允许多个脚本指令被执行

-i  //此选项会直接修改源文件,要慎用。

-f  //该选项会将其后文件中的脚本命令添加到已有的命令中

【2】脚本命令(三种方式)

//'action'   直接写脚本

awk '{print $2}' test.txt               //打印test.txt 文件的第二列

//' /定向/action'   有定向的脚本

awk '/^echo/{print $2}' test.txt               //打印test.txt 文件含echo的第二列

//condition action 有条件的执行脚本

awk '$2<75 {printf "%s\t%s\n", $0, "REORDER";} $2>=75 {print $0;}' testfile

(4)grep 命令

(5)locate 命令

三、C shell 的运行与使用

(1)编写一个C shell 脚本: text.csh

(2)给予 text.csh 脚本文件 可执行权限, 因为编写的脚本文件 是没有可执行权限的

命令 : chmod a+x text.csh ( x 是 可执行权限)

或者 : chmod +x text.csh

(3) 执行脚本的方式:

【a】直接 ./文件名   :会产生子进程,父进程中 cd .. 命令不执行

./text.csh

【b】source ./文件名  : 逐一执行脚本命令,不会产生 子进程

source ./text.csh

C Shell 详解相关推荐

  1. 华为linux基础入门,Linux入门篇 —— Shell详解

    Shell 详解 Shell 简介 Linux精髓在于命令行操作 Shell是一种特殊的程序 是内核与用户的一种接口 Shell命令解释器 Shell一种解释性的语言(内部命令/外部命令) 内部命令: ...

  2. [Shell详解-2]:变量、默认变量、数组

    Shell语法详解目录 文章目录 1. 变量 1.1 变量的定义 1.2 变量的使用 1.3 只读变量 1.4 删除变量 1.5 变量类型 1.6 字符串.单双引号的区别 2. 默认变量(关键词) 3 ...

  3. linux lspci信息 详解_Linux引导之EFI SHELL详解

    上一篇说,我觉得许多EFI SHELL的文章,总是没讲透.所以我想将EFI SHELL掀个底儿朝天. 磁盘上的EFI系统分区,即 EFI system partition,简写为 ESP. UEFI类 ...

  4. HBase的hbase shell 详解

    进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表,里面包含info,date两个列族 create 'user','info','data' creat ...

  5. Wscript.shell 详解

     Wscript.shell Wscript.shell是Wshshell的ProID Wshshell 是一个对象,存放在windows系统中的wshom.ocx文件 中,可供在windows上 ...

  6. HOOPS Shell详解

    Shells   Shell是一个多边形的集合,形成一个三维物体.如果Shell是封闭的,里面没有孔,那么Shell就把三维空间分成两部分,称为Shell的内部和外部.一个Shell由一个或多个多边形 ...

  7. WndObj001Wscript.Shell详解

    声明:本人新学按精,对于程序中经常出现的Obj=Creatobject("wscript.shell")有各种疑问,而本论坛并无关于该object的详细介绍.故baidu之.在此对 ...

  8. 解释linux中的三种重定向,Linux重定向及反弹shell详解

    这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x ...

  9. Shell语法详解专栏目录

    Shell语法详解专栏 1. [Shell详解-1]:概论.注释 2. [Shell详解-2]:变量.默认变量.数组 3. [Shell详解-3]:expr命令.read命令 4. [Shell详解- ...

最新文章

  1. Microsoft StreamInsight 构建物联网
  2. Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!]
  3. 在popup窗口中俘获事件的缺陷修复
  4. 我司那产品经理丨第三期
  5. 5个常用的htaccess技巧
  6. 计算机ppt试题训练,powerpoint2010操作题 计算机POWERPOINT操作题
  7. Centos 6.6 安装
  8. 备忘录模式(Memento Pattern)
  9. 饥荒联机云服务器_GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
  10. python 操作目录注意事项
  11. 地表最强之Android开机动画动态替换
  12. ListView控件的使用
  13. 以接口请求的方式,解决移动端页面中字体文件过大的问题
  14. python中def fun()是什么意思_python def 参数
  15. Linux主机驱动与外设驱动分离思想 1
  16. go mod出现zip: not a valid zip file的解决办法
  17. 【流媒体开发】9、ffmpeg实现视频录制
  18. H5+CSS+JS Tab导航栏自动切换
  19. 宝塔面板如何添加免费的waf防火墙?
  20. 渗透测试SQL注入——Sqlilabs关卡详解

热门文章

  1. 网卡用来实现计算机和什么之间的物理链接,2015年上期《计算机网络技术》期中考试试卷...
  2. 流量计脉冲计数器开关量信号采集器
  3. rf 遍历列表_RF断言总结
  4. 【LeetCode】234. Palindrome Linked List
  5. 人工智能下的智慧运维实践一BIM 技术运维
  6. 【Java】数组对象转实体对象
  7. Flutter 、Vue、React Native 、Weex哪个好
  8. 强化学习经典视频教程总结
  9. 电脑android模拟器下载地址,仙域奇缘电脑版怎么下载 安卓模拟器电脑版下载地址...
  10. 亿发软件:医疗器械GSP信息管理软件(质量管理系统) ,专业gsp过检版本