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命令中的词

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值