shell脚本0——”一切皆文件“, 认识Shell
一、”一切皆文件“与“管道”
1)管道:grep foo /path/to/file | grep -n -k 3 | more
实际过程与我们直观认为的相反,最好通过实际过程理解。首先运行的是more,它的输入被连接至一个管道。然后是sort,并且其输出被连接至之前的那个管道。接着创建第二个管道,并且将sort的stdin连接至该管道。最后执行grep,将其stdout连接至与sort进程相连的那个管道。
当grep开始运行并输出数据时,数据顺着管道流向sort,sort处理后顺着管道输出到more,由more对管道输出的全部内容进行分页输出。在由错误的情况下,这样的过程会有不同的行为,more有错误,不会有任何事情发生,若grep键入错误,则more和sort会执行到错误被检测出来。
2)管道的存在使得系统中的工具在编写时假设它们处理的是文本流。”一切皆文件“的概念与4种可执行的文件操作(opne close read write)意味着Unix实际上使用了一种简洁明了的系统设计方法。shell脚本本身也是文本形式的系统实用程序。
二、开始一个shell脚本
1)用户登录的shell程序就是一个设立了程序解释器,解释执行shell脚本;
通常在shell程序的首行指明shell程序采用哪个解释器来执行它,格式为:#!/bin/bash,若没有指明,用当前登陆shell来解释执行,echo $SHELL可以查看登陆的shell程序
2)执行:chmod +x 然后./执行 或者bash *.sh
3)以#开头的行为注释行
三、认识shell
LINUX是一个操作系统,它在CPU、磁盘驱动器、内存、监视器、键盘和其他硬件之间起调节作用。(非图形界面时)当你看那UNIX屏幕时,实际上并没有见到UNIX,只是见到由该操作系统运行的一个程序,它对键盘进行监控并作出相应,这个程序就被称作注册Shell(Login Shell)。
bash 启动新的shell命令
exit 退出
echo $SHLVL
注1:
开头的空格被忽略,缩进只是为了好看
\ 字符让shell忽略换行符, 用于换行接续命令
# 注释,可用在行首、行尾
#!/bin/bash 脚本开头
Shell程序设计:
差不多总是用来使任务自动化。Shell与用户交互的工具非常少,至多可以问用户一个问题和接收一个文本答复,需要用户交互时应使用性能更全面的语言
Shell特性:
别名alias;
命令替换:倒引号(`)把一个命令的输出合并到另一个命令中;
后台处理:(不需要提供输入) find / -name “hello” -print > find.log & ;
变量;
管道(pipe):把一个命令的输出连接到另一个命令的输入。
重定向(redirection):可以改变程序的输入来源和程序的输出地点
模式匹配: ls *.py
特殊字符:
“ 使shell无法认出大多数特殊字符(除去$ `)
‘ 使shell无法认出所有特殊字符
`命令替换
\跟在反斜杠之后的字符就失去其特殊含义
;使一行上放多个命令
&后台
()创建组命令
{}用来创建Shell过程的命令块
|管道
<>&重定向
*?[]!用于文件名模式匹配
$引用变量名开头
#注释
空格 制表符 换行符 通称空白符用于分隔Shell命令中的词
shell脚本0——”一切皆文件“, 认识Shell的更多相关文章
- Shell脚本使用汇总整理——文件夹及子文件备份脚本
Shell脚本使用汇总整理——文件夹及子文件备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html ...
- [linux] shell脚本编程-统计日志文件中的设备号发通知邮件
1.日志文件列表 比如:/data1/logs/2019/08/15/ 10.1.1.1.log.gz 10.1.1.2.log.gz 2.统计日志中的某关键字shell脚本 zcat *.gz|gr ...
- Shell脚本对Linux进行文件校验
Shell脚本对Linux进行文件校验 一.需求 有客户等保需求对文件一致性进行校验,想到利用md5sum工具,因此写脚本来对文件进行自定义扫描,后期可以利用其进行校验,快速校验文件发现变更的文件,一 ...
- 如何使用shell脚本快速排序和去重文件数据
前面写过一篇通过shell脚本去重10G数据的文章,见<用几条shell命令快速去重10G数据>.然而今天又碰到另外一个业务,业务复杂度比上次的单纯去重要复杂很多.找了很久没有找到相应的办 ...
- Centos7下crontab+shell脚本定期自动删除文件
问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ...
- shell脚本实现读取一个文件中的某一列,并进行循环处理
shell脚本实现读取一个文件中的某一列,并进行循环处理 1) for循环 #!bin/bash if [ ! -f "userlist.txt" ]; then echo &qu ...
- [ Shell ] 通过 Shell 脚本导出 GDSII/OASIS 文件
https://www.cnblogs.com/yeungchie/ 常见的集成电路版图数据库文件格式有 GDSII 和 OASIS,virtuoso 提供了下面两个工具用来在 Shell 中导出版图 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- shell脚本:变量,文件判断,逻辑运算等纪要
shell脚本中的变量定义,引用各有不同的方式,除此之外,很常用的有文件属性判断,逻辑运算,数值运算等,下面记录一下它们的属性作用 变量 shell变量的定义分为两种:一种是直接赋值定义,另一种是嵌套 ...
随机推荐
- opencv实践::对象计数
问题描述 真实案例,农业领域经常需要计算对象个数 或者在其它领域拍照自动计数,可以提供效率,减低成本 解决思路 通过二值分割+形态学处理+距离变换+连通区域计算 #include <opencv ...
- 【OUC2019写作】学术论文写作第九小组第一次博客作业
个人简介 潘旻琦:我是潘旻琦:我的爱好是游泳:羊肉泡馍是海大食堂中我最喜欢的一道菜(清真食堂):一句想说的话是:“追随本心,坚持不懈”. 郭念帆:我是郭念帆:我的爱好是足球:海大食堂中最喜欢的一道菜偏 ...
- 17.Linux搭建网络仓库
1.搭建一个网络仓库 服务端:10.0.0.201 1.准备软件包(1.光盘 2.缓存 3.联网下载 4.同步) 1.挂载光盘 mount /dev/cdrom 2.通过ftp共享软件包存放的目录 y ...
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- Veins(车载通信仿真框架)入门教程
Veins入门教程——教你如何下手研究 目录 Veins入门教程——教你如何下手研究 目录 废话少说! 讲解omnetpp.ini!(挑关键的) 讲解RSUExampleScnario.ned! 注意 ...
- 通过反射来手写简单的ORM SQlserver
不说废话,直接上干货,如发现问题,欢迎大家指出,谢谢! //------------------------------------MySQlServerORM [简单 CURD] using Sys ...
- text文本样式二
text-transform样式用于将元素的字母全都变成大小 letter-spacing设置字符之间的间距 <html> <head> <style type=&quo ...
- vue---Excel表格导出
一.安装依赖 npm install file-saver --save npm install xlsx --save npm install script-loader --save-dev 二. ...
- 网页开发利用jq自定义鼠标右击事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- spring boot跨域请求访问配置以及spring security中配置失效的原理解析
一.同源策略 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[orig ...