C Shell 详解
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 详解相关推荐
- 华为linux基础入门,Linux入门篇 —— Shell详解
Shell 详解 Shell 简介 Linux精髓在于命令行操作 Shell是一种特殊的程序 是内核与用户的一种接口 Shell命令解释器 Shell一种解释性的语言(内部命令/外部命令) 内部命令: ...
- [Shell详解-2]:变量、默认变量、数组
Shell语法详解目录 文章目录 1. 变量 1.1 变量的定义 1.2 变量的使用 1.3 只读变量 1.4 删除变量 1.5 变量类型 1.6 字符串.单双引号的区别 2. 默认变量(关键词) 3 ...
- linux lspci信息 详解_Linux引导之EFI SHELL详解
上一篇说,我觉得许多EFI SHELL的文章,总是没讲透.所以我想将EFI SHELL掀个底儿朝天. 磁盘上的EFI系统分区,即 EFI system partition,简写为 ESP. UEFI类 ...
- HBase的hbase shell 详解
进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表,里面包含info,date两个列族 create 'user','info','data' creat ...
- Wscript.shell 详解
Wscript.shell Wscript.shell是Wshshell的ProID Wshshell 是一个对象,存放在windows系统中的wshom.ocx文件 中,可供在windows上 ...
- HOOPS Shell详解
Shells Shell是一个多边形的集合,形成一个三维物体.如果Shell是封闭的,里面没有孔,那么Shell就把三维空间分成两部分,称为Shell的内部和外部.一个Shell由一个或多个多边形 ...
- WndObj001Wscript.Shell详解
声明:本人新学按精,对于程序中经常出现的Obj=Creatobject("wscript.shell")有各种疑问,而本论坛并无关于该object的详细介绍.故baidu之.在此对 ...
- 解释linux中的三种重定向,Linux重定向及反弹shell详解
这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x ...
- Shell语法详解专栏目录
Shell语法详解专栏 1. [Shell详解-1]:概论.注释 2. [Shell详解-2]:变量.默认变量.数组 3. [Shell详解-3]:expr命令.read命令 4. [Shell详解- ...
最新文章
- Microsoft StreamInsight 构建物联网
- Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!]
- 在popup窗口中俘获事件的缺陷修复
- 我司那产品经理丨第三期
- 5个常用的htaccess技巧
- 计算机ppt试题训练,powerpoint2010操作题 计算机POWERPOINT操作题
- Centos 6.6 安装
- 备忘录模式(Memento Pattern)
- 饥荒联机云服务器_GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
- python 操作目录注意事项
- 地表最强之Android开机动画动态替换
- ListView控件的使用
- 以接口请求的方式,解决移动端页面中字体文件过大的问题
- python中def fun()是什么意思_python def 参数
- Linux主机驱动与外设驱动分离思想 1
- go mod出现zip: not a valid zip file的解决办法
- 【流媒体开发】9、ffmpeg实现视频录制
- H5+CSS+JS Tab导航栏自动切换
- 宝塔面板如何添加免费的waf防火墙?
- 渗透测试SQL注入——Sqlilabs关卡详解
热门文章
- 网卡用来实现计算机和什么之间的物理链接,2015年上期《计算机网络技术》期中考试试卷...
- 流量计脉冲计数器开关量信号采集器
- rf 遍历列表_RF断言总结
- 【LeetCode】234. Palindrome Linked List
- 人工智能下的智慧运维实践一BIM 技术运维
- 【Java】数组对象转实体对象
- Flutter 、Vue、React Native 、Weex哪个好
- 强化学习经典视频教程总结
- 电脑android模拟器下载地址,仙域奇缘电脑版怎么下载 安卓模拟器电脑版下载地址...
- 亿发软件:医疗器械GSP信息管理软件(质量管理系统) ,专业gsp过检版本