发信人: albin (阿乐斌), 信区: LINUX
标 题: LINUX选修课讲义:shell简介
发信站: 碧海青天 (Wed Apr 21 23:08:17 1999), 转信
版权声明:
本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行
任何商业性或赢利性活动。转载时请保留本版权声明。
作者:何斌武,hbwork@dlut.edu.cn,大连理工大学网络中心,April 1999.
URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/
------------------------------------------------------------------------------
UNIX Shell
1. 概况
UNIX常用shell
Bourne Shell(sh,bash), Korn shell(ksh), csh(csh, tcsh)
与每个shell相关功能/知识如下:
. Shell与UNIX之关系
. Shell之特殊性
. Shell环境变量的设置
2. shell与内核的交互作用
系统启动过程中内核(/unix,/vmunix,/boot/zImage等)将加载至内存直到系统关机,在启动
过程中,init将扫描/etc/inittab,在此文件中将列出可用的终端及其属性,一旦找到活动
的终端,getty(mingetty,LINUX)会给出login提示符和口令,确认完成后将启动相应的
shell(/etc/passwd文件中用户的SHELL域).
流程图如下:
UNIX Kernel -----------> init -----+-------> getty <--> Username and password
^ ^ + (提示用户输入用户
| | | 名及口令)
V | V
/etc/inittab | login (读用户数据库/etc/passwd)
(init配置文件) | +
| |
+-------用户正确?
| No +
| | Yes
| |
| V (/etc/passwd文件中的用户shell)
+---------shell <----------+
exit + |
| |
| |
+---用户命令---+
在上图中,getty(mingetty)提示输入用户及口令,然后将用户名及口令传递给login,
login验证用户及口令是否匹配,如果身分验证通过,login将会自动转到其$HOME,并
启动在/etc/passwd域中所列出的shell程序,然后将控制权移交到所启动的任务(在移
交之前分别完成setgid,setuid). 如在/etc/passwd文件中用户的shell域为/bin/sh:
sh --> Read File /etc/profile -> Read file $HOME/.profile
系统定义变量 用户定义变量
-------------------------+-------------------------
|
V
给出shell提示符$PROMPT,默认为$ <-------------------+
+ |
| |
| |
+----------执行用户命令-------------+
|
exit
| 结束
V
控制权交给init
Shell与子进程:层次关系
+--------------------+
| 用户进程 |
| +----------------+ |
| | shell | |
| | +------------+ | |
| | | Unix Kernel| | |
| | | +--------+ | | |
| | | |Hardware| | | |
| | | +--------+ | | |
| | +------------+ | |
| +----------------+ |
+--------------------+
3.shell的自动执行功能
在shell script中的第一行开始: #!/bin/sh
4. shell的功能及特点
.命令行解释
.保留字
.通配符
.访问、处理命令
.文件处理:I/O重定向及管道
.命令替换
.变量维护
.环境控制
.shell编程
.SHELL常用特殊字符含义
各功能及特点解释:
.命令行解释,去掉不必要的信息后再传递给内核处理
[hbwork@helius hbwork]$ echo Part A Part B Part C
Part A Part B Part C
[hbwork@helius hbwork]$ echo "Part A Part B Part C"
Part A Part B Part C
.保留字
do,done,for,while,shift,if,then,else,fi
.通配符
? * []
.访问、处理命令
$PATH -> True Path name to kernel
.文件处理:I/O重定向及管道
$ls > filelist
$wc -l files ( = wc -l < files)
#ls -l | sort -nr |more
.命令替换 `command`
将所有文件扩展名的filename.tar.gz的文件改为filename.tgz
#!/bin/sh
for i in *.tar.gz
do
mv $i `basename $i .tar.gz`.tgz
done
通过crontab任务每天备份系统日志文件的shell script
#!/bin/sh
Filename=`date "+%Y%m%d"`
cp /var/log/syslog /backup/log/$Filename
.变量维护
sh: LOOKUP=/home/mydir
export LOOKUP (LOOKUP变量对子进程可见)
csh: set LOOKUP = /home/mydir
setenv LOOKUP /home/mydir
变量替换: PATH=/usr/local/bin:$PATH; expot PATH
.环境控制
当用户进入UNIX环境时将自动启动相应的SHELL,SHELL将对用户建立一个特定的环境,
此环境包括如下常用环境变量:TERM, PATH等。
sh 环境变量文件: /etc/profile $HOME/.profile
csh: /etc/csh.cshrc $HOME/.cshrc
shell启动选项:
sh -x script_file_name 语法检查
sh -i 无连接终端
.shell编程
Shell除了是一个命令行解释器外,同时还是一个功能相当强大的编程语言,大多数UNIX
系统的启动文件(rc files)都是使用shell script。
. SHELL常用特殊字符含义
$ shell变量名的开始,如$var
| 管道,将标准输出转到下一个命令的标准输入
# 注释开始
& 在后台执行一个进程
? 匹配一个字符
* 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)
$# 传递给shell script的参数个数
$* 传递给shell script的参数
$? 上一个命令的返回代码
$$ 进程标识号(Process Identifier Number, PID)
> 输出重定向
< 输入重定向
` 命令替换,如 filename=`basename /usr/local/bin/tcsh`
>> 输出重定向,append
[] 列出字符变化范围,如[a-z]
. filename (Bourne Shell, bash)执行文件 filename
source filename (csh) 执行文件filename
小结:shell是用户的UNIX内核的一个接口,进行命令解释(键盘输入),进行文件名和变量
替换,重定向I/O,定位可执行文件,shell可创建子进程并管理其运行;同时shell
维护用户的环境变量,是一个功能强大的编程语言。
--
[1;36m※ 修改:.albin 于 Apr 21 23:10:27 修改本文.[FROM: apple.dlut.edu.c][m
[m[1;32m※ 来源:.碧海青天 bbs.dlut.edu.cn.[FROM: apple.dlut.edu.c][m
相关推荐
数据埋点系列 3|数据质量保证:验证、清洗与管理
数据质量管理是一个持续的过程,需要技术和组织文化的共同支持。通过本文,我们深入探讨了数据质量保证的各个方面,从基本的验证和清洗技术,到高级的监控和自动化策略。主动的而非被动的自动化的而非手动的持续的而非一次性的全面的而非局部的随着数据在决策中的作用越来越重要,确保数据质量将成为每个数据驱动型组织的核心竞争力。通过实施本文中讨论的策略和技术,你将能够建立一个强大的数据质量保证体系,为你的组织带来更可靠、更有价值的数据洞察。
Linux基础类型题
一.单选题(共79题,71.1分) 1 普通用户能否读取位于自己主目录中、权限是“400”的、属于root用户的文件的内容 : A、 能 B、 不能 正确答案: B 我的答案:B得分: 0.9分 答案解析: 2 对于所有用户都能读的文件权限是: A、 707 B、 444 C、 604 D、 640 正确答案: B 我的答案:B得分: 0.9分 答案解析: 3 下列目录中存放的是日志文件的是: A、 /var B、 /usr C、 /tmp D、 /var/log 正确答案: D 我的答案:D得分: 0.9
《LangChain技术原理剖析:OpenAI Function Calling的实践与应用》
,"unit": {},name:函数的唯一标识符:自然语言描述,决定LLM如何选择该函数parameters:定义输入参数的完整Schema。
LINUX选修课讲义:汉字终端的安装!
发信人: albin (阿乐斌), 信区: LINUX标 题: LINUX选修课讲义:汉字终端的安装!发信站: 碧海青天 (Sun Apr 25 23:33:26 1999), 转信版权声明: 本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行 任何商业性或赢利性活动。转载时请保留本版权声明。 作者:何斌武,hbwor
git连接华为软件开发云
我用的是github客户端的git shell 连接。用git bash也可以github客户端下载地址:https://desktop.github.com/1.在华为软件开发云上创建代码仓库2.在本地创建密钥SSH密钥帮助文档公钥是代码托管服务(CodeHub)识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与代码托管服务(CodeHub)建立联系, 然后您就可以很方便的将本地...
从USB 2.0到USB 3.x:Synopsys SVT USB VIP配置避坑与接口选择指南
本文详细解析了从USB 2.0到USB 3.x的Synopsys SVT USB VIP配置要点,涵盖协议版本选择、物理接口匹配及UVM层次化架构实现。重点介绍了layering sequence的配置技巧和常见问题解决方案,帮助验证工程师高效避坑并优化验证流程。
Bourne Shell及shell编程
Bourne Shell及shell编程 作者: 何斌武 ([email]hbwork@dlut.edu.cn[/email],大连理工大学网络中心,April 1999.) 修改: shark巨菜(原文较老,经实践后加入了部分注释) 介绍:Bourne Shell 基础及其他很多有用的特性,shell编程及组织。主要内容:.shell基础 基本介绍,环...
实战篇(七):使用Processing和PixelFlow库创建交互式流体太极动画
类:用于配置流体运动的参数,比如圆的位置、半径、运动的角度和速度以及颜色等。类:实现了接口,用于更新流体物理仿真的状态,同时整合声音输入作为流体动态变化的一部分。my_update方法:是流体物理仿真更新的核心,它计算流体粒子的速度和位置,并且将这些数据传递给流体库来模拟流动。现在,让我们进一步分析并解释每个部分的作用以及如何操作。float x;// 圆心位置xfloat y;// 圆心位置y// 半径// 是否是顺时针// 圆周运动,弧上的点位置,以及上一帧的点位置// 角度。
LINUX选修课讲义:UNIX常用命令
发信人: albin (阿乐斌), 信区: LINUX标 题: LINUX选修课讲义:UNIX常用命令发信站: 碧海青天 (Wed Apr 21 23:14:19 1999), 转信版权声明: 本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行 任何商业性或赢利性活动。转载时请保留本版权声明。 作者:何斌武,hbwor
超强干货之---Python-数据爬取(爬虫)
定义: 深度优先搜索是一种遍历或搜索树或图的算法,从起始节点开始,一直沿着一个分支走到底,再回溯到上一个节点继续搜索下一个分支,直到遍历完所有节点。特点递归:通常用递归实现,或者使用栈来模拟递归过程。内存占用低:在有大量分支的情况下,内存占用比广度优先搜索低。适合目标较深的情况:如果目标节点距离起始节点较深,DFS能更快找到目标。适用场景需要遍历所有节点的情况,如生成树、迷宫搜索。目标节点较深,且分支较多时。在大规模数据爬取时,选择合适的存储方式取决于数据的规模、结构和访问需求。
ShardingSphere 分库分表避坑:扩容数据迁移时,如何做到“不停机、不丢数据”?
停机:发布公告,凌晨 0 点停止对外服务。洗数据:跑一个巨大的脚本,把旧库数据 Hash 算出新路由,写入新库。改配置:修改代码里的分片规则。重启:祈祷数据没丢,服务正常。这种“刀耕火种”的方式,风险极高,且随着数据量增大,停机时间会变得不可接受。我们需要的是Online Migration (在线迁移)。分库分表扩容不再是“听天由命”的赌博。通过,我们将一次高风险的“运维操作”变成了一个可控的、可视化的“数据流转过程”。方案停机时间复杂度回滚难度传统停机清洗。
LINUX选修课讲义:文件系统
发信人: albin (阿乐斌), 信区: LINUX标 题: LINUX选修课讲义:文件系统发信站: 碧海青天 (Wed Apr 21 23:35:36 1999), 转信版权声明: 本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行 任何商业性或赢利性活动。转载时请保留本版权声明。 作者:何斌武,hbwork@dl
Unreal5 从入门到精通之 如何实现 离线语音识别
本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。
Bourne shell编程入门及脚本测试
Bourne shell编程入门及脚本测试(转)*****************************************************************************本文由正泰linux http://linux-down.kmip.net 搜集,整理,如需转载,请注明出处!本站有大量的linux电子教程,软件,技术文档,欢迎大家访问!站长阿泰qq:
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
嵌入式Linux开发必备:Shell脚本自动化实战与性能优化指南
Shell脚本作为Linux系统的核心自动化工具,其本质是一种解释型脚本语言,通过调用系统命令和工具实现任务自动化。其工作原理基于Shell解释器逐行解析执行,具备轻量级、低依赖和高效率的技术特点。在嵌入式开发领域,Shell脚本的技术价值尤为突出,能够实现零额外依赖的系统操作,直接与硬件交互,并高效管理资源受限环境下的编译、部署和监控任务。应用场景广泛覆盖嵌入式Linux的系统启动定制、自动化编译、批量文件处理、系统状态监控和固件升级等关键环节。本文聚焦嵌入式Linux开发中的Shell脚本实战,深入解析
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
unix linux windows内容简介基本概念,《Unix Linux操作系统》课程教学大纲
《Unix/Linux操作系统》课程教学大纲一、课程基本信息课程名称:Unix/Linux操作系统英文名称:Operating System of Unix/Linux课程类别:专业选修课学时:48(其中理论36学时,实验12学时)学分:3适用对象: 计算机科学与技术专业,网络工程专业考核方式:考察先修课程:操作系统、C语言二、课程简介本课程的目的主要是通过本课程学习,使学生比较深入地理解掌握LI...
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
Linux环境编程--shell打印金字塔
由于上的是选修课,所以只是对课上的知识以及题目进行整理,可能细节并不是那么完善,请谅解 shell打印金字塔:shell语言的语法细节较多,需要多加注意,但是一般涉及的代码量不会太多,因为主要是用于系统运维的 #! /bin/bash if [-z $1];then echo "no input:" exit fi for ((i=1;i<=$1;i++));do for ((j...
Linux系统命令及Shell脚本实践指南笔记
说实话,这真是一本比较入门的Linux书籍,笔记,已经尽可能记录了,不过还是没有记多少,基本还没有学校的选修课讲的深入 常用文件含义 /etc/issue:修改登录提示语 /etc/passwd:用户密码文件 依次为 用户名,密码(实际存储在/etc/shadow中),uid,gid,说明,家目录,登录shell /etc/shadow:存储密码信息(密码是加密过的,且只有管理员可以查看) /etc/hosts:同Windons下的Hosts文件 常用指令 date +格式化 例如 date +%Y-%
Linux 大学修炼之路:从懵懂新生到系统掌控者
Linux 的宇宙浩瀚无垠,从内核源码的深奥到 Kubernetes 集群的庞杂,从一行 Shell 命令的巧思到支撑亿级用户系统的宏伟架构,它既是技术的基石,也是创新的沃土。大学四年,是你构建这座知识金字塔的黄金时期。不要满足于 “会用”,要追求 “懂得”;不要止步于 “部署”,要深入 “设计”;不要畏惧 “崩溃”,要享受 “排障”。每一次的挫折,每一次 OOM Killer 的困惑,每一次成功调优的喜悦,都是你成长为顶尖工程师的烙印。
Linux基础指令:从零开始掌握命令行(合集)
每一行命令的执行,都是对确定性的一次祈祷。今天聊 Linux 基础指令。
Bourne Shell及shell编程 (1) z
发信人: albin (阿乐斌), 信区: LINUX标 题: LINUX选修课讲义:Bourne Shell及shell编程(1)发信站: 碧海青天 (Wed Apr 21 23:41:45 1999), 转信版权声明: 本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行 任何商业性或赢利性活动。转载时请保留本版权声明。 作者:何斌武,hbwor
Shell版精华集锦
发信人: Altmayer (alt>>追求>>堕落>>极限>>), 信区: GNULinux 标 题: Bourne Shell及shell编程(1) 发信站: 饮水思源 (2001年12月30日00:21:48 星期天), 站内信件 【 以下文字转载自 Altmayer 的信箱 】 【 原文由 Altmayer.bbs@altmayer.dhs....
shell编程实例教程
Bourne Shell及shell编程版权信息作者Altmayer.bbs@altmayer.dhs.org文章出处黄嘴企鹅论坛 javalee转贴文档制作拒绝正版作者声明 本文内容为大连理工大学LINUX选修课讲义欢迎大家转载但禁止使用本材料进行任何商业性或赢利性活动转载时请保留本版权声明作者何斌武hbwork@dlut.edu.cn,大连理工大学网络中心April 1999. URL: ft...
1461



被折叠的 条评论
为什么被折叠?



