鸟哥私房菜 第三部分 学习shell与shell script 学习笔记

鸟哥私房菜 第三部分 学习shell与shell script 学习笔记

书本目录:

第三部分 学习shell与shell script
第10章 vim程序编辑器
第11章 认识与学习bash
第12章 正则表达式与文件格式化处理
第13章 学习shell script

shell定义

shell壳程序:操作系统的内核管理系统的硬件,内核需要进行一定的保护,防止被用户错误导致系统崩溃。可程序是一个在用户和内核之间的桥梁,shell壳程序包含着很多命令,用户通过壳程序和内核进行交互,从而控制硬件。

Unix shell的类型

各主要操作系统下缺省的shell:

AIX下是Korn Shell。
Solaris缺省的是Bourne shell。
FreeBSD缺省的是C shell。
HP-UX缺省的是POSIX shell。
Linux是Bourne Again shell。

Bourne Shell(sh)

首个重要的标准Unix Shell是1979年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和 H O M E / . p r o f i l e 文 件 。 / e t c / p r o f i l e 文 件 为 所 有 的 用 户 定 制 环 境 , HOME/.profile文件。/etc/profile文件为所有的用户定制环境, HOME/.profile/etc/profileHOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。

C shell(csh)

Bill Joy于20世纪80年代早期,在加利福尼亚大学伯克利分校开发了csh。它主要是为了让用户更容易地使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。

Korn Shell(ksh)

有很长一段时间,只有两类shell供人们选择——Bourne shell用来编程,csh用来交互。为了改变这种状况,AT&T贝尔实验室的David Korn开发了ksh。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,ksh广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。ksh是一个交互式的命令解释器和命令编程语言。它符合POSIX——一个操作系统的国际标准。POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell(bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux。大多数的Linux(Red Hat、Slackware、Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。

POSIX Shell(sh)

POSIX shell是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh。

命令

命令的查找顺序

根据相对路径或者绝对路径查找
alias命令别名
bash当中查找
PATH路径中查找

命令通配符

*,?,[]

特殊指令

特殊指令含义
#注释
|管道操作pipe
;连续命令分隔符
!逻辑非操作
&后台执行命令
( )子shall
{ }命令区块
" "具有变量替换的功能
’ ’不具有变量替换的功能
|| && ;

; 表示顺序执行,无相关性
|| 两个命令中只执行一个
&& 前一个命令执行了才执行下一个,否则都不执行

管道操作pipe

管道外只处理标准标准输出信息

重定向

stdin :标准化输入
stdout :标准化输出
stderr : 标准错误输出
/dev/null : 输出到null(不输出)
&1 : 标准化输出
&2 : 标准错误输出

> 清空输出
>> 追加输出

2>&1 将stderr整合到stdout输出
1>&2 把stdout整合到stderr
>/dev/null 把stdout整合到/dev/null
1>/dev/null 把stdout整合到/dev/null

常用组合

# 命令后台执行不输出
命令 >/dev/null 2>&1 &
# 命令后台执行不输出,忽略SIGHUP信号
nohup 命令 >/dev/null 2>&1 &
# 命令后台执行,日志输出到文件/tmp/com.log
命令 >/tmp/com.log 2>&1 &
变量

$ 当前shell使用的PID(进程ID)
? 上个命令的返回值,成功执行返回的是0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值