Unix Shell编程(第三版)学习笔记

本文介绍了Unix Shell的多种版本,如Bourne shell、Bourne-again shell等,并详细讲解了Shell的基础命令,如date、echo、ls、cat等。此外,还探讨了正则表达式的使用、文件管理、重定向、管道、进程控制以及Shell编程的初步知识,包括循环、条件语句和函数。文章最后提到了Shell的交互特性和作业控制,如命令历史、别名和后台作业管理。
摘要由CSDN通过智能技术生成
看了本书,做个记录。

Shell 版本简介


Bourne shell        /bin/sh        
Bourne-again shell  /bin/bash      GNU shell兼容Bourne shell,Linux使用
C shell             /bin/csh       Sun默认
Korn shell          /bin/ksh
TENEX C shell       /bin/tcsh
/etc/shells文件,记录
root@duyuqi-OptiPlex-380:~/Unix/test# cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash


Shell是一种实用程序。Unix允许用户登录时,init程序为每个终端自动启动getty程序,getty确定波特率,并在分配给他的
终端上显示“login:”信息,然后等待用户键入信息。用户键入信息并以回车结束,getty程序会消失。getty离开之前,会
启动login程序去完成登录处理。login开始执行时,终端上显示“Password:”然后等待用户键入口令。输入完成后,login程序
会验证登录名和口令文件/etc/passwd中的相应条目是否一致(包括检查口令是否与存储在文件/etc/shadow中的一致),确认口令后启动
默认shell程序。
Linux口令文件/etc/passwd——root:x:0:0:root:/root:/bin/bash——用户名:密码:用户ID:组ID:注释字段:主目录路径:默认shell


第二章 基础命令
date,echo
查看登录系统的用户:who

Unix系统文件名不超过255个字符,超过部分忽略

ls,cat(catenate,连接)
统计文件中的单词数:wc
-l:文件行数
-c:文件中字符数目
-w:文件的单词数目

cp,mv

Shell中的通配符
1.* 匹配0个或以上字符,自动将*号替换为当前目录中的所有文件的文件名
eg:显示当前目录中的所有文件的文件名
root@duyuqi-OptiPlex-380:~# echo *
blog DataStruct fifo fifo.s Linux系统管理 tcpdump.txt Unix workspace 公共的 模板 视频 图片 文档 下载 音乐 桌面
eg:显示当前目录下以f开头的文件名
root@duyuqi-OptiPlex-380:~# echo f*
fifo fifo.s

2.? 匹配一个字符

3.匹配单字符[],反过来匹配[!]
[abc]匹配abc中的一个字符
[0-9]匹配从0-9中的一个字符
[!a-z]匹配除小写字符以外的字符
*[!o]匹配任何不以小写字母o结尾的文件名

输出重定向: 
>filename1:文件原内容丢失,前面没有命令shell会创建一个空文件,若文件以前已经存在,其内容会丢失。实际上是1>filename
 >>filename2:追加到文件后面
输入重定向:
<filename
标准错误重定向:
Unix中吧大多数错误信息写在标准错误,大多数情况下,根本分不清stdout和stderr
检验方法:cmd >filename;在终端输出的是标准错误,在文件filename中的信息是标准输出
cmd 2> filename:标准错误重定向(标准输出正常输出),2和>之间不能有空格
cmd > null 2> null(不稳妥,可能在本地创建名为null的文件):标准输入和标准错误都重定向到垃圾桶设备。同cmd > /dev/null 2> /dev/null
command >& 2 把命令的标准输出重定向到标准错误,>&符号(中间不能有空格)表示输出重定向到跟其后的文件描述符相关联的文件。
把标准输出和标准错误都写入文件foo中:command >foo 2>>foo 或者 command >foo 2>&1
>&-的作用是关闭标准输出,如果前面加上文件描述符,就关闭与之关联的文件。
<&-的作用是关闭标准输入

管道:
who|wc -l:把who的标准输出重定向到wc -l的标准输入

过滤器:Unix术语中的过滤器通常指,能够从stdin接受输入,对输入进行处理后,把结果写入标准输出的任何程序。

命令最后加&,可以将命令发送到后台,使执行时间较长的命令不再占用终端,可以继续处理其他工作。 eg:
root@duyuqi-OptiPlex-380:~/Unix/shell/ch2# cat file &
[1] 3217
命令发往后台,Unix系统自动显示两个数字,工作号和进程标识号

ps命令:可以告诉用户有关系统中正运行的进程的信息。不带选项的ps命令只显示属于当前终端的进程的信息。
选项: -A:所有的进程均显示出来
a:与终端无关的所有进程
-u:有效用户的相关进程
x:通常与a参数一起使用,可列出较完整的信息
-l:较长较详细的显示出该PID的信息
j:作业的格式
-f:更为完整的输出

输出信息表头F(进程的标志,4表示为超级用户),S(进程状态STAT),PID(进程ID),PPID(父进程ID),C(CPU使用的资源百分比),
PRI(优先级Priority的缩写),NI(NICE值),ADDR(指出进程在内存的那一部分,运行的进程是-),SZ(用掉的内存大小),
WCHAN(当前进程是否正在运行),TTY登录者的终端位置,TIME用掉的CPU时间,CMD所执行的命令,
USER(进程属于哪个用户账号),VSZ(进程使用的虚拟内存量),RSS进程占用的固定内存量,START进程被触发启动的时间

第三章 什么是Shell
Shell用特定字符判断程序的起止位置以及每个参数的起止位置,这些字符为空白字符,包括空格字符,横向制表符,行结束符(即换行符LF)
Shell会忽略过多的空白字符。
Shell在磁盘上搜索想执行的程序,直到找到为止。然后请求Unix内核为程序的执行作初始化。有些命令shell自己知道如何执行他们,这些命令是
内部命令。在Shell搜索磁盘前,首先判断该命令是不是内部命令。若是,Shell会直接执行该命令。
Shell是解释性程序语言,易于调试和修改,但更耗时间

第四章 正则表达式
行编辑器ex,ed  
grep,sed,awk,vi等程序的基础,最为重要的一部分。
正则表达式
匹配字符组之一符号[], 匹配一个指定范围内的一个字符,如'[Gg]rep'匹配Grep和grep。
eg:grep -n '[Gg]rep' filename

反向符号^,
eg:grep -n '[^g]oo'//匹配oo前不是g的文本行,^在[]内表示反向符号
行首符号^,
eg:grep -n '^[^A-Za-z]' filename//匹配行首不是字母的文本行,注意反向符号和行首符号的区别。
行尾符号$,^M为windows下的换行符
eg:grep -v '^[$#]' filename//过滤空白行和注释行(设#为注释符号,如Shell脚本makefile文件等)
.匹配一个任意字符
*(0个或者多个,bash中表示任意字符串)
eg:grep -n 'g.*g' filename// 匹配g开头g结尾的字符串    
\<: 表示词首. 如 \<abc 表示以 abc 为首的词.
\>: 表示词尾. 如 abc\> 表示以 abc 结尾的词.
限定范围字符{},匹配精确数目的字符串
grep -n 'go\{2,5\}' filename//匹配g后面跟2-5个o的文本行
grep -n 'go\{2,\}' filename//匹配g后面跟2个以上o的文本行
?: 表示前一个char 的出現次数为 0 或 1 次. 如 ab?c 表示 a 与c 之间可有 0 或 1 个b 存在.

保存匹配的字符串:\(...\),把字符包括在前加反斜杠的小括号中,可以捕获正规表达式匹配的字符串,捕获的字符串存储在编号为1—9的寄存器中。
eg:s/\(.*\) \(.*\)/\2 \1/交换两个字段,将一行按照第一个空格为分界点分成两个字段,交换这两个字段

ed命令:ed filename
/pattern:搜索第一次匹配pattern的行,
/ :重复上次搜索
1,$p:显示所有行(从第一行到最后一行)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值