在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell。
请设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。
你们可以通过创建一些UNIX/LINUXshell脚本文件来满足以上需求。
  可以用任意一个文本编辑器打开passwd文件,该文件里包含用冒号分隔开的字段组成的记录,如下所示:  root:x:0:0:root:/root:/bin/bash  zxj:x:500:500:zxj303:/home/zxj:/bin/bash  .  .  .  在主Shell脚本文件里(必须以menu命名)要有一个多操作选项的菜单以便用户从中选择。
在不同任务的中,这些操作能自动实现以下功能:在屏幕上显示当前所有用户的记录在屏幕上显示当前所有用户(经过格式化和排序的)的记录只在屏幕上显示用户名和用户ID只在屏幕上显示(经过格式化和排序的)用户名和用户ID查询并显示特定用户的记录往passwd文件里增加新的用户记录从passwd文件里删除某个用户记录  你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、2、3、4、5的任务。
对于任务6和7,你需要编写单独的Shell脚本文件(必须分别命名为add和delete)并且在你的主脚本menu文件中调用这些脚本文件。
  可能你还需要查询一些Unix/Linux命令,比如awk,、sort、tr、cut、paste、sed、grep;
你也可能还需要查询其他的Unix/Linux命令。
  建议你在主目录下建立一个以xxxxxx(xxxxxx为学号)命名的目录,并且在本次作业中使用它作为工作目录。
主脚本文件中的菜单  在menu脚本文件里将创建如下菜单,菜单里包含供用户选择的一些操作。
用户信息主菜单打印当前所有记录打印当前所有记录(格式化后的)打印用户名和用户ID打印(格式化了的)用户名和用户ID查询特定记录增加新记录删除记录Q——退出你的选择是:(等待用户输入)  当用户做了选择且所选的操作完成之后,应再次显示主菜单以供用户做下一步选择。
你必须用while循环和case条件语句配合来完成此操作。
另外在显示主菜单前必须先清除用户屏幕。
在以下所有步骤中,当显示主菜单前都需要先清屏。
  在menu脚本文件的前面部分你首先要定义三个变量,这三个变量分别存放passwd、add、delete文件的文件名,并且能在所有涉及到passwd、add、delete文件的语句中使用他们。
比如,可以定义成:          record_file=passwd  在所有访问passwd文件的语句中,只要使用$record_file即可。
这样做的一个优点就是,如果以后你需要重新命名记录或者需要在不同的记录文件中使用你的脚本的话,你只需要修改以上一个语句而不须在所有有关的记录文件里逐一修改语句。
如下定义另外两个变量:  add_file=add  delete_file=delete  定义以上变量之后,你必须核对menu脚本文件,看看所需的文件(passwd、add、delete)是否准确存放在当前目录下。
如果其中任何一个不存在,你的脚本menu文件就必须显示以下信息,然后退出:  RequiredfiletheMissingFiledoesnotexist.(所需文件不存在)  比如,如果passwd文件不存在,就显示“Requiredfilepasswddoesnotexist.(所需文件记录不存在)”然后退出。
  在以上等待用户做出选择的菜单中,如果用户偶尔输入了一个代码而不是1、2、3、4、5、6、7或Q,就有信息提示“无效的代码,请按回车键继续``````”(务必保证光标停留在此信息行末尾而不是在下一行的开始处)。
等用户按了回车键之后,再次显示主菜单供用户做其他选择。
可以允许用户使用Q或q退出。
  在以上等待用户做出选择的菜单中,如果用户简单地按了回车键(而不是输代码)的话,就会出现信息“Selectionnotentered.PressEntertocontinue…"(务必保证光标停留在此信息行末尾而不是在下一行的开始处)。
等用户按了回车键之后,再次显示主菜单供用户做其他选择。
  当用户选择了第一项——打印当前所有用户记录  以下是当用户在主菜单中选择第一个选项后,menu脚本文件
2023/11/27 18:53:43 211KB Linux大作业
1
case中等高线快速赋值,操作简单快速
2023/10/24 4:34:58 2.58MB 等高线 赋高程值
1
算法思路参考自github项目klimentyev/scma代码结构重新自己编写,更容易读懂,并且加入了很多中文注释使用方法:1、先运行begin把文件夹加入到路径2、运行configFile文件,生成配置文件CONFIGDATA.mat3、留意main中仿真case设定,以及saveflag的设置4、运行main.m
2023/9/24 14:04:15 66KB SCMA NOMA MATLAB仿真
1
Henry-Liang's-FRM-Guide-I-for-Case-Learning,主要用于FRM考试案列分享,内容很精美,分享给大家,主要用于学习研究目的哈,希望大家考研考出好成绩,考出风格和水平
2023/9/17 23:12:42 8.61MB FRM Finance
1
第一章....4【实例1】使用累加器进行简单加法运算:...4【实例2】使用B寄存器进行简单乘法运算:...4【实例3】通过设置RS1,RS0选择工作寄存器区1:...4【实例4】使用数据指针DPTR访问外部数据数据存储器:...4【实例5】使用程序计数器PC查表:...4【实例6】if语句实例:...4【实例7】switch-case语句实例:...4【实例8】for语句实例:...4【实例9】while语句实例:...5【实例10】do…while语句实例:...5【实例11】语句形式调用实例:...5【实例12】表达式形式调用实例:...5【实例13】以函数的参数形式调用实例:...5【实例14】函数的声明实例:...5【实例15】函数递归调用的简单实例:...5【实例16】数组的实例:...6【实例17】指针的实例:...6【实例18】数组与指针实例:...6【实例19】P1口控制直流电动机实例...6第二章....8【实例20】用74LS165实现串口扩展并行输入口...8【实例21】用74LS164实现串口扩展并行输出口...10【实例22】P0I/O扩展并行输入口...12【实例23】P0I/O扩展并行输出口...12【实例24】用8243扩展I/O端口...12【实例25】用8255A扩展I/O口...14【实例26】用8155扩展I/O口...19第三章....26【实例29】与AT24系列EEPROM接口及驱动程序...26【实例30】EEPROM(X5045)接口及驱动程序...30【实例31】与铁电存储器接口及驱动程序...33【实例32】与双口RAM存储器接口及应用实例...35【实例33】与NANDFLASH(K9F5608)接口及驱动程序...35第四章....43【实例34】独立键盘控制...43【实例35】矩阵式键盘控制...44【实例36】改进型I/O端口键盘...46【实例37】PS/2键盘的控制...49【实例38】LED显示...53【实例39】段数码管(HD7929)显示实例...54【实例40】16×2字符型液晶显示实例...55【实例41】点阵型液晶显示实例...61【实例42】LCD显示图片实例...63第五章....70【实例43】简易电子琴的设计...70【实例44】基于MCS-51单片机的四路抢答器...71【实例45】电子调光灯的制作...76【实例46】数码管时钟的制作...81【实例47】LCD时钟的制作...96【实例48】数字化语音存储与回放...103【实例49】电子标签设计...112第六章....120【实例50】指纹识别模块...121【实例51】数字温度传感器...121第七章....124【实例53】超声波测距...124【实例54】数字气压计...125【实例55】基于单片机的电压表设计...132【实例56】基于单片机的称重显示仪表设计...133【实例57】基于单片机的车轮测速系统...136第八章....138【实例58】电源切换控制...138【实例59】步进电机控制...140【实例60】单片机控制自动门系统...141【实例61】控制微型打印机...144【实例62】单片机控制的EPSON微型打印头...144【实例63】简易智能电动车...145【实例64】洗衣机控制器...149第九章....152【实例65】串行A/D转换...152【实例66】并行A/D转换...153【实例67】模拟比较器实现A/D转换...154【实例68】串行D/A转换...155【实例69】并行电压型D/A转换...156【实例70】并行电流型D/A转换...156【实例71】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的A/D转换...157【实例72】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的D/A转换...161第十章....164【实例73】单片机间双机通信...164【实例74】单片机间多机通信方法之一...166【实例75】单片机间多机通信方法之二...171【实例76】PC与单片机通信.
2023/8/13 0:42:44 929KB 51单片机 范例
1
Verilog语言中case语句详解及优化详细讲解了case语句的原理、实现。
并说明了如何合理使用case从而实现程序的优化配置
2023/6/30 2:24:07 24KB Verilog case casex casez
1
数据开掘与R语言,案例涵盖了首要的数据开掘本领,给出了齐全的代码。
2023/5/2 0:25:26 2.22MB 数据挖掘 R语言
1
每一天一个Case(004).pdf
2023/4/11 17:43:17 1.62MB ccielab
1
该包是个代码包,里面是引见通过cpp实现的一个简单的注册回调框架,这个框架是基于成员函数指针+map实现的;
用于优化程序结构(比如:可以取代繁长的switch----case)。
2023/2/22 22:13:36 16KB function, cpp消息回调
1
ssh完成页面登录和注册功能数据库名:case表名:user
2023/1/16 2:36:15 5.71MB ssh 登录 注册
1
共 46 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡