第4章Shell编程
用户和组的管理
passwd文件格式
账号名称:密码:UID:GID:个人资料:主目录:Shell 每个字段的说明如下: (1) 账号名称:用户登录Linux 系统时使用的名称。 (2) 密码:这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码已经被移动到shadow 这个加密过后的文件。 (3) UID:用户的标识,是一个数值,Linux 系统内部使用它来区分不同的用户。通常Linux 对于UID 有几个限制,具体如下。 ① 0 为系统管理员,即root 用户,所以新建另一个系统管理员账号时,可以将该账号的UID 改成0 即可。 ② 1~500 为保留给系统使用的ID,其实1~65534 之间的账号并没有不同,也就是除了0 之外,其他的UID 并没有区别,但将500 以下的ID 留给系统作为保留账号是一个好习惯。 ③ 500~65535 在Fedora中是给一般使用者用的,passwd 文件最后一行的记录Bob用户的UID就是500。 (4) GID:用户所在组的标识,是一个数值,Linux 系统内部使用它来区分不同的组,相同的组具有相同的GID。 (5) 个人资料:可以记录用户的个人信息,如姓名、电话等信息。 (6) 主目录:root 的主目录为/root,所以当root 用户登录之后,当前的目录就是/root;对于其他用户通常是/home/username,这里username 是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录,如Bob用户的主目录为/home/Bob。 (7) Shell:定义用户登录后使用的Shell 版本,默认是bash。
Linux 的用户
在Linux系统中,每个用户对应一个帐号。Fedora 8安装完成后,系统本身已创建了一些特殊用户,它们具有特殊的意义,其中最重要的是超级用户,即 root。还有一类用户是系统用户,是Linux 系统正常工作所必需的内建用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,如bin、daemon、adm、lp 等用户。系统用户不能用来登录。系统用户也被称为虚拟用户。
Linux中的shell与shell命令
s h e l l与s h e l l命令本章主要内容:shell基本功能及种类shell基本概念I/O重定向与管道shell的启动基本shell命令3.1shell基本功能与基本概念3.1.1shell基本功能shell是用户和Linux内核之间的接口程序。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。
shell一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构shell具有以下基本功能:1.命令解释执行2.文件名替换.3.输入输出重定向4.连通管道建立5.系统环境设置6.shell编程3.1.2字符与保留字1.字符(1)白空格(2)通配符*:代表从它所在位置开始的任何字符串。
?:代表它所在位置上的任何单个字符。
[]:代表一个指定范围的字符。
方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符“-”组成。
通配符模式串意义* 当前目录下所有文件名,但不包括.开头的文件。
例如abc但不是.abc *Text* 当前目录下所有文件名中包含有Text的文件名,但不包括.开头的文件[ab-dm]* 当前目录下所有以a、b、c、d、m开头的文件名[ab-dm]? 当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件名[!ab-dm]?或[^ab-dm]?当前目录下所有不以a、b、c、d、m开头且后面只跟有一个字符的文件名/dev/hd? 目录/dev下所有以hd开头且只有三个字符的文件名(3)注释符与注释在shell命令或shell编程中从字符“#”开始以后到行末的部分作为注释,因此以“#”开头的行是注释行。
(4)转义字符(5)Linux系统的特殊键2.保留字任何编程语言或系统都有一定数量的保留字,bashell的部分保留字如下:!,[,],(,),{,},break,continue,cd,echo,eval,exec,exit,export,function,getopts,hash,pwd,read,readonly,return,select,set,shift,test,time,trap,type,ulimit,unset,umask,wait,for,do,done,case,in,esac,if,else,elif,if,while,until转义字符所代表的意义转义字符所代表的意义\a 响铃符\t Tab键\b 退格键\v 垂直制表符\f 换页\\ \\n 换行\0??? 8进制表示\x?? 16进制表示\’’\` ` \””特殊键意义Ctrl+D 结束当前程序输入或终止当前程序或从系统中注销Ctrl+C 终止当前程序的执行Ctrl+\ 终止当前程序的执行(系统内部处理时不同于Ctrl+C)Ctrl+Z 挂起当前程序执行,将推到后台Ctrl+S/Ctrl+Q 暂停/继续屏幕的输出,必须配合使用ScrollLock 暂停/继续屏幕的输出,开关键Ctrl+Alt+Del 默认动作为重启系统Alt+F# 字符终端切换。
《Linux操作系统》部分习题答案
第一章Linux系统简介一、思考题1.UNIX的大部分代码是用一种流行的程序设计语言编写的,该语言是什么?C语言2.UNIX系统的特点有哪些?·多任务·多用户·并行处理能力·设备无关性·工具·错误处理·强大的网络功能·开放性3.什么是Linux?其创始人是谁?Linux是一个功能强大的操作系统,同时它也是一个自由软件,是免费的、源代码开放的、可以自由使用的UNIX兼容产品。
其创始人是Linus4.Linux操作系统的诞生、发展和成长过程始终依赖者的重要支柱都有哪些?·UNIX操作系统·MINIX操作系统·GNU计划·POSIX标准·Internet5.简述Linux系统的特点。
·自由软件·良好的兼容性·多用户、多任务·良好的界面·丰富的网络功能·可靠地安全性、稳定性·支持多种平台6.常见的Linux的发行版本有哪些?·Red Hat Linux·Caldera OpenLinux·SuSE Linux·TurboLinux·红旗Linux·中软Linux二、选择题1.Linux最初是以MINIX操作系统为模板而开发出来的。
2.关于Linux内核版本的说法,下列选项中错误的是(C)。
A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正(补充:次版本号为偶数的是稳定版本;为奇数的则是测试版本。
)3.Linux属于自由软件。
4.自由软件的含义是软件可以自由修改和发布。
5.一下不具有多任务性的操作系统是DOS第二章Linux系统入门一、思考题1.Linux系统有哪些运行级别?其含义是什么?可用级别为0~6,其中0:关闭系统;6:重新启动,其他略。
第4章 文件和注册表访问(3)
WScript.Shell的属性和方法
CurrentDirectory
返回WSH程序的“当前目录”的名称
Environment[(location)]
“system"
"user" "process"
"volatile"
WScript.Shell的属性和方法
SpecialFolders[(folder)]
返回特殊的文件夹 "Desktop" "Favorites" "MyDocuments" "Fonts" "Programs"
"Recent"
"AllUsersDesktop"
WScript.Shell的属性和方法
AppActivate title
激活一个应用程序窗口(将其带到屏幕顶 层并选择它以便进行键盘和鼠标输入)。 通过匹配窗口的标 题文本来选择该窗口。 如果找到并激活该窗口的话,返回True;否 則,返回False。如果你知道进程的进 程 ID (PID)编号,也可以将其作为一个数字 参数传遂给AppActivate。
TargetPath
到快捷方式的目标程序的路径或一个URL
属性和方法
WindowStyle
将一个窗口样式分配给一个快捷方式,或 者表示一个快捷方式所使用的窗口样式的 类型
WorkingDirectory
快捷方式所使用的工作目录
Save
将一个新的或编辑过的快捷方式对象保存 到磁盘。
WshScriptExec对象的厲性和方法
《Linux操作系统及应用》课程标准
安徽国际商务职业学院信息服务系课程标准信息服务系(院)制(修)订二0一五年9月执笔人:蔡政策主审人:杨辉军、徐辉《Linux操作系统及应用》课程标准●课程名称:Linux操作系统及应用●适用专业:计算机网络、计算机应用技术考核方式:考试●总学时/学分:72/4●前修学习领域::《计算机基础》、《计算机网络基础》等专业基础课程。
●后续学习领域:《计算机网络安全》、《网络服务器技术》、《linux高级应用》等课程。
一、课程的性质与任务Linux网络配置管理是网络工程专业的一门专业必修课。
Linux是高性能,开放源代码的操作系统,具有广泛的网络应用领域。
本课程主要讲授Linux作为网络操作系统的应用、配置与管理技术,使学生掌握基于Linux系统的网络组建,调试和网络服务器配置的技能和方法。
通过对Linux网络应用的学习,使学生对网络组建、网络服务器配置与应用有更全面的认识,能够进行Linux局域网、服务器的日常维护和远程管理,并对网络资源与通信进行有效的管理以提高网络性能,旨在培养面向计算机行业的Linux网络技术人才。
二、课程目标通过学习本课程后,应达到以下基本要求:理解Linux网络操作系统的概念,了解Linux在网络中的应用与前景;掌握Shell技术,以及Shell的应用程序开发;掌握Linux网络基础知识,远程管理与控制Linux网络的方法与技术;掌握网络配置命令与文件的编辑,Linux与其它系统的网络共享技术;掌握DHCP,DNS,FTP,SAMBA,NFS,E-mail,WEB(APACHE)等服务器的配置、管理与应用等。
三、讲授内容第1章 RedHat Linux 9的安装与启动(一)教学目的和要求了解Linux操作系统的现状,了解RedHat Linux的安装和与启动。
(二)学时分配4学时(三)教学主要内容第1章 RedHat Linux 9的安装与启动1.1 Linux简介1.2 RedHat Linux的安装方式1.3 安装RedHatLinux1.4 Linux的启动与登录第2章 Linux文件管理(一)教学目的和要求了解Linux下的文件系统和目录结构,掌握文件操作的常用命令。
shell程序linux课程设计
shell程序linux课程设计一、课程目标知识目标:1. 理解Shell的基本概念,掌握其在Linux系统中的作用和重要性。
2. 学会使用基本的Shell命令,如文件操作、目录切换、权限管理等。
3. 掌握Shell脚本编写的基础知识,包括变量定义、流程控制、函数等。
4. 能够运用所学知识解决实际问题,如编写简单的自动化脚本。
技能目标:1. 培养学生熟练使用Linux终端和Shell命令的能力。
2. 培养学生编写和调试简单Shell脚本的能力。
3. 培养学生运用Shell脚本实现自动化任务的能力。
情感态度价值观目标:1. 培养学生对Linux系统和Shell编程的兴趣,激发学习热情。
2. 培养学生面对问题时的独立思考、解决问题的能力。
3. 培养学生的团队协作意识,学会与他人分享和交流学习经验。
课程性质:本课程为Linux shell程序设计,旨在让学生掌握Shell编程的基本知识,提高其在Linux系统下的操作能力和解决问题的能力。
学生特点:学生具备一定的计算机基础知识,对Linux系统有一定了解,但Shell编程经验较少。
教学要求:结合学生特点,课程设计应注重实践,以实例为主线,引导学生动手实践,提高其编程能力和实际操作能力。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. Shell概述- Shell的定义与作用- 常见的Shell类型及特点2. 基本Shell命令- 文件和目录操作命令:ls、cd、pwd、mkdir、rm、cp、mv - 权限管理命令:chmod、chown- 文本处理命令:cat、grep、sort、uniq、cut、awk3. Shell脚本编写基础- 变量定义与使用- 流程控制语句:if、for、while- 函数的定义与调用4. Shell脚本实例分析- 简单自动化脚本编写- 系统监控脚本编写- 文件处理脚本编写5. Shell脚本调试与优化- 常见错误类型及解决方法- 调试技巧与优化策略教学内容安排与进度:1. 第1周:Shell概述及基本概念2. 第2周:基本Shell命令学习3. 第3周:Shell脚本编写基础4. 第4周:Shell脚本实例分析5. 第5周:Shell脚本调试与优化教材章节关联:1. Shell概述:《Linux操作系统》第3章2. 基本Shell命令:《Linux操作系统》第4章3. Shell脚本编写基础:《Linux Shell编程》第2章4. Shell脚本实例分析:《Linux Shell编程》第3章5. Shell脚本调试与优化:《Linux Shell编程》第4章三、教学方法本课程将采用以下教学方法,以促进学生主动学习,提高教学效果:1. 讲授法:教师通过讲解Shell编程的基本概念、语法和技巧,为学生提供必要的理论知识。
Linux与Unixshell编程指南(完整高清版).pdf
Linux与Unixshell编程指南(完整⾼清版).pdf找到⼀本很详细的Linux Shell脚本教程,其实⾥⾯不光讲了Shell脚本编程,还介绍了系统的各种命令本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的⽂字处理以及少量的系统管理问题。
本书内容全⾯、⽂字简洁流畅,适合Shell编程⼈员学习、参考。
⽬录译者序前⾔第⼀部分 shell第1章⽂件安全与权限 11.1 ⽂件 11.2 ⽂件类型 21.3 权限 21.4 改变权限位 41.4.1 符号模式 41.4.2 chmod命令举例 51.4.3 绝对模式 51.4.4 chmod命令的其他例⼦ 61.4.5 可以选择使⽤符号模式或绝对模式 71.5 ⽬录 71.6 suid/guid 71.6.1 为什么要使⽤suid/guid 81.6.2 设置suid/guid的例⼦ 81.7 chown和chgrp 91.7.1 chown举例 91.7.2 chgrp举例 91.7.3 找出你所属于的⽤户组 91.7.4 找出其他⽤户所属于的组 101.8 umask 101.8.1 如何计算umask值 101.8.2 常⽤的umask值 111.9 符号链接 121.9.1 使⽤软链接来保存⽂件的多个映像 121.9.2 符号链接举例 121.10 ⼩结 13第2章使⽤find和xargs 142.1 find命令选项 142.1.1 使⽤name选项 152.1.2 使⽤perm选项 162.1.3 忽略某个⽬录 162.1.4 使⽤user和nouser选项 162.1.5 使⽤group和nogroup选项 162.1.6 按照更改时间查找⽂件 172.1.7 查找⽐某个⽂件新或旧的⽂件 172.1.8 使⽤type选项 172.1.9 使⽤size选项 182.1.10 使⽤depth选项 182.1.11 使⽤mount选项 182.1.12 使⽤cpio选项 182.1.13 使⽤exec或ok来执⾏shell命令 192.1.14 find命令的例⼦ 202.2 xargs 202.3 ⼩结 21第3章后台执⾏命令 223.1 cron和crontab 223.1.1 crontab的域 223.1.2 crontab条⽬举例 233.1.3 crontab命令选项 233.1.4 创建⼀个新的crontab⽂件 243.1.5 列出crontab⽂件 243.1.6 编辑crontab⽂件 243.1.7 删除crontab⽂件 253.1.8 恢复丢失的crontab⽂件 253.2 at命令 253.2.2 列出所提交的作业 273.2.3 清除⼀个作业 273.3 &命令 273.3.1 向后台提交命令 283.3.2 ⽤ps命令查看进程 283.3.3 杀死后台进程 283.4 nohup命令 293.4.1 使⽤nohup命令提交作业 293.4.2 ⼀次提交⼏个作业 293.5 ⼩结 30第4章⽂件名置换 314.1 使⽤* 314.2 使⽤? 324.3 使⽤[...]和[!...] 324.4 ⼩结 33第5章 shell输⼊与输出 345.1 echo 345.2 read 355.3 cat 375.4 管道 385.5 tee 395.6 标准输⼊、输出和错误 405.6.1 标准输⼊ 405.6.2 标准输出 405.6.3 标准错误 405.7 ⽂件重定向 405.7.1 重定向标准输出 415.7.2 重定向标准输⼊ 425.7.3 重定向标准错误 425.8 结合使⽤标准输出和标准错误 43 5.9 合并标准输出和标准错误 435.10 exec 445.11 使⽤⽂件描述符 445.12 ⼩结 45第6章命令执⾏顺序 466.1 使⽤&& 466.2 使⽤|| 466.3 ⽤()和{ }将命令结合在⼀起 47 6.4 ⼩结 48第⼆部分⽂本过滤第7章正则表达式介绍 497.1 使⽤句点匹配单字符 507.2 在⾏⾸以^匹配字符串或字符序列 50 7.3 在⾏尾以$匹配字符串或字符 517.4 使⽤*匹配字符串中的单字符或其重复序列 517.5 使⽤\屏蔽⼀个特殊字符的含义 52 7.6 使⽤[]匹配⼀个范围或集合 527.7 使⽤\{\}匹配模式结果出现的次数 53 7.8 ⼩结 55第8章 grep家族 568.1 grep 578.1.1 双引号引⽤ 578.1.2 grep选项 578.1.3 查询多个⽂件 578.1.4 ⾏匹配 578.1.5 ⾏数 588.1.6 显⽰⾮匹配⾏ 588.1.7 精确匹配 588.1.8 ⼤⼩写敏感 588.2 grep和正则表达式 588.2.1 模式范围 598.2.2 不匹配⾏⾸ 598.2.3 设置⼤⼩写 598.2.4 匹配任意字符 598.2.5 ⽇期查询 598.2.6 范围组合 608.2.8 使⽤grep匹配“与”或者“或”模式 61 8.2.9 空⾏ 618.2.10 匹配特殊字符 618.2.11 查询格式化⽂件名 618.2.12 查询IP地址 618.3 类名 628.4 系统grep命令 628.4.1 ⽬录 638.4.2 passwd⽂件 638.4.3 使⽤ps命令 638.4.4 对⼀个字符串使⽤grep 648.5 egrep 648.6 ⼩结 65第9章 AWK介绍 669.1 调⽤awk 669.2 awk脚本 679.2.1 模式和动作 679.2.2 域和记录 679.2.3 awk中正则表达式及其操作 709.2.4 元字符 709.2.5 条件操作符 709.2.6 awk内置变量 739.2.7 NF、NR和FILENAME 749.2.8 awk操作符 759.2.9 内置的字符串函数 789.2.10 字符串屏蔽序列 809.2.11 awk输出函数printf 819.2.12 printf修饰符 819.2.13 awk数组 869.3 ⼩结 88第10章 sed ⽤法介绍 8910.1 sed怎样读取数据 8910.2 调⽤sed 8910.2.1 保存sed输出 9010.2.2 使⽤sed在⽂件中查询⽂本的⽅式 90 10.2.3 基本sed编辑命令 9010.3 sed和正则表达式 9110.4 基本sed编程举例 9110.4.1 使⽤p(rint)显⽰⾏ 9110.4.2 打印范围 9110.4.3 打印模式 9210.4.4 使⽤模式和⾏号进⾏查询 9210.4.5 匹配元字符 9210.4.6 显⽰整个⽂件 9210.4.7 任意字符 9210.4.8 ⾸⾏ 9210.4.9 最后⼀⾏ 9310.4.10 打印⾏号 9310.4.11 附加⽂本 9310.4.12 创建sed脚本⽂件 9410.4.13 插⼊⽂本 9410.4.14 修改⽂本 9510.4.15 删除⽂本 9610.4.16 替换⽂本 9610.5 使⽤替换修改字符串 9710.6 将sed结果写⼊⽂件命令 9710.7 从⽂件中读⽂本 9810.8 匹配后退出 9810.9 显⽰⽂件中的控制字符 9910.10 使⽤系统sed 9910.10.1 处理控制字符 9910.10.2 处理报⽂输出 10110.10.3 去除⾏⾸数字 10110.10.4 附加⽂本 10210.10.5 从shell向sed传值 10210.10.6 从sed输出中设置shell变量 102 10.11 快速⼀⾏命令 102第11章合并与分割 10411.1 sort⽤法 10411.1.1 概述 10411.1.2 sort选项 10411.1.3 保存输出 10511.1.4 sort启动⽅式 10511.1.5 sort对域的参照⽅式 10511.1.6 ⽂件是否已分类 10511.1.7 基本sort 10611.1.8 sort分类求逆 10611.1.9 按指定域分类 10611.1.10 数值域分类 10611.1.11 唯⼀性分类 10711.1.12 使⽤k的其他sort⽅法 10811.1.13 使⽤k做分类键排序 10811.1.14 指定sort序列 10811.1.15 pos⽤法 10811.1.16 使⽤head和tail将输出分类 109 11.1.17 awk使⽤sort输出结果 10911.1.18 将两个分类⽂件合并 11011.2 系统sort 11011.3 uniq⽤法 11111.4 join⽤法 11211.5 cut⽤法 11411.5.1 使⽤域分隔符 11511.5.2 剪切指定域 11511.6 paste⽤法 11611.6.1 指定列 11611.6.2 使⽤不同的域分隔符 11611.6.3 paste命令管道输⼊ 11711.7 split⽤法 11711.8 ⼩结 118第12章 tr⽤法 11912.1 关于tr 11912.1.1 字符范围 11912.1.2 保存输出 12012.1.3 去除重复出现的字符 12012.1.4 删除空⾏ 12012.1.5 ⼤写到⼩写 12112.1.6 ⼩写到⼤写 12112.1.7 删除指定字符 12112.1.8 转换控制字符 12212.1.9 快速转换 12212.1.10 匹配多于⼀个字符 12312.2 ⼩结 123第三部分登录环境第13章登录环境 12513.1 /etc/profile 12513.2 ⽤户的$HOME.profile 12813.3 stty⽤法 12913.4 创建.logout⽂件 13113.5 ⼩结 131第14章环境和shell变量 13214.1 什么是shell变量 13214.2 本地变量 13214.2.1 显⽰变量 13314.2.2 清除变量 13314.2.3 显⽰所有本地shell变量 133 14.2.4 结合变量值 13414.2.5 测试变量是否已经设置 13414.2.6 使⽤变量来保存系统命令参数 135 14.2.7 设置只读变量 13514.3 环境变量 13614.3.1 设置环境变量 13614.3.2 显⽰环境变量 13614.3.3 清除环境变量 13714.3.4 嵌⼊shell变量 13714.3.6 set命令 14014.3.7 将变量导出到⼦进程 140 14.4 位置变量参数 14114.4.1 在脚本中使⽤位置参数 142 14.4.2 向系统命令传递参数 142 14.4.3 特定变量参数 14314.4.4 最后的退出状态 14414.5 ⼩结 145第15章引号 14615.1 引⽤必要性 14615.2 双引号 14615.3 单引号 14715.4 反引号 14715.5 反斜线 14815.6 ⼩结 149第四部分基础shell编程第16章 shell脚本介绍 15116.1 使⽤shell脚本的原因 15116.2 脚本内容 15116.3 运⾏⼀段脚本 15216.4 ⼩结 153第17章条件测试 15417.1 测试⽂件状态 15417.2 测试时使⽤逻辑操作符 155 17.3 字符串测试 15517.4 测试数值 15617.5 expr⽤法 15717.5.1 增量计数 15817.5.2 数值测试 15817.5.3 模式匹配 15817.6 ⼩结 159第18章控制流结构 16018.1 退出状态 16018.2 控制结构 16018.2.1 流控制 16118.2.2 循环 16118.3 if then else语句 16118.3.1 简单的if语句 16218.3.2 变量值测试 16218.3.3 grep输出检查 16318.3.4 ⽤变量测试grep输出 163 18.3.5 ⽂件拷贝输出检查 16418.3.6 当前⽬录测试 16418.3.7 ⽂件权限测试 16518.3.8 测试传递到脚本中的参数 165 18.3.9 决定脚本是否为交互模式 165 18.3.10 简单的if else语句 16618.3.11 变量设置测试 16618.3.12 检测运⾏脚本的⽤户 166 18.3.13 将脚本参数传⼊系统命令 167 18.3.14 null:命令⽤法 16718.3.15 测试⽬录创建结果 16818.3.16 另⼀个拷贝实例 16918.3.17 多个if语句 16918.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 17018.3.20 增加和检测整数值 17118.3.21 简单的安全登录脚本 172 18.3.22 elif⽤法 17318.3.23 使⽤elif进⾏多条件检测 173 18.3.24 多⽂件位置检测 17418.4 case语句 17518.4.1 简单的case语句 17518.4.2 对匹配模式使⽤| 17618.4.3 提⽰键⼊y或n 17718.4.4 case与命令参数传递 177 18.4.5 捕获输⼊并执⾏空命令 17818.5 for循环 18018.5.1 简单的for循环 18118.5.2 打印字符串列表 18118.5.3 对for循环使⽤ls命令 18118.5.4 对for循环使⽤参数 18218.5.5 使⽤for循环连接服务器 18318.5.6 使⽤for循环备份⽂件 18318.5.7 多⽂件转换 18318.5.8 多sed删除操作 18418.5.9 循环计数 18418.5.10 for循环和本地⽂档 18418.5.11 for循环嵌⼊ 18518.6 until循环 18618.6.1 简单的until循环 18618.6.2 监视⽂件 18718.6.3 监视磁盘空间 18718.7 while循环 18818.7.1 简单的while循环 18818.7.2 使⽤while循环读键盘输⼊ 188 18.7.3 ⽤while循环从⽂件中读取数据 189 18.7.4 使⽤IFS读⽂件 18918.7.5 带有测试条件的⽂件处理 190 18.7.6 扫描⽂件⾏来进⾏数⽬统计 191 18.7.7 每次读⼀对记录 19318.7.8 忽略#字符 19318.7.9 处理格式化报表 19418.7.10 while循环和⽂件描述符 196 18.8 使⽤break和continue控制循环 197 18.8.1 break 19718.8.2 跳出case语句 19718.8.3 continue 19718.8.4 浏览⽂件⾏ 19818.9 菜单 19918.10 ⼩结 201第19章 shell函数 20219.1 在脚本中定义函数 20319.2 在脚本中使⽤函数 20319.3 向函数传递参数 20319.4 从调⽤函数中返回 20319.5 函数返回值测试 20419.6 在shell中使⽤函数 20419.7 创建函数⽂件 20419.8 定位⽂件 20519.9 检查载⼊函数 20519.10 执⾏shell函数 20519.10.1 删除shell函数 20619.10.2 编辑shell函数 20619.10.3 函数举例 20719.10.4 将函数集中在⼀起 21919.11 函数调⽤ 21919.11.1 在脚本中调⽤函数 21919.11.2 从函数⽂件中调⽤函数 220 19.12 定位⽂件不只⽤于函数 22219.13 ⼩结 223第20章向脚本传递参数 22420.1 shift命令 22520.1.1 shift命令简单⽤法 22520.1.2 命令⾏输⼊的最后⼀个参数 225 20.1.3 使⽤shift处理⽂件转换 22620.2 getopts 22920.2.1 getopts脚本实例 22920.2.2 getopts使⽤⽅式 23120.2.3 使⽤getopts指定变量取值 231 20.2.4 访问取值⽅式 23220.2.5 使⽤getopts处理⽂件转换 233 20.3 ⼩结 235第21章创建屏幕输出 23621.1.1 字符串输出 23621.1.2 数字输出 23721.1.3 布尔输出 23721.2 tput⽤法 23721.2.1 设置tput命令 23721.2.2 使⽤布尔输出 23721.2.3 在脚本中使⽤tput 23721.2.4 产⽣转义序列 23821.2.5 光标位置 23921.2.6 在屏幕中⼼位置显⽰⽂本 240 21.2.7 查找终端属性 24021.2.8 在脚本中使⽤功能键 24121.2.9 使⽤颜⾊ 24221.2.10 产⽣颜⾊ 24321.2.11 创建精致菜单 24621.3 ⼩结 251第22章创建屏幕输⼊ 25222.1 增加记录 25222.2 删除记录 26222.3 修改记录 26622.4 查看记录 27022.5 ⼩结 273第23章调试脚本 27423.1 ⼀般错误 27423.1.1 循环错误 27423.1.2 典型的漏写引号 27423.1.3 测试错误 27423.1.4 字符⼤⼩写 27523.1.5 for循环 27523.1.6 echo 27523.2 set命令 27523.3 ⼩结 276第24章 shell嵌⼊命令 27724.1 shell嵌⼊命令完整列表 277 24.1.1 pwd 27724.1.2 set 27824.1.3 times 27824.1.4 type 27824.1.5 ulimit 27924.1.6 wait 27924.2 ⼩结 279第五部分⾼级shell编程技巧第25章深⼊讨论<< 28125.1 快速创建⼀个⽂件 28125.2 快速创建打印⽂档 28125.3 ⾃动选择菜单 28225.4 ⾃动ftp传输 28325.5 访问数据库 28625.6 ⼩结 288第26章 shell ⼯具 28926.1 创建保存信息的⽂件 28926.1.1 使⽤date命令创建⽇志⽂件 289 26.1.2 创建唯⼀的临时⽂件 29026.2 信号 29126.2.1 杀死⼀个进程 29226.2.2 检测信号 29326.3 trap 29426.3.1 捕获信号并采取相应的⾏动 294 26.3.2 捕获信号并采取⾏动的另⼀个例⼦ 29526.3.3 锁住终端 29726.3.4 忽略信号 29826.4 eval 30026.4.1 执⾏含有字符串的命令 300 26.4.2 给每个值⼀个变量名 30126.5 logger命令 30226.5.1 使⽤logger命令 30326.6 ⼩结 305第27章⼏个脚本例⼦ 30627.1 pingall 30627.2 backup_gen 30627.3 del.lines 31227.4 access.deny 31327.5 logroll 31627.6 nfsdown 31727.7 ⼩结 317第28章运⾏级别脚本 31828.1 怎么知道系统中是否含有运⾏级别⽬录 31828.2 确定当前的运⾏级别 31928.3 快速熟悉inittab 31928.4 运⾏级别 32028.4.1 各种运⾏级别 32128.4.2 运⾏级别脚本的格式 321 28.4.3 安装运⾏级别脚本 32228.5 使⽤inittab来启动应⽤程序 323 28.6 启动和停⽌服务的其他⽅法 324 28.7 ⼩结 324第29章 cgi脚本 32529.1 什么是Web页⾯? 32529.2 cgi 32529.3 连接Web服务器 32629.4 cgi和HTM脚本 32629.4.1 基本cgi脚本 32629.4.2 显⽰shell命令输出 32829.4.3 使⽤SSI 33029.4.4 访问计数器 33029.4.5 使⽤⼀个链接来显⽰当前Web 环境变量 33229.4.6 其他常⽤的环境变量 334 29.5 get和post⽅法简介 33529.5.1 get⽅法 33529.5.2 post⽅法 34029.5.3 填充列表项 34729.5.4 ⾃动刷新页⾯ 34829.6 ⼩结 349附录常⽤shell命令 350。
Linux第四章作业答案
第四章 Linux编程作业参考答案一,AWK命令行应用1)处理/etc/passwd文件a)打印第一列(userid)提示:awk -F 分隔符‘{print $第几列}’fileb)打印root用户的1,2 field2)打印用户home目录下所有文件的:owner和文件名(只打印这两列)提示:使用ls -l 和 awk3)打印所有登录本机器的ip,并去掉重复。
提示:使用last,awk,sort,uniq二,AWK完整流程创建order文件 (商品名,数量,单价)apple 20 6.5orange 10 8grape 7 12berry 5 32输出格式 awk -f order.awk order (参考employee.awk)name count price (表头)apple 20 6.5...=================== (表尾)order.awkBEGIN{print "name\tcount\tprice"; OFS="\t"}{print $1,$2,$3}END{print "=========================\n"}三,AWK变量,计算使用order文件 (商品名,数量,单价)apple 20 6.5orange 10 8grape 7 12berry 5 32输出格式:awk -f order2.awk ordername count price total...Number of item: Total count: Order total price:order2.awkBEGIN{print "name\tcount\tprice\ttotal"; OFS="\t"; total=0; totalCount=0;} {totalCount += $2;total += ($2 * $3);print $1, $2, $3, $2*$3}END{printf "Number of item: %d, Total count: %d, Order total price: %.2f\n", NR, totalCount, total}四、AWK donation作业Mike:Harrington:(510) 548-1278:250:100:175Christian:Dobbins:(408) 538-2358:155:90:201Susan:Dalsass:(206) 654-6279:250:60:50Archie:McNichol:(206) 548-1348:250:100:175Jody:Savage:(206) 548-1278:15:188:150Guy:Quigley:(916) 343-6410:250: 100:175Dan:Savage:(406) 298-7744:450:300:275Nancy:McNeil:(206) 548-1278:250:80:75John:Goldenrod:(916) 348-4278:250:100:175Chet:Main:(510) 548-5258:50:95:135Tom:Savage:(408) 926-3456:250:168:200Elizabeth:Stachelin:(916) 440-1763:175:75:300donation2.awkBEGIN{FS=":"; total = 0; max = 0; i = 0;print " *** FIRST QUARTERLY REPORT *** ";print " *** CAMPAIGN 2000 CONTRIBUTIONS *** ";print "-------------------------------------------------------------------------------";printf("%20s %15s %8s %8s %8s %15s\n", "NAME","PHONE", "Jan", "Feb", "Mar", "Total Donated");print "-------------------------------------------------------------------------------";}{name=$1 " " $2;subtotal=$4+$5+$6;total = total + subtotal;if (subtotal > 500) { names[i] = name; phone[i] = $3; lastToIndex[$2 $3]=i; i++}if (subtotal > max) { max = subtotal; max_name=name; max_first=$1;}printf("%20s %15s %8.2f %8.2f %8.2f %15.2f\n", name, $3, $4, $5, $6, subtotal);}END{print "-------------------------------------------------------------------------------";print " SUMMARY"print "-------------------------------------------------------------------------------";printf ("The campaign received a total of $%.2f for this quartar.\n", total); printf ("The average donation for the %d contributors was $%0.2f.\n", NR, total/NR);printf ("The highest total contribution was $%0.2f made by %s.\n", max, max_name);printf (" *** THANKS %s***\n", max_first);printf ("The following people donated over $500 to the campaign.\n");printf ("They are eligible for the quarterly drawing!!\n");printf ("Listed are their names (sorted by last name) and phone numbers:\n");len=asorti(lastToIndex, sortname);for (i = 1; i <= len; i++) {ii = lastToIndex[sortname[i]];printf (" %s--%s\n", names[ii], phone[ii]);}printf (" Thanks to all of your continued support!!\n");}运行结果:五、Shell 变量写一个脚本weather.sh,完成下面功能:外部定义环境变量:export weather=”Sunny”输入What’s your name? (echo, read)Which city do you live? (echo, read)输出:Hi “名字”,the weather of “城市” is“定义的weather”执行脚本:chmod u+x weather.sh; ./weather.sh外部定义局部变量weather1, 使用source执行?#!/bin/bashread -p "What's your name?" nameread -p "Which city do you live?" cityecho "hi $name, the weather of $city is $weather. Local weather is $weather1."六、Shell String pattern match创建一个脚本:ip_match.sh用户输入一个string,判断是否是IPv4地址yes: 输出This is an IPv4 addressno: 输出Wrong address提示: IPv4 regex: ([0-9]{1,3}\.){3}[0-9]{1,3}#!/bin/bashpattern='([0-9]{1,3}\.){3}[0-9]{1,3}'echo "Input a string"read strif [[ $str =~ $pattern ]]; thenecho "This is a ipv4 address: $str"elseecho "Wrong address! $str"fi七、Shell 文件条件判断输入:please input a file name:逻辑:如果文件已经存在:the file already exites不存在,新建一个空文件,名字为输入的string。
shell命令总结实验报告
shell命令总结实验报告shell 命令总结第⼀章实验思路1 运⾏环境VMware软件、CentOS 7、MobaXterm第⼆章实验⽬的1 掌握Linux的使⽤。
2 掌握shell常⽤命令。
3 掌握MobaXterm软件的使⽤第三章实验步骤Shell:多任务多⽤户系统3.1 终端物理终端:直接连接到的是键盘、⿏标 /dev/console虚拟终端:(/dev/tty)基于物理终端,以软件形式实现的登录⽅式,以ctrl+alt+Fn[1-6],centos 7模拟终端:(/dev/pts/)基于物理终端,以软件形式实现的登陆⽅式,通过ssh、telent远程登录的、(可以有很多个,⽆穷多个),在图形界⾯打开的命令⾏3.1.1 终端交互式接⼝GUI:图形界⾯,GNOME,KDE, XFCECLI: 命令⾏,shell3.2 shell 应⽤程序/bin/sh/bin/bash ⽐较常⽤shell,跟随⽤户启动的独⽴程序/usr/bin/sh/usr/bin/bash/bin/tcsh/bin/csh3.3 命令提⽰符#:管理员使⽤的命令提⽰符$: 普通⽤户使⽤的命令提⽰符3.4 命令3.4.1 shell 内嵌命令,执⾏效率⾼,常驻内存shell外部命令,根据需要执⾏which whereis 查找外部命令的位置3.4.2 帮助⽂档help,主要针对内嵌man(manual),主要针对外部命令3.4.3 主要命令1. echo $SHELL 查看当前使⽤的shell程序,当系统登录shell时默认使⽤的是/bin/bash2. exit 退出当前shell3. cat /etc/shells查看设备安装的所有shell程序4. pstree 查看进程树5. tty 查看登录⽅式 TTY查看登陆⽅式,tty1说明是在终端上登陆的。
pts说明是远程登陆的,0说明为从Window上登陆的。
6. type 查看是内部命令还是外部命令如下,查看cd 和ls命令7.enable -a 查看所有内嵌命令8. which 查看外部命令位置(以及帮助信息)9. whereis 查看外部命令位置10. man 查看外部命令使⽤说明,如man ls(ls 为外部命令)11. help 查看内部命令的使⽤说明,如help cd( cd 为内部命令),当⽤help查看ls这个外部命令时,是查询不出来的12. whatis 查看和更新数据库信息(帮助⽂档)1. ctrl+c 终⽌shell命令第四章问题解决没有注意到⼀些路径的设置,然后出现了些错误或者命令没执⾏成功。
Linux命令行与shell脚本编程大全(第4版)
第5章理解shell
5.1 shell的类型 5.2 shell的父子关系 5.3理解外部命令和内建命令 5.4小结
第6章 Linux环境变量
6.1什么是环境变量 6.2设置用户自定义变量 6.3删除环境变量 6.4默认的shell环境变量 6.5设置PATH环境变量 6.6定位系统环境变量 6.7数组变量 6.8小结
第10章文本编辑器
10.1 vim编辑器 10.2 nano编辑器 10.3 Emacs编辑器 10.4 KDE系编辑器 10.5 GNOME编辑器 10.6小结
第11章构建基础脚本 第12章结构化命令
第13章更多的结构化 命令
第14章处理用户输入
第15章呈现数 据
第16章脚本控 制
第11章构建基础脚本
第24章编写简单的脚本实用工具
24.1备份 24.2删除账户 24.3系统监控 24.4小结
第25章井井有条
25.1理解版本控制 25.2设置Git环境 25.3使用Git提交文件 25.4小结
A.2常见的bash命 令
A.1内建命令
A.3环境变量
B.1 sed编辑 器
B.2 gawk程序
作者介绍
Linux命令行与shell脚本编程 大全(第4版)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
02 内容摘要 04 精彩摘录 06 作者介绍
思维导图
本书关键字分析思维导图
命令行
脚本
脚本
书
编程 学习
实战
教程 小结
脚本
文件
处理
版
第章
基础
命令
变量
演练
模式
第4章 修改器(上)
第四章 修改器4.1 修改面板修改堆栈:在这里记录的是所有添加的修改器信息,并按先后顺序组成一个列表,最先添加的修改器在底层,最后添加的在上面。
锁定堆栈:在视图中选择一个物体后,单击该按钮,它会改变形状,此时修改堆栈就会锁定到该物体上,即使在视图中选择了其他物体,在修改器堆栈中也会显示锁定物体的修改命令。
显示最终结果开/关切换: 使唯一:当选择一组物体并添加相同的修改器后,如果选择其中的一个物体,那么该按钮才有效。
此时如果改变修改器中的参数,那么会同时对该组中所有物体产生影响。
从堆栈中删除修改器:如果选择修改器堆栈中的一个修改器名称,然后单击该按钮,就会把该修改器从堆栈中删除掉。
配置修改器集:单击该按钮后,如果选择下拉菜单选项,则可以让面板显示修改器的按钮,并可把这些按钮组成一个显示集合,或使按钮按类别显示。
修改器堆栈右键菜单:粘贴实例:把修改器的关联复制并粘贴到修改器堆栈中去,相关联的修改器以斜体显示。
使唯一:取消修改器间的关联。
塌陷到/全部:塌陷部分或全部修改器。
经过塌陷后,修改器堆栈中的记录将消失,不影响对象的最终形状,作用在于简化记录,保留内存。
打开:将当前修改器的效果在视图和渲染场景中显示出来。
使成为参考对象:只有当所用于当前的关联对象转化为一个参数对象,并在堆栈层的顶部增加一条空白(导引对象)线,所有的修改都将限制指定到这条线以上。
只有当所选定的对象为关联对象时,该功能才可用。
显示所有子树:可显示修改器堆栈中所有修改器的子层级。
4.2 变形修改器上限:设置弯曲的上限,在此限度以上区域将不会受到弯曲的影响。
下限:在此限度与上限区域将都受到弯曲影响。
注意:在修改器堆栈中单击Bend 左边的“+”图标,可展开它的次级对象Gizmo (线框物体)和中心。
选中它们,物体上会出现线框,移动线框,会使物体变形。
数量:设置锥化倾斜的程度。
曲线:设置锥化曲线的曲率。
主轴:指定锥化的轴向。
效果:指定锥化效果影响的轴向。
Linux_基础教程--Shell脚本编程
学习各种管理和监视命令的使用
学习各种文本文件工具的使用
2014年12月24日
变量和表达式
2014年12月24日
18
Shell 变量操作
变量替换扩展
输入
变量测试 变量的字符串操作 变量的间接引用 $[expression] $((expression)) expr let declare -i
Shell 脚本的执行
PATH 环境变量的默认值不包含当前目录, 若脚本文件在当前目录,应使用 ./script-file
PATH 环境变量的默认值包含 ~/bin 目录, 用户可以将自己的脚本文件存放在 ~/bin 目录, 之后即可直接调用脚本文件名执行脚本了
2014年12月24日
7
Shell 脚本的编码规范
${var/%old/new}
用new替换${var}中结尾部分与old匹配的部分
注: (1)old 中可以使用 通配符。 (2)var 可以是 @ 或 *,表示对每个位置参数进行替换
sh –n 脚本名
对脚本进行语法检查,但不执行脚本。如果存在语法错误,shell 会报错,如果没有错误,则不显示任何内容。
2014年12月24日
12
脚本调试举例 1
对脚本进行语法检查
$ bash -n greetings.sh
显示脚本中每个原始命令行及其执行结果
$ bash -v greetings.sh
2014年12月24日 22
字符串变量替换扩展举例1
str='I love linux. I love UNIX too.‟
linux系统及编程基础课后答案
linux系统及编程基础课后答案第1章习题答案1.什么是Linu某?答:Linu某是一款优秀的计算机操作系统,支持多用户、多进程、多线程,实时性好,功能强大且稳定。
同时,它又具有良好的兼容性和可移植性,被广泛应用于各种计算机平台上。
作为Internet的产物,Linu 某操作系统由全世界的许多计算机爱好者共同合作开发,是一个自由的操作系统。
2.Linu某的主要特点是什么?答:Linu某具有UNI某的所有特性并且具有自己独特的魅力,主要表现在以下几个方面:开放性多用户多任务出色的稳定性能良好的用户界面:Linu某向用户提供了两种界面:用户界面和系统调用界面。
设备独立性:设备独立性是指操作系统把所有外部设备统一当作文件来看,只要安装它们的驱动程序,任何用户都可以像使用文件那样操作并使用这些设备,而不必知道它们的具体存在形式。
丰富的网络功能:完善的内置网络是Linu某的一大特点,Linu某在通信和网络功能方面优于其他操作系统。
其他操作系统不包含如此紧密的内核结合在一起的联接网络的能力,也没有内置这些联网特性的灵活性。
而Linu某为用户提供了完善的、强大的网络功能。
可靠的安全性良好的可移植性:可移植性是指将操作系统从一个平台转移到另一个平台,使它仍然能按其自身的方式运行的能力。
3.Linu某的主要组成包括什么?答:Linu某主要组成为:Linu某内核(Kernel):内核(Kernel)是系统的心脏,是运行程序和管理硬件设备的内核程序,决定着系统的性能和稳定性,实现操作系统的基本功能。
Linu某的Shell:Shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。
Shell是一个命令解释器,它解释由用户输入的命令并且把他们送到内核执行。
Shell编程语言具有普通编程语言的很多特点,用这种编程语言编写hell程序与其他应用程序具有同样的效果。
Linu某文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。
注册表高级技巧之注册表与 资源管理器shell 程序管理器shell
第4章Windows 2000的s h e l l如果你需要下列问题的直接解决方案参见页码启用命令提示符s h e l l的文件名完成特性 4 3更改命令提示符s h e l l的缺省选项 4 4在命令提示符s h e l l中设置指定窗口的控制台窗口选项 4 5允许为每个资源管理器实例创建独立的进程 4 5禁止在资源管理器s h e l l重启动时还原已打开的资源管理器窗口 4 5当资源管理器s h e l l崩溃时强迫计算机重新启动 4 6允许通过资源管理器s h e l l快捷方式启动控制面板小程序 4 6禁止程序管理器s h e l l的文件类型自动检测功能 4 7设置程序组在程序管理器s h e l l中的显示顺序 4 7为所有的用户增加一个定制的s h e l l 4 8为用户设置子菜单显示延迟 4 8为用户设置登录壁纸 4 9为用户设置登录屏幕背景色 4 9为用户设置登录屏幕保护程序超时 4 9给新的上下文菜单添加文件扩展名 5 0关闭C D自动播放功能 5 0为用户设置缺省的键盘行为 5 0为用户设置缺省的鼠标行为 5 14.1 简介Windows 2000附带了三种s h e l l(或者称为用户界面):Wi n32控制台(或称命令提示符) s h e l l,资源管理器s h e l l(与Windows 95/98中的资源管理器相同),程序管理器s h e l l(很像Windows 3.x 的程序管理器)。
在Windows NT/Windows 2000的用户中,每种s h e l l都有自己的支持者与反对者,都可以通过利用某些鲜为人知的注册表条目来提高效率。
4.1.1 Win32控制台shellWi n32控制台s h e l l也称为命令提示符s h e l l,从本质上来说,它是包裹在Windows 2000 D O S命令提示符之外的可视化包装程序。
当然,你正在运行的是Windows 2000而不是D O S,但是从“外观和感觉”上来看,它很像U N I X/D O S(因此有理由相信,Windows 2000/NT的祖先实际上是AT&T UNIX System 5/7)。
跟老男孩学Linux运维:Shell编程实战
精彩摘录
set命令输出所有的变量,包括全局变量和局部变量;env命令只显示全局变量;declare命令输出所有的变 量、函数、整数和已经导出的变量。set -o命令显示bash Shell的所有参数配置信息。
Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,用户每输入一条命令,Shell就解 释执行一条。
通过source或“.”加载执行过的脚本,由于是在当前Shell中执行脚本,因此在脚本结束之后,脚本中的变 量(包括函数)值在当前Shell中依然存在,而sh和bash执行脚本都会启动新的子Shell执行,执行完后退回到父 Shell。因此,变量(包括函数)值等无法保留。
目录分析
1.1为什么要学习 Shell编程
当Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是 /etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等)
如果希望永久保存环境变量,可在用户家目录下的.bash_profile或.bashrc(非用户登录模式特有,例 如远程SSH)文件中,或者全局配置/etc/bashrc(非用户登录模式特有,例如远程SSH)或/etc/profile文件中 定义
5
18.9本章小节
19.1企业 Shell面试题案
例
19.2 Shell经 典程序案例: 哄老婆和女孩 的神器
20.1子Shell 1
的知识及实践 说明
20.2子Shell 2
在企业应用中 的“坑”
3 20.3 Shell
调用脚本的模 式说明
4 20.4 Shell
调用脚本的3种 不同实践方法
5 20.5 Shell
Linux命令行技术大全PDF电子书
Linux命令行技术大全PDF电子书内容简介本书的编写基于Fedora Core 6操作系统,2.6.18内核,汇集了绝大部分命令的功能介绍、参数说明和注意事项,并针对具体应用列举了大量示例,分别详细地介绍了磁盘管理命令、文件管理、系统管理命令、网络配置命令、网络服务命令、系统应用命令、系统安全命令及其他命令,以及She ll和Shell编程,使读者真正做到学以致用。
本书内容全面、语言简练、深入浅出、通俗易懂,既可作为即查即用的工具手册,也可作为了解Linux系统的参考书目。
本书同样适用于其他Linux发行版,是Linux用户必备的参考用书。
本书适合系统管理员、开发人员和高级用户阅读。
目录第1章磁盘管理命令1.1 目录管理命令1.1.1 切换工作目录——cd1.1.2 显示工作目录——pwd1.1.3 列出目录内容——ls1.1.4 树状目录列表——tree1.1.5 建立目录——mkdir1.1.6 删除目录——rmdir1.1.7 链接目录内容——lndir1.1.8 列出目录栈内容——dirs1.1.9 目录入栈——pushd1.1.10 目录出栈——popd1.2 MS-DOS文件系统磁盘管理命令1.2.1 切换目录——mcd1.2.2 目录列表——mdir1.2.3 显示目录大小——mdu1.2.4 建立目录——mmd1.2.5 删除目录——mrd1.2.6 删除目录及内容——mdeltree1.2.7 显示mtools支持命令——mtools1.2.8 测试mtools相关设置——mtoolstest1.2.9 加载MS-DOS文件系统——mmount1.2.10 设置MS-DOS磁盘卷标——mlabel1.2.11 磁盘格式化——mformat1.2.12 显示文件系统信息——minfo1.2.13 显示FAT记录——mshowfat1.2.14 Zip/Jaz磁盘控制命令——mzip1.3 磁盘空间限制管理命令1.3.1 检验磁盘使用空间与限制——quotacheck1.3.2 开启磁盘空间限制——quotaon1.3.3 关闭磁盘空间限制——quotaoff1.3.4 编辑磁盘空间限制——edquota1.3.5 显示使用空间与限制——quota1.3.6 报告磁盘空间限制状态——repquota1.4 文件系统管理命令1.4.1 创建MS-DOS文件系统——mkdosfs1.4.2 创建ext2/ext3文件系统——mke2fs1.4.3 创建文件系统——mkfs1.4.4 创建ISO9660文件系统——mkisofs1.4.5 创建ext2/ext3文件系统——mkfs.ext21.4.6 创建ext2/ext3文件系统——mkfs.ext31.4.7 创建MS-DOS文件系统——mkfs.msdos1.4.8 创建vfat文件系统——mkfs.vfat1.4.9 加载文件系统——mount1.4.10 卸载文件系统——umount1.4.11 创建交换区——mkswap1.4.12 关闭交换区——swapoff1.4.13 开启交换区——swapon1.5 磁盘分区命令1.5.1 磁盘分区——fdisk1.5.2 磁盘分区——sfdisk1.5.3 管理磁盘分区——parted1.6 其他磁盘管理命令1.6.1 报告文件系统磁盘使用信息——df1.6.2 显示磁盘空间使用信息——du1.6.3 读取或设置硬盘参数——hdparm1.6.4 设置循环设备——losetup1.6.5 弹出设备——eject1.6.6 显示inode内容——stat1.6.7 远程磁带传输协议——rmt1.6.8 刷新磁盘缓冲区——sync第2章文件管理2.1 文件的建立、移动、删除2.1.1 建立文件——cat2.1.2 建立文件——touch2.1.3 建立链接文件——ln2.1.4 移动以及重命名文件——mv2.1.5 删除文件——rm2.2 查看文件的内容2.2.1 查看文件的内容——cat2.2.2 查看文件的内容——more2.2.3 查看文件的内容——less2.2.4 查看文件头部的内容——head2.2.5 查看文件尾部的内容——tail2.2.6 查看文件部分内容——cut2.2.7 以八进制或其他形式显示文件的内容——od 2.3 查看、修改文件的属性2.3.1 查看文件的类型——file2.3.2 查看文件的属性——ll2.3.3 查看文件的属性——stat2.3.4 改变文件的属主或属组——chown2.3.5 改变文件的属组——chgrp2.3.6 改变文件的访问权限——chmod2.3.7 改变文件的时间戳——touch2.3.8 设置文件的默认权限掩码——umask2.3.9 修改文件的其他高级属性——chattr2.3.10 查看由chattr设置的文件属性——lsattr 2.4 文件的比较2.4.1 比较文件——cmp2.4.2 比较文件——cmm2.4.3 比较文件——diff2.4.4 比较文件并合并——sdiff2.4.5 比较3个文件——diff32.5 文件的备份、归档、恢复2.5.1 文件的备份——cp2.5.2 文件的归档——tar2.5.3 文件的备份——cpio2.5.4 文件或文件系统的备份——dump2.5.5 文件或文件系统的恢复——restore2.5.6 文件的整理——ar2.6 文件的压缩、解压缩以及相关命令2.6.1 文件的压缩——bzip22.6.2 文件的解压缩——bunzip22.6.3 解压缩文件到屏幕——bzcat2.6.4 文件的压缩——gzip2.6.5 文件的解压缩——gunzip2.6.6 压缩/解压缩可执行文件——gexe2.6.7 解压缩文件到屏幕——zcat2.6.8 压缩文件的修复——bzip2recover2.6.9 归档压缩文件——zip2.6.10 解压缩文件——unzip2.6.11 显示zip压缩文件的信息——zipinfo2.7 文件的查找和定位2.7.1 查找文件——find2.7.2 查找文件——whereis2.7.3 查找文件——locate2.7.4 查找文件——which2.8 文件内容的查询2.8.1 搜索文件中的字符串——grep2.8.2 搜索文件中的字符串——egrep2.8.3 搜索文件中的字符串——fgrep2.9 其他关于文件管理的命令2.9.1 创建一个文件保存多个副本——tee2.9.2 合并显示多个文件的内容——paste2.9.3 文件升级——patch2.9.4 文件排序——sort2.9.5 文件切割——split2.9.6 文本处理——sed2.9.7 文件内容唯一化——uniq2.9.8 文件统计——wc2.9.9 自动删除临时文件——tmpwatch2.9.10 规范C程序——inden2.10 MS_DOS文件系统管理命令2.10.1 显示文件的属性——mattrib2.10.2 复制文件——mcopy2.10.3 删除文件——mdel2.10.4 移动、重命名文件——mmove2.10.5 文件的重命名——mren2.10.6 显示文件的内容——mtype第3章系统管理命令3.1 用户管理命令3.1.1 显示用户在线时间的统计信息——ac3.1.2 新建用户账户——adduser3.1.3 改变查询信息——chfn3.1.4 清除屏幕——clear3.1.5 查找用户信息——finger3.1.6 管理组信息——gpasswd3.1.7 增加一个新组——groupadd3.1.8 删除组——groupdel3.1.9 修改组的相关信息——groupmod3.1.10 显示用户所在组的成员——groups3.1.11 校验组文件——grpck3.1.12 启动组的影子密码——grpconv3.1.13 关闭组的影子密码——grpunconv3.1.14 显示用户及其所属组的ID 号——id3.1.15 显示当前和过去登录用户的相关信息——last3.1.16 显示登录系统失败用户的相关信息——lastb3.1.17 显示最近登录用户的用户名、登录端口和登录时间——lastlog3.1.18 用户登录系统——login3.1.19 显示当前用户的名称——logname3.1.20 退出系统——logout3.1.21 管理日志文件——logrotate3.1.22 更改用户所属的组——newgrp3.1.23 设置密码——passwd3.1.24 将用户密码转换成影子密码——pwconv3.1.25 关闭影子密码功能——pwunconv3.1.26 变更用户身份——su3.1.27 以其他身份执行命令——sudo3.1.28 删除指定的用户账户——userdel3.1.29 修改用户账户信息——usermod3.1.30 显示当前登录到系统的用户——users3.1.31 显示当前登录系统用户的信息——w3.1.32 显示当前登录系统的用户信息——who3.1.33 显示登录用户名称——whoami3.2 Shell命令3.2.1 SH类的命令解释器——bash3.2.2 更换登录系统时使用的Shell——chsh3.2.3 声明Shell变量——declare3.2.4 显示文字——echo3.2.5 启动/关闭Shell内部命令——enable3.2.6 将参数组合为一个新的命令,然后交给Shell执行——eval3.2.7 Shell执行指定的命令后交出控制权——exec3.2.8 退出当前Shell环境——exit3.2.9 批处理执行选定的历史命令——fc3.2.10 将程序或者命令切换到前台执行——fg3.2.11 显示Shell内部命令的帮助信息——help3.2.12 显示命令使用的历史——history3.2.13 设置Shell——set3.2.14 暂停执行Shell——suspend3.2.15 控制Shell程序使用的资源——ulimit3.2.16 删除变量或函数——unset3.3 作业进程管理命令3.3.1 打开/关闭进程记录——accton3.3.2 按指定的以天为单位的周期周期性运行指定命令,而不管计算机是否24小时开机——a nacron3.3.3 在指定的时间执行命令——at3.3.4 显示最近的作业队列信息——atd3.3.5 显示目前使用at命令后待执行的命令队列——atq3.3.6 删除at命令中待执行的命令队列——atrm3.3.7 显示最近的作业队列信息——atrun3.3.8 将命令放置在后台运行——bg3.3.9 显示后台执行的作业——jobs3.3.10 处理控制初始化——init3.3.11 中止正在执行的程序或作业——kill3.3.12 命令优先级设置——nice3.3.13 不停止执行程序——nohup3.3.14 显示进程状态树——pstree3.3.15 重新分配优先权——renice3.3.16 暂停执行程序——sleep3.4 系统设置命令3.4.1 设置命令的别名——alias3.4.2 高级电源管理BIOS守护进程——apmd3.4.3 设置音效设备——aumix3.4.4 显示或设置键盘按键及其组合键的有关功能——bind 3.4.5 检查、设置系统的各种服务——chkconfig3.4.6 配置X字体路径——chkfontpath3.4.7 改变根目录——chroot3.4.8 调整RTC(Real Time Clock)时间——clock3.4.9 设置计时器——crontab3.4.10 模块依赖性及其检查——depmod3.4.11 设置目录显示时的颜色——dircolors3.4.12 显示开机设备信息——dmesg3.4.13 输出或显示环境变量——export3.4.14 设置帧缓冲区——fbset3.4.15 显示内存使用情况——free3.4.16 Grub Shell——grub3.4.17 安装Grub——grub-install3.4.18 对Grub采用MD5加密——grub-md5-crypt3.4.19 显示与设定硬件时钟——hwclock3.4.20 载入模块——insmod3.4.21 配置键盘——kbdconfig3.4.22 显示已载入系统的模块——lsmod3.4.23 维护和编译软件或软件包——make3.4.24 显示模块的信息——modinfo3.4.25 自动处理可载入模块——modprobe3.4.26 设置系统的各种服务——ntsysv3.4.27 显示系统状态——procinfo3.4.28 重新启动系统——reboot3.4.29 设置终端机窗口大小——resize3.4.30 删除模块——rmmod3.4.31 管理软件包——rpm3.4.32 设置公用程序——setup3.4.33 关闭计算机——shutdown3.4.34 设置时区——timeconfig3.4.35 显示系统负载——tload3.4.36 取消别名——unalias3.5 系统诊断及故障恢复3.5.1 检查磁盘中损坏的扇区——badblocks3.5.2 修复损坏的.bz2文件——bzip2recover3.5.3 检查文件的CRC(循环冗余码校验)位是否正确——cksum 3.5.4 备份文件系统——dump3.5.5 检查文件系统并尝试修复错误——fsck3.5.6 检查ext2文件系统并尝试修复错误——fsck.ext23.5.7 MD5函数值计算和检查——md5sum第4章网络配置命令4.1 常用网络配置命令4.1.1 查看或设置网络接口——ifconfig4.1.2 查看或设置主机名——hostname4.1.3 查看或设置路由表——route4.1.4 查看或配置arp缓存——arp4.1.5 查看网络状态——nestat4.1.6 检测网络主机——ping4.1.7 转存网络传送数据——tcpdump4.1.8 追溯路由——traceroute4.1.9 域信息搜索器——dig4.1.10 IP计算器——ipcalc4.1.11 监视网络状态——netreport4.2 PPP链接管理命令4.2.1 管理PPP链接——pppd4.2.2 显示PPP状态——pppstats4.2.3 转换PPP记录文件——pppdump4.2.4 串行口通信程序——minicom4.2.5 设置或显示串口——setserial4.3 PPPoE链接管理命令4.3.1 PPPoE客户端——pppoe4.3.2 PPPoE服务器——pppoe-server4.3.3 PPPoE中继代理——pppoe-relay4.3.4 PPPoE探测器——pppoe-sniff4.3.5 配置PPPoE客户端——adsl-setup4.3.6 管理PPPoE链接——adsl-connect4.3.7 启动PPPoE链接——adsl-start4.3.8 关闭PPPoE链接——adsl-stop4.3.9 显示PPPoE链接状态——adsl-status 第5章网络服务命令5.1 基本网络命令5.1.1 检测主机的连通性——ping5.1.2 查看网络状态——netstat5.1.3 数据包所经过的路由器——traceroute5.1.4 网络下载器——wget5.2 网络通信命令5.2.1 向单个用户发送信息——write5.2.2 公布消息——wall5.2.3 聊天命令——talk5.3 远程登录主机5.3.1 远程登录——telnet5.3.2 远程登录——rlogin5.3.3 登录远程Shell——rsh5.3.4 安全的远程登录——ssh5.4 文件传输命令5.4.1 文件传输——ftp5.4.2 强大的ftp客户端程序——ncftp5.4.3 简单文件传输命令——tftp5.4.4 安全的文件传输——sftp5.4.5 主机间传输文件——rcp5.4.6 安全的主机间复制文件——scp5.5 Web服务器有关的命令5.5.1 Apache服务器控制接口——apachectl5.5.2 Apache超文本传输协议服务器——httpd5.6 Samb服务器相关的命令5.6.1 测试Samb服务器配置文件——testparm5.6.2 查看Samb服务器的状况——smbstatus5.6.3 Samb服务客户端命令——smbclient第6章系统应用命令6.1 文档编辑命令6.1.1 文本行编辑器——ed6.1.2 文本编辑器——ex6.1.3 查找文件里符合条件的字符串——grep6.1.4 调整C源程序文件的格式——indent6.1.5 文本文件编辑器——jed6.1.6 文本编辑器——pico6.1.7 文本流编辑器——sed6.1.8 字符转换——tr6.1.9 对文件中的行作唯一性检查——uniq6.1.10 全屏幕文本编辑器——vi6.1.11 增强的vi编辑器——vim6.2 打印操作命令6.2.1 将文本文件转为PostScript格式——enscript6.2.2 打印机控制——lpc6.2.3 显示打印队列——lpq6.2.4 打印文件——lpr6.2.5 删除打印作业——lprm6.2.6 在一页上打印多个页面——mpage6.2.7 打要打印的文件进行格式化编排——pr6.2.8 调整打印机设置——tunelp6.3 文件格式转换命令6.3.1 将cmu格式文件转换为位图文件——cmuwmtopbm6.3.2 将GEM格式文件转换为PBM格式——gemtopbm6.3.3 将GIF格式图形文件转换为PNM格式——giftopnm6.3.4 扫描输入转换为PPM格式文件——gouldtoppm6.3.5 将Lisp格式的图形文件转换为Portable Graymap格式——lispmtopgm6.3.6 将PostScrip 1字体的二进制文件转换为ASCII码文件——pfbtops6.3.7 将PICT格式的图形文件转换为PPM格式——picttoppm6.3.8 将pil格式的图形文件转换为ppm格式的图形文件——piltoppm6.3.9 将打印机产生的影像文件转换为PPM格式的图形文件——pjtoppm6.3.10 qrttoppm——将qrt格式文件转换为ppm格式6.3.11 将raster格式的图形文件转换为pnm格式的图形文件——rasttopnm6.3.12 将targa位图文件转换为ppm格式文件——tgatoppm6.3.13 将TIFF格式的图形文件转换为PNM格式的文件——tifftopnm6.3.14 执行uuencode的反向操作,即将由uuencode编码生成的文件转换回原来的格式——u udecode6.3.15 将文件转换为ASCII码文件——uuencode6.3.16 将yuv文件转换为PPM文件——yuvsplittoppm6.3.17 将YUV格式的图像转换为PPM格式——yuvtoppm6.4 实用性小程序6.4.1 新闻组文件备份——archive6.4.2 显示月历——cal6.4.3 播放音乐CD——cdp6.4.4 CD播放工具——cdplay6.4.5 进行一次性刻录CD——cdrdao6.4.6 C Shell,类似于C语言的外壳命令解释程序——csh6.4.7 设置INN新闻组服务器——ctlinnd6.4.8 台式计算器——dc6.4.9 显示数字的因子——factor6.4.10 下载新闻组清单——getlist6.4.11 检查INN相关配置文件的语法是否正确——inncheck6.4.12 显示帮助信息——man6.4.13 显示帮助文件的搜索路径——manpath第7章系统安全命令7.1 SELinux配置命令7.1.1 设置SELinux模式——setenforce7.1.2 查看SELinux模式——getenforce7.1.3 设置SELinux布尔值——setsebool7.1.4 查看SELinux布尔值——getsebool7.1.5 翻转SELinux布尔值——togglesebool7.1.6 SELinux状态工具——sestatus7.1.7 显示AVC统计信息——avcstat7.1.8 转换审计消息——audit2why7.1.9 生成策略允许规则——audit2allow7.1.10 装载策略——load_policy7.1.11 管理SELinux策略——semanage7.1.12 管理策略模块——semodule7.1.13 创建策略模块包——semodule_package7.1.14 编译策略模块——checkmodule7.1.15 改变语境类别——chcat7.1.16 修复文件安全语境——fixfiles7.1.17 恢复文件安全语境——restorecon7.1.18 改变文件安全语境——chcon7.1.19 设置文件安全语境——setfiles7.2 iptables相关命令7.2.1 IP包过滤器管理——iptables7.2.2 保存IP表——iptables-save7.2.3 恢复IP表——iptables-restore第8章其他命令8.1 关于X-Window系统的命令8.1.1 启动X-Windows系统——startx8.1.2 显示设置工具——system-config-display8.1.3 计算显示设备VESA驱动GTF模式命令行工具——gtf8.1.4 显示客户端程序——xlsclients8.1.5 显示X server使用的字体——xlsfonts8.1.6 显示X服务器的基本定义——xlsatoms8.1.7 控制访问X Server的主机——xhost8.1.8 设置X-Window系统使用偏好——xset8.2 其他杂项8.2.1 回应字符串——yes8.2.2 显示man的搜索路径——manpath8.2.3 从标准输入执行命令——xargs8.2.4 显示文件的校验和、文件块数——sum8.2.5 显示待执行的作业——atq8.2.6 删除队列中待执行的作业——atrm第9章 Shell和Shell编程9.1 Shell基本知识9.1.1 命令行和Shell提示9.1.2 重定向9.1.3 通配符9.1.4 技巧和注意事项9.2 Shell登录环境9.2.1 Shell登录环境9.2.2 环境和Shell变量9.2.3 Shell中引号的使用9.3 Shell编程9.3.1 Shell编程基础9.3.2 流程控制9.3.3 循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$ man sh | lp & [1] 1557 $
$ kill -9 $!
4.1.4 通配符及特殊字符
有些字符是对于Shell有特殊意义的字符,常用于控制文件名的 组成,还用于构成Unix中广泛应用的正则表达式。
* ? [abc] [! abc] [a-z] [! a-z] ; & $ () \ 匹配任意字符串,0或多个字符 匹配单个字符 匹配a、b、c这组字符中的一个 匹配这组字符以外的某个字符 匹配在a到z这个范围内的某个字符 匹配不在a到z这个范围内的某个字符 分隔命令,标志命令结束,但不换行 后台命令 变量的访问 将小括号中所括的命令生成一个子shell去执行 转义字符,它使紧跟其后的那个字符失去在 Shell中的特殊意义
4.1.2 管道线
管道线实现了Unix命令功能的组合。 它将一个命令(或程序)的输出作为另一个命令(或 程序)的输入。 记为 a | b , 表示把 a 命令的输出作为 b 命令的输入, 实现了输出重定向和输出重定向功能的组合。
$ ls -l > tempfile $ wc -l < tempfile $ rm tempfile
(需要先确认文件有可执行权,chmod +x file.sh)
注意,由于Shell有很多种,而每一种Shell都有其特定的 语法,所以必须指明是用哪一种Shell语言来编写的程序, 内核才能知道用哪种解释器来执行。 在程序的首行顶头处写上: #!/bin/sh
或
#!/bin/csh
来标明是Bourne Shell 文件还是C Shell 文件。
hi=―how are you ‖
传统的B Shell 变量赋值“=”两边不允许空格出现。 Linux的bash无此限制。
2)shell变量引用和参数替换 在变量名前加“$‖, 如: $ echo $ux
/* 取变量ux的值并回显 */ 如果变量未被赋值,那么返回一个空串。
在许多情况下,对变量取值时用大括号把变量括住,以便强 调指出变量名,如:
如果是重定向到不同文件,B Shell用2>来指示标准错误 输出:
$ cc abc.c > log 2> errorlog
$find / -name filea -print 2> errorlog
C Shell % ( cc abc.c > log ) >& errorlog
% ( find / -name filea -print > /dev/tty ) >& errorlog
$ echo ${ux}
$ echo ${hi}today $ echo ―$hi‖ today
/* 取变量hi的值并和today组合 */
也可用双引号做变量替换:
如果用单引号,会出现什么样的结果呢? $ echo ‗$hi‘today 输出: ‘$hi‘today
这就是单引号和双引号使用上的区别: 单引号,可是使其括住的特殊字符失去在Shell中的特殊含义;
4.2.1 Shell 程序的设计与执行
shell程序的功能是将命令序列组合并由系统自动执行。
用vi编辑器创建一个简单的shell程序,内容如下:
#!/bin/bash
echo hello who ls –l date
以 file.sh文件名存盘。
file.sh 文件交给系统执行可用三种方式实现: 利用输入输出重定向: $ sh < file.sh 把file.sh当作sh的执行参数: $ sh file.sh 直接执行file1.sh程序: $ ./ file.sh
此外,在Shell程序中可以用 # 来标志其后的文本是注释。
4.2.2 Shell 变量的应用
Shell 变量是字符或字符串. 要注意,程序中出现的数字那 也是基于字符类型的。
1) shell 变量及赋值 以字母开头,由字母、数字及下划线组成。如: ux=u.unix 如果赋给变量的值中含有空格或制表符等,在赋值的时候要 用引号将变量的值引起,如:
Shell Programming
— UNIX Shell程序设计
Shell的双重特性:
命令解释程序(命令解释器): Shell解释用户输入的命令行,提交系统内核 处理,并将结果返回给用户; Shell与UNIX命令一样都是实用程序,但有区 别。一旦用户注册到系统后, Shell 就被系统装 入内存,并一直运行到用户退出系统之止;而一 般命令仅当被调用时,才由系统装入内存执行。 程序设计语言: Shell本身也是一种可编程的程序设计语言。
4.1 命令解释程序
做为用户与Unix系统内核之间的界面,Shell接受、 解释并执行用户命令。 Shell执行用户命令的工作过程大体上表现为这样 一个循环: while (1) { prompt(―command: ‖); /* 打印提示符 */ read(command); /* 读入并分析命令 */ execute(command); /* 执行命令 */ }
$ rm no_exist | | echo ―remove file error ! ‖
4.1.3 后台进程
占据终端显示的进程叫作“前台进程”; 不占据终端显示的则叫作“后台进程”。 一个终端可以同时运行一个前台进程和多个后台进程。
后台命令(或程序)以符号 “&‖ 结束, 将立即返回Shell提示符,同时在后台执行该命令。
当标准文件描述符被分配给终端以外的对象,就称为 I/O重定向, 由 “>‖、 “>>‖ 、 “<‖ 、“<<‖等符号完 成。
用 >, <, >>等符号改变标准流的方向, 分析以下命令的结果:
$ ls -l
$ ls -l > mydirlist
$ pwd > mydirlist
$ pwd >> mydirlist $ date >> mydirlist
4) 变量的作用域:局部变量和全局变量 一般情况下,变量仅在给它赋值的那个Shell下起作用, 即它是一个局部变量。 $ ux=unix $ sh /进子进程 /进子进程
$ echo $ux /显:unix
$ sh
$ echo $ux /显:unix $ exit
$ echo $ux /显: $ exit $ echo $ux /显:unix
而
双引号,在遇到 $ 、\、 ‘ ’、 ` `等特殊符号时,要进行变量 或参数的替换。其它时候与单引号功能相同。
3)Shell 编程中三种引号的作用:
单引号 ‘ ’:其中内容是字符串,没有shell的特殊含义; 双引号“ ”:其中特殊字符作shell 含义解释,其它作字符; 反引号 ` `:其中的命令可作为执行结果进行赋值。 例: $ TT=`date` $ echo $TT 回显: wed Aug 16 15:11:42 Roc 2000 $ file=report $ echo ‗The time is `date`,the file is $file‘ 回显: The time is `date`,the file is $file $echo ―The time is `date`,the file is $file‖ 回显:The time is wed Aug 16 15:11:42 Roc 2000,the file is report.
$ ( ls –l; pwd; date ) > mydirlist
$ cat file1 file2 >> file3
$ mail tom < file
$ myprog < testdatafile
$ command << string ,为“行输入重定向”,较少使用。
$ myprog < infile > outfile
$ export ux /输出为全局变量
只有使用了export命令后,变量才会在子进程中起作用:
5)标准变量 Shell 标准变量,在shell进程创建时自动赋值: 变量用途 用户名 注册目录 访问路径 cd路径 提示符 辅提示符 终端类型 运行的shell sh变量 HOME PATH CDPATH PS1 PS2 TERM SHELL csh变量 user home path cdpath prompt term shell csh环境变量 USER HOME PATH
TERM
6) 位置变量 Shell 中命令行的参数可用单独的位置参数提取,它们是$1,$2, $3,…$9. 考虑下列shell程序,其文件名为echoarg.sh: echo $# 执行此程序时用:
for VAR in $*
do echo $VAR done
$ echoarg.sh first second third
/*同时使用输入输出重定向 */
对于标准错误输出流的重定向,不同的shell修改 方法有所不同。
如果将标准输出和标准错误输出流都定向到同一文件,B Shell中用2>&1来实现,C Shell中用>&来实现。试分析:
$ cc abc.c > log
$ cc abc.c 2>&1 log
% cc abc.c > log % cc abc.c >& log
7) 变量替换
程序中若有以下语句: echo ―The CDPATH is $CDPATH‖ 会显示:The CDPATH is 对未赋值变量的赋值方法:
${var:-word}: 若var有值且非空,取该值,否则取 word,
var 不变; ${var:=word}:若var有值且非空,取该值,否则取 word, 同时将word值赋给var; ${var:+word}:若var有值且非空,取word,否则var仍为空 可将上列语句改为: echo ―The CDPATH is ${CDPATH:-Undefined}‖