Unix操作系统基础4-shell

本文介绍了Unix系统的Shell作为用户与操作系统间的主要接口的功能和特点。详细解释了Shell的内部命令、流控制、变量机制及编程应用,并探讨了通配符、文件查找、I/O重定向、管道、find和grep命令等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell探索

Unix系统的组成

内核:常驻内存

应用:需要时调入内存

[硬件] <-----> [内核]<-----> [驻留模块] <-----> [Shell] <-----> [用户]

Shell特点和功能

  • 用户与操作系统间的主要接口,管理用户与系统之间的对话

  • 本身是一个程序,用户登录系统时调入内存

  • 本身提供了一些内部命令,还可以启动应用程序

  • 提供了流控制和变量机制,将命令进行组合,可以作为编程工具

注:教材提供了Shell编写数据库应用的实例。后续课程是Unix系统编程。

通配符和文件的查找

  • ?: 任何一个单字符

  • *0个或多个字符

  • [list]list中设定的任一字符

  • [!list]:不在list中设定的任一字符

  • [-]



$rm *.*

$rm * // 删除所有文件

$rm report * // 先删除report,然后删除所有的文件,导致灾难性的后果

I/O重定向

标准文件

  • 对每个进程,会自动打开三个标准文件。

  • Standard input,通常是键盘

  • Standard ouput,通常是屏幕

  • Standard error,通常是屏幕

文件指针

  • 默认的情况下,程序的三个文件指针指向标准文件。

  • 使用重定向符号可以指定文件指针指向的文件。



文件指针 重定向符号 标准文件

0 < (or <<) stdin

1 > (or >>) stdout

2 2> stderr



例:

$cat myfirst > myfirst.copy // 拷贝文件

$cat f1 f1.copy >> xyz // 合并文件到另一个文件尾

$cp test 2> out // 将错误信息输出到文件

$cat filea fileb 2> /dev/null // /dev/null 是一个特殊的文件,总是空的,将数据输出到这个文件,相当于删除。

重定向的组合

  • $command < input > outfile 2> errfile

  • $command > outfile 2> &1 // &1指代文件指针1

  • $command 2> &1 > outfile // 与前一个命令执行结果不同。重定向的展开是分步骤进行的, “2> &1 ”影响指针2,“> outfile”配置指针1

管道

  • 多个命令之间用“|”分隔。

  • 每一个命令的标准输出变为下一个命令的标准输入。

  • $ ls | wc -w

  • $ ls | grep ^n | wc -l // 以字母n开头的文件名

tee 分离输出

  • 从标准输入读入数据,将数据发送到两个不同的目的地:标准输出和文件。

  • 用于获得管道中的信息流的快照。

  • $ ls | tee /temp/ls.save | wc -l

群命令

用分号“;”分隔多个命令

续行符 /



Find 命令

  • 格式:find path expression

  • 查找选项:-name 文件名

  • 文件名在用通配符时要用引号括起。

  • $ find . -name sum

动作选项

  • print

  • -exec command /; // 可用{}代表发现的文件名

  • -ok command /; // 执行命令前请求确认

  • $find . -name 'm*' -exec ls -l {} /;

grep 命令

  • global regular expression print

  • 查找匹配特定模式的文本行;

  • 分类:简单匹配和正则表达式匹配;

  • 格式:grep [option] pattern [file1 file2 ...]

  • $ who | grep team01

  • -i 忽略大小写

  • -c

  • -v 显示不含的行。 $grep -vi UNIX file

Sort

可以指定排序所用的字段: $more animal | sort -t. +1 // .分隔字段,偏移一个字段

可以指定排序所用字段的第几个字符:$more animal | sort +0.1 //第0个字段,偏移一个字符

选项:-r // 反序

选项:-n // 按照数字排序

head

查看一个或多个文件的前几行内容

格式:head [-number] files

$: ls -l | head -2

tail

查看从指定行到文件末尾的内容

格式:tail [-number | + number] file // -number: 倒数的行数, +number: 正数的行数

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值