Linux课程设计报告 下载本文

内容发布更新时间 : 2024/12/25 12:45:15星期一 下面是文章的全部内容请认真阅读。

(2)查看指定用户

图4-2 查看指定用户

(3)添加用户

主菜单界面N进入add界面Y是否继续添加输入信息是否有效YY是否保存N进入主菜单

图4-3 添加用户

3

(4)删除用户

主菜单界面N进入delete界面Y是否继续删除输入ID是否存在YY是否删除N进入主菜单

图4-4 删除用户

4.2总体功能模块图 用户信息主菜单 显示 当 前 所有 用 户 的 记录

显示当前所有用户经格式化的显示用户名和用户ID 显示当前所有用户 显示经格式化后的用户名和用查找指定用户信息 添加用户信息删除用户信息

图4-5 总体功能模块图

4

五、详细设计

5.1模块功能说明

shell编程用户信息管理系统中,由passwd文件,add.sh,delete.sh,menu.sh三个shell文件组成。

首先编写passwd文件,在此文件里按照/etc/passwd文件的格式[用户名:密码:用户标志号:组标志号:说明域:用户家目录:用户登录成功后使用的shell程序]写下设置的用户信息。

add.sh是对用户信息进行增加的shell程序,提示用户输入用户名,如果没有输入,则继续提示用户输入用户名,如果用户输入了则验证用户名是否符合用户名的要求,是否以非数字打头的字符和数字组成,如果不符合要求则要求用户重新输入,如果符合要求用户需要继续输入密码,然后验证密码和重新输入密码两次输入密码是否一致,若一致则需要用户继续输入用户UID,组GID,说明域,用户家目录,shell路径,若都成功的话,则把信息重定向追加到passwd文件里。

delete.sh是对用户进行删除操作的shell程序,首先需要用户输入用户需要删除的用户名,然后搜索出此用户名的信息,进行确认即可删除。 最后是menu,sh是用户的主函数,通过输入不同的值完成不同的功能,包括显示用户记录,格式化记录,显示用户名和ID,格式化显示用户名和ID,查询特定用户信息,添加新用户,删除用户。

5.2系统中shell主要命令说明

符号 #!: 用来告诉系统它后面的参数是用来执行该文件的程序。

变量: 在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明,直接赋值就可以,应用变量的话,用$+变量名的形式。 管道 (|): 将一个命令的输出作为另外一个命令的输入。

echo :将其命令行参数中的字符串或变量的值写到标准输出设备,在显示器上显示一段文字,一般起到一个提示作用。 echo –n不换行输出

echo -e后加上\\起到转义作用

重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。 < :用于输入重定向

> :写入文件并覆盖旧文件

>> :加到文件的尾部,保留旧文件内容。

test命令:通常用\来表示条件测试。注意这里的空格很重要。要确保方括号的空格。

[ -f \:判断是否是一个文件 [ -n \:判断$var变量是否有值

[ expression -a expression ] :当两边的两个expression 表达式都为真

5

[ -z string ]:string长度是0

[ integer1 -eq integer2 ] :当integer1等于integer2 [ integer1 -ne integer2 ] :当integer1不等于integer2 \表达式: 如果条件为真则执行then后面的部分: if ....; then ....

elif ....; then .... else .... fi

case 表达式:可以用来匹配一个给定的字符串,而不是数字。 case ... in

...) do something here ;; esac

tr \:把冒号换成空格

sort:对制定文件中的行按要求进行排序 sort -k 1 $dataSource;//按第一个域进行排序 expr 命令:对表达式进行运算

expr match $string substring命令在string字符串中匹配substring字符串,然后返回匹配到的substring字符串的长度,若找不到则返回0。 expr length $string 求出字符串的长度

字符串过滤命令grep:字符串搜索与过滤,显示所在行的相关信息。 grep -i string1 string2 在string2里查找string1,是大小写无关的搜索 grep -n $deleteUser $dataSource:显示查找含有$deleteUser信息,并且在最前面加上行号。

cat file.txt: 输出文件内容到标准输出设备(屏幕)上 read var: 提示用户输入,并将输入赋值给变量

cut:从文件或标准输入中读取内容,并截取每一行的特定部分,然后将结果送到标准输出。

-d sep:指定sep作为输入文件域分隔符,默认为Tab。

cut不支持用空格隔开的列。cut分隔符只能识别冒号,逗号,句号,tab键等非空格作为分隔符的文件或命令执行结果。 cut -d “:” -f 1,3 /etc/passwd:用冒号为分隔符,输出/etc/passwd文件的第1,3列。

sed:是流编辑器,对它的输入流进行按指定格式的转换。是一个基本的查找替换程序,可以从标准输入读入文本,并将结果输出到标准输出(屏幕)。 sed的操作对象:普通文件,数据流,一个命令的执行结果。 sed -n ?2p? student.txt:输出student.txt文件中的第二行

sed -e \:删除含有$rowID的这一行信息

awk:字符串列截取功能。默认分隔符为白空格。可以用-F指定分隔符。 语法:awk ?条件{动作}? file

awk ?{printf $2 “\\t” $6}? student.txt:输出student.txt的第2列和第6列。

6

六、调试与测试

6.1调试方法

1、正常输入

shell程序在/root/linlin/1下

系统主界面:

7