第6章 Shell基本命令

合集下载

shell.管道.重定向

shell.管道.重定向

Shell 脚本
• Shell Scripts是一个包含shell指令的文本文
件。 • Shell脚本支持变量与简单的语法来完成批 量工作。 • Shell脚本支持交互的方式,在执行时从标 准输入读取数据。 • 有大量的系统工作都是通过Shell脚本的方 式来完成,例如系统开机,服务控制。
编辑shell脚本
设备文件
• 设备在Linux中以特殊文件的形式存在 • 块(block)设备文件 • 字符(character)设备文件 • 设备文件所在位置 • 查看设备类型
虚拟控制台及用户身份切换
• 在系统中有12个虚拟控制台,前6个可供用
作本地登录 • 用户可以用Alt+Fn(n=1~12)来切换。 • 用su可以用来切换用户身份 su - username
常用快捷键
• Ctrl + d:输入已结束。在shell下相当于一
个exit • Ctrl + c:键盘中断请求。 • Ctrl +s & Ctrl + q:暂停/恢复屏幕输出 • Ctrl + l:清屏,相当于clear。 • Tab:自动补完命令行与文件名
– Tab键双击可以列出所有可能匹配的选择
创建用户
#useradd [用户名] #passwd [用户名] • example: • [root@localhost root]# useradd student • [root@localhost root]# passwd student • Changing password for user student • New password: (无回显) • Retype new password: (无回显) • passwd: all authentication tokens updated successfully • [root@localhost root]#

Linux中的shell与shell命令

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# 字符终端切换。

第6章Bshell及编程

第6章Bshell及编程
【例6-19】 用分号串结两个命令
第6章 B-shell及编程
元字符及其实例(2)
文件名通配符* [] ?
命令行中的通配符会被shell展开成多个文件名
美元符$和反撇号`对
分别用于变量替换和命令替换
重定向和管道
利用重定向和管道的组合,多个命令可以构造出更多 功能,重定向和管道符可以兼做分隔符 【例6-20】 重定向和管道符的命令分隔符作用 【例6-21】 shell对标准输入、标准输出和标准错误输 出之外的其他文件描述符的重定向
1. HOME:用户主目录的路径名 2. PATH:命令查找路径,如: PATH=./:/bin:/usr/bin:/etc 先搜索当前目录 PATH=/:bin/usr/bin:/etc:./ 后搜索当前目录 PS1和PS2:主提示符和副提示符 副提示符:当一个命令在一行内输不完需几行输 入一个命令时,第2行及其它行用副提示符 4. TERM:终端类型 5. LANG或LANGUAGE:系统所用的语种
第6章 B-shell及编程
本章小节
6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 启动B-shell 重定向与管道 变量 替换 元字符 条件判断 循环结构 函数 shell开关和位置变量
第6章 B-shell及编程
6.1 启动B-shell
第6章 B-shell及编程
第6章 B-shell及编程
元字符及其实例(3)
启动程序后台执行&
在命令的结尾处加&符,shell启动了这个命令进程之 后,不等待命令运行结束,就立刻给出新的提示符, 可以输入下个命令。如: sort telnos > telnos1 &
括号( )

06第06章普通文件、连接文件及目录文件属性管理课件

06第06章普通文件、连接文件及目录文件属性管理课件

16
读取文件属性代码
• 见教材代码。
2018/10/14
17
修改文件权限操作
2018/10/14
18
修改系统umask值
• 创建一个普通文件时的默认权限为0666-umask,如果创建一 个目录,默认权限为0777-umask。在shell应用中,可以按如 下方式使用umask命令:
2018/10/14
2018/10/14
30
习题
(1)Linux文件类型,在shell应用层面用ls -l查看命令不同类型 的文件分别显示什么内容? (2)在Linux某个文件系统下,文件属性中惟一标识某个文件的 是什么?惟一标识一个打开的文件是什么? (3)ls –lc,-lu,-lt分别列出的是什么时间? (4)Linux下文件属性有哪些,struct stat的各成员变量各代表什 么意义? (5)一个文件设置了setuid、setgid位,该可执行文件在执行时 有什么主要的影响。 (7)一个常规文件的大小可以为0(st_size字段定义),那么目 录和符号连接的长度是否可以为0? (6)编程实现文件夹的拷贝操作。***
26
文件时间属性修改
2018/10/14
27
第6章 普通文件、连接文件 及目录文件属性管理
1 2
Linux文件系统管理
Linux系统下文件类型及属性
3
4
Linux文件属性管理
应用示例:实现ls -l基本操作
需求及知识点涵盖
2018/10/14
29
知识点
• 本例实现该命令基本功能(主要为巩固本书第4、5、6章知识点), 并固定argv[1]个参数为“-l”(实际应用中,“-l”的位置是可变的), 根据argv[2]及后面参数情况列出相应的信息。 • 显然,从需要来看,本示例程序主要涉及以下知识点: – 参数检查。包括参数个数检查(2个或2个以上)。并判断第2个 及以后的参数是否存在、是文件还是目录(这需要使用stat函数 读取该参数的属性)。 – 如果是普通文件。需要使用stat()函数读取文件的属性,并根据 stat输出结果进行用户ID到用户名的转化,组ID到组名的转换, 时间的转化(stat()函数输出的时间是自1970-1-1以来经历的秒 数)。 – 如果是目录文件。需要依次读取该目录下的文件列表(如果有必 要,还需要进行文件名排序),然后读取该文件基本信息。 – 如果是链接文件,还需要列出链接文件的源文件。本示例没有考 虑设备文件的设备号等。

第6章 添加新用户0

第6章 添加新用户0

按照性质可将用户组分为两种类型 系统组:安装Linux以及部分服务性程序时,系统自动设置 的组,其默认GID为0~499。 私有组:由超级用户创建的组,其GID≥500。创建用户时 会默认创建一个同名的私有组。 Linux中每个用户都至少属于一个组,即一个用户可以属于 多个组,其中一个称为该用户的主要组,而其他组群称为该用 户的附加组。一个用户只能属于一个主要组。
用户账号管理
1.创建新用户
在Linux中,创建或添加新用户用useradd命令来实现,其使用格式为: useradd [选项] 用户名 useradd命令只能由root用户使用。选项用于设置用户账号参数。
useradd主要选项说明
选 项 -c 注释 -d 主目录 -e 有效期限 -f 缓冲天数 -g 组 ID 或组名 -G 组 ID 或组名 -s 登录 shell -u 用户 ID 说 明 设置对用户的注释信息,该信息被加入到/etc/passwd 文件的备注栏中。 指定用户的主目录。系统默认的用户主目录为“/home/用户名” 。 指定用户账号过期日期。日期格式为 MM/DD/YY。 指定口令过期后多久将关闭此账号。 指定用户所属的主要组。系统默认创建一个与用户同名的私有用户组。 指定用户所属的附加组,多个附加组之间用逗号分隔。 指定用户登录后所使用的 shell。系统默认为/bin/bash。 指定用户的 UID。
【例】将teacher用户改名为tom。
[root@rhel4 ~]# usermod -l tom teacher 查看/etc/passwd文件可知,用户teacher已被改名为tom 但用户的其他信息没有发生改变,即主目录仍为 /home/teacher,UID、GID、登录Shell等均未改变。 【例】将tom用户账户锁定。 [root@rhel4 ~]# usermod -L tom 查看/etc/shadow文件可知,tom用户的口令字段前加上“!”

shell程序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编程的基本概念、语法和技巧,为学生提供必要的理论知识。

第六章( CSH 语法介绍 )

第六章( CSH 语法介绍 )

表4-1 常用文件重定向命令
command > filename
把标准输出重定向到一个新的文件中
command >> filename
把标准输出重定向到一个文件中(追加)
command 1 > fielname
把标准输出重定向到一个文件中
command > filename 2>&1
把标准输出和标准错误一起重定向到一个文件中
$set x = 100
$echo “this x value $x”
this x value 100
如果我们在变量后面不加空格则需要做如下处理:
$ set x = 100
$echo “this x value ${x}y”
this x value 100y
6.2.3:tee 命令:
tee 命令作用可以用字母 T 形象的表示,它的输出的一个副本输送到标准输出,另一个副本则拷贝到相
genesis console
Oct 19 14:29 (:0)
genesis dtremote Oct 23 12:18 (192.168.200.168:1)
genesis pts/3
Oct 23 12:18 (192.168.200.168:1.0)
genesis pts/4
Oct 23 12:19 (192.168.200.168:1.0)
第六章
CSH 语法介绍
如果要显示双引号则需要用下面的方法:
$echo ‘how “are” you’
how “are'” you
请注意的是作为符号的那一组必须成对的出现。否则将出现错误提示。
(2):显示变量$x 的值:

Linux与Unixshell编程指南(完整高清版).pdf

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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(5)tail命令。
格式:tail [选项] 文件名 功能:和head命令的功能相对应,如果想查看文件的尾部, 可以使用tail命令。该命令显示一个文件的指定内容,它把 指定文件指定显示范围内的内容显示在标准输出上。 常用选项说明: +n 从第n行以后开始显示。 -n 从距文件尾n行处开始显示。如果省略n参数,系统默认 值为10。 例:显示/etc/passwd文件的最后4行内容。 [root@localhost root]#tail -4 /etc/passwd
3.显示路径的命令pwd
格式:pwd 功能:显示当前目录的绝对路径。
例:显示当前工作路径。 [root@localhost root]#pwd /root
4.显示目录内容的命令ls 格式:ls [选项] [文件|目录] 功能:显示指定目录中的文件和子目录信息。当不指定目录时,显 示当前目录下的文件和子目录信息。 常用选项说明: -a 显示所有文件和子目录,包括隐藏文件和隐藏子目录。Linux中的隐 藏文件和隐藏子目录以‚.‛开头。 -l 显示文件和子目录的详细信息,包括文件类型、权限、所有者和所 属组群、文件大小、最后修改时间、文件名等。 -d 如果参数是目录,则只显示目录的信息,而不显示其中所包含的文 件的信息。 -t 按照时间顺序显示。 -R 不仅显示指定目录下的文件和子目录信息,而且还递归地显示各子 目录中的文件和子目录信息。 例:查看当前目录下的文件和子目录信息。 [root@localhost root]#ls 例:查看/etc目录下的所有文件和子目录的详细信息。 [root@localhost root]#ls –al /etc
6.1.2 SHELL的启动
1.终端的切换 Linux的字符界面也被称作虚拟终端(Virtual Terminal)或者 虚拟控制台(Virtual Console)。操作Windows计算机时, 用户使用的是真实的终端,而Linux具有虚拟终端的功 能,可为用户提供多个互不干扰、独立工作的界面。 操作Linux计算机时,用户虽然面对的是一套物理终端 设备,但却仿佛在操作多个终端。 Linux的虚拟终端默认有7个,其中从第1个到第6个虚拟 终端是字符界面,而第7个虚拟终端则是图形化用户界 面。每个虚拟终端相互独立,用户可以以相同或不同 的账户登录各个虚拟终端,同时使用计算机。

3.文件查找命令find 格式:find
[选项] 文件名 功能:从指定的目录开始,递归地搜索其各个子目录,查找满足寻 找条件的文件并对之采取相关的操作。此命令提供了相当多的查找 条件,功能非常强大。 -name ‗字串’ 查找文件名匹配所给字串中的所有文件,字串内可用 通配符*、?、[]。 -group ‗字串’ 查找属于用户组名为所给字串的所有文件。 -user ‗字串’ 查找属于用户名为所给字串的所有文件。 find命令提供的查询条件可以是一个用逻辑运算符not、and、or组成 的复合条件。 -a 逻辑与,是系统默认的选项,表示只有当所有的条件都满足时,查 询条件才满足。 -o 逻辑或,只要所给的条件中有一个满足时,查询条件就满足。 -! 逻辑非,该运算符表示查找不满足所给条件的文件。 例:查找文件名为‘temp‘或是匹配‘install*‘的所有文件。 [root@localhost root]#find –name ‗temp‘ –o –name ‗install*‘ 例查找文件名不是‘temp‘的所有文件。 [root@localhost root]#find ! -name‗temp‘
6.2.1目录管理 1.目录的创建与删除命令 (1)mkdir命令 格式:mkdir [选项] 目录 功能:创建目录。 常用选项说明: -m 创建目录的同时设置目录的访问权限。 -p 一次性创建多级目录。 例:创建名为test的目录,并在其下创建Linux目录。 [root@localhost root]#mkdir -p test/linux [root@localhost root]#ls test
6.2.2 文件管理
1.显示文件内容命令 用户要查看一个文件的内容时,可以根据显示要求的不同选用以下的命令。 (1)cat命令 格式:cat [选项] 文件名 功能:依次读取其后所指文件的内容并将其输出到标准输出设备上。另外, 还能够用来连接两个或多个文件,形成新的文件。 例:显示install.log文件的内容。 [root@localhost root]#cat install.log 创建文本文件f1,显示文件的内容。 [root@localhost root]#cat >f1 按下ctrl+D键,在当前目录下保存文件f1,之后输入如下命令查看文件内容。 [root@localhost root]#cat f1
2.Shell命令格式 在Shell命令提示符后,用户可输入相关的Shell命令。Shell 命令可由命令名、选项和参数三个部分组成,其中方括号 部分表示可选部分,其基本格式如下所示: 命令名 [选项] [参数] 在shell中,一行中可以键入多条命令,用‚;‛字符分隔。 在一行命令后加‚\‖表示另起一行继续输入。使用Tab键可 以自动补齐。
第6章 Shell基本命令 图形界面下的操作简单易学,是初学者的首选,但由 于需要大量的系统资源,因此效率也相对较低。本章主要 介绍执行效率较高的Linux命令操作,包括Shell的启动、命 令格式、常用的Shell命令及Shell的高级应用,同时还介绍 了一个功能强大的编辑器——vi的使用。
6.1 SHELL命令概述
6.1.1 Shell简介 Shell是Linux的一个特殊程序,是内核与用户的接口,它是命令 语言、命令解释程序及程序设计语言的统称。Shell是一个命 令语言解释器,它拥有自己内建的 shell 命令集, shell 也能被 系统中其他应用程序所调用。
Shell的另一个重要特性是它自身就是一个解释型的程序设计语 言,Shell程序设计语言支持绝大多数在高级语言中能见到的 程序元素,如函数、变量、数组和程序控制结构。 Linux中的Shell有多种类型,其中最常用的几种是Bourne Shell (sh)、C Shell(csh)和Korn Shell(ksh),三种shell各有 优缺点。 Linux操作系统缺省的Shell是Bourne Again Shell,它是Bourne Shell的扩展,简称Bash。
2.改变工作目录的命令cd

格式:cd [目录] 功能:将当前目录改变为指定的目录。若没有指定 目录,则回到用户的主目录,也可以使用‚cd ..‖返 回到系统的上一级目录。 例:将用户目录切换到/home。 [root@localhost root]#cd /home 运行后屏幕上显示的提示符变为如下形式,表明目 录已经切换成功。 [root@localhost home]#
6.1.2 SHELL的启动
虚拟终端之间可以通过以下方法进行相互切换。 Ctrl+Alt+F7可以从字符界面的虚拟终端切换到其他 虚拟终端。 Ctrl+Alt+F1~Ctrl+Alt+F6可以从图形化用户界面切换 到字符界面的虚拟终端。 默认情况下,RedHat9.0在安装时设置为启动后进 入图形化的用户登录界面,用户输入正确的用户名 和密码后,会直接进入图形操作环境GNOME,可以 通过上述切换方式切换为字符界面 。

(3)less命令 less命令与more命令非常相似,输入命令后,首先显示的是 第一屏文本,并在屏幕的底部出现文件名。用户可使用上下 方向键、Enter键、空格键、PageDown或PageUp键前后翻阅 文本内容,使用q键可退出less命令。
(4)head命令。 格式:head [选项] 文件名 功能:显示文件的头几行内容。 常用选项说明: -n 指定显示文件的前n行,如果没有给出n值,默认设置为 10。 例:显示/etc/passwd文件的前2行内容。 [root@localhost root]#head -2 /etc/passwd
6.1.3 SHELL命令格式
1.Shell命令提示符 成功登录Linux后将出现Shell命令提示符,如: [root@localhost root]# 超级用户的命令提示符 [hellen@red hellen]$ 普通用户hellen的命令提示符 (1) [ ]以内@之前为已登录的用户名(如root、hellen),[ ]以内@之 后为计算机的主机名(如red),如果没有设置过主机名,则默 认为localhost。其次为当前目录名(如root、hellen)。 (2)[ ]外为Shell命令的提示符号,‚#‖是超级用户的提示符,而 ‚$‖是普通用户的提示符。
6.1.2 SHELL的启动
也可以通过修改/etc/inittab配置文件将系统启动的默认终端设置 为字符方 式。具体步骤为:在图形界面下单击‚主菜单‛ ︱―运行程序…‖菜单, 在弹出的对话框中输入文本编辑命令‚gedit /etc/inittab‖,打 开配置文件inittab,也可以右键单击桌面新建一个Shell仿真终端, 在终端提示符后输入‚gedit /etc/inittab‖命令。 在打开的inittab文件中,找到其中的一行配置‚id:5: initdefault:‛,其中数字5代表启动进入图形界面,改为3则使系 统启动后进入字符终端界面。编辑修改完成后,保存修改结果并 重新启动系统,则系统在加载内核后将运行Shell程序进入字符终 端。从字符终端进入图形界面,只需在终端命令行提示符下,键 入‚startx‖,即可进入图形用户界面。反之,用户从图形界面中 注销,即可返回字符终端。Leabharlann 6.2 常用SHELL命令
(2)rmdir命令 格式:rmdir [选项] 目录 功能:从一个目录中删除一个或多个子目录项,要 求目录删除之前必须为空。 常用选项说明: -p 递归删除目录,当子目录删除后其父目录为空时, 也一同被删除。 例:删除test的目录下的Linux目录,同时将test目录 一并删除。 [root@localhost root]#rmdir -p test/linux [root@localhost root]#ls
相关文档
最新文档