Linux shell大作业
xshell-linux命令

suselinux常用命令(1)命令ls——列出文件ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的―隐藏‖文件ls a* 列出当前目录下以字母a开头的所有文件ls -l *.doc 给出当前目录下以.doc结尾的所有文件(2)命令cp——复制文件cpafileafile.bak把文件复制为新文件afile.bakcpafile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下cp * /tmp把当前目录下的所有未隐藏文件复制到/tmp/目录下cp -a docs docs.bak递归性地把当前目录下的docs目录复制为新目录docs.bak,保持文件属性,并复制所有的文件,包括以句点开头的隐藏文件。
为了方便起见,-a选项包含-R选项cp -i在覆盖前询问用户cp -v 告诉用户正在做什么(3)命令mv——移动和重命名文件mv afliebfile将afile重命名为bfilemv afile /tmp把当前目录下的afile移动到/tmp/目录下(4)命令rm——删除文件和目录rmafile删除文件afilerm * 删除当前目录下的所有文件(未隐藏文件)。
rm命令不删除目录,除非也指定了-r(递归)参数。
rm -rf domed 删除domed目录以及它所包含的所有内容rm -i a* 删除当前目录下所有以字母a开头的文件,并且在每次删除时,提示用户进行确认(5)命令cd——更改目录cd ~ 切换到主目录cd /tmp切换到目录/tmpcd dir切换到当前目录下的dir目录cd / 切换到根目录cd ..切换到到上一级目录cd ../.. 切换到上二级目录cd ~ 切换到用户目录,比如是root用户,则切换到/root下(6)命令mkdir——建立目录mkdir phots 在当前目录中建立名为photos的目录mkdir -p this/that/theother在当前目录下建立指定的嵌套子目录(7)命令mkdir——删除目录mkdir将删除空目录(8)命令more、less——查看文件内容more /etc/passwd查看/etc/passwd的内容more file more命令也可以通过管道符(|)与其他的命令一起使用,例如:psux|morels|moreless /etc/passwd查看/etc/passwd的内容(9)命令grep——搜索文件内容grep bible /etc/exports 在文件exports中查找包含bible的所有行tail -100 /var/log/apache/access.log|grep 404 在WEB服务器日志文件access.log的后100行中查找包含―404‖的行tail -100 /var/log/apache/access.log|grep -v googlebot在WEB服务器日志文件access.log的后100行中,查找没有被google访问的行grep -v ^# /etc/apache2/httpd.conf在主apache配置文件中,查找所有非注释行(10)命令find——查找文件find .-name *.rpm 在当前目录中查找rpm包find .|grep page 在当前目录及其子目录中查找文件名包含page的文件locate traceroute 在系统的任何地方查找文件名包含traceroute的文件(11)命令vi——编辑文件vi /etc/bubby.txt 用vi编辑文件/etc/bubby.txtvim /etc/bubby.txt 用vi编辑文件/etc/bubby.txt快捷操作:切换窗口:alt+1,alt+2全屏:alt+回车将vim挂起(暂停):ctrl+z,暂停后可进行其他shell操作,完了之后可通过fg命令切换回vim界面继续编辑:MR:查看历史文件记录(注意:MR大写):sp横向切换界面窗口:vsp纵向切换界面窗口方便多文件对照编码(如下图:)emacs /etc/bubby.txt 用emacs编辑文件/etc/bubby.txt(12)命令rz、sz——文件上传下载运行命令Sudorz,即是接收文件,xshell就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到linux里的当前目录。
在Linux上使用Shell脚本实现系统备份与恢复

在Linux上使用Shell脚本实现系统备份与恢复在Linux系统中,备份和恢复是非常重要的操作,可以保护系统中重要的数据和配置信息。
使用Shell脚本可以自动化这一过程,简化操作步骤,提高效率。
本文将介绍如何使用Shell脚本在Linux上实现系统备份与恢复。
一、系统备份1. 创建备份目录在进行系统备份之前,首先需要创建一个用于存储备份文件的目录。
可以选择一个合适的位置,比如/home/backup。
在终端中输入以下命令来创建备份目录:```shell$ mkdir /home/backup```2. 编写备份脚本创建一个名为backup.sh的Shell脚本文件,并添加以下代码:```shell#!/bin/bash# 指定备份路径和文件名backup_dir="/home/backup"backup_file="backup_$(date +%Y%m%d).tar.gz"# 备份系统文件tar -zcvf $backup_dir/$backup_file /etc /var/www /home/user# 输出备份完成信息echo "System backup completed!"```在上述代码中,首先通过date命令获取当前日期,并将其格式化为YYYYMMDD的形式,作为备份文件的一部分。
然后,使用tar命令将需要备份的文件和目录打包为一个压缩文件,并保存到指定的备份目录中。
最后,输出备份完成的提示信息。
3. 运行备份脚本保存backup.sh文件后,打开终端并切换到该脚本所在的目录。
使用以下命令给予脚本执行权限:```shell$ chmod +x backup.sh```接着,运行备份脚本:```shell$ ./backup.sh```系统将开始备份操作,并在完成后输出备份完成的提示信息。
二、系统恢复1. 创建恢复目录在进行系统恢复之前,同样需要创建一个用于存储恢复文件的目录。
linuxsh命令详解

linux sh命令详解linux sh命令时linux下的一个命令,那么它是用来干吗的呢?下面由店铺为大家整理了linux sh命令的相关知识,希望大家喜欢!linux sh命令sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。
通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux 系统中一个默认的Shell。
Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
linux sh命令语法bash [options] [file]linux sh命令选项-c string:命令从-c后的字符串读取。
-i:实现脚本交互。
-n:进行shell脚本的语法检查。
-x:实现shell脚本逐条语句的跟踪。
linux sh命令实例使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态:[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh + DEFINE=30+ cat /var/log/secure+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'++ cat /root/satools/black.txt+ for i in '`cat /root/satools/black.txt`'++ echo 121.42.0.16=1427 ++ awk -F= '{print $1}'+ IP=121.42.0.16++ echo 121.42.0.16=1427++ awk -F= '{print $2}'+ NUM=1427+ '[' 1427 -gt 30 ']'+ grep 121.42.0.16 /etc/hosts.deny + '[' 1 -gt 0 ']'+ echo sshd:121.42.0.16+ echo vsftpd:121.42.0.16+ for i in '`cat /root/satools/black.txt`' ++ echo 121.42.0.72=276++ awk -F= '{print $1}'+ IP=121.42.0.72++ awk -F= '{print $2}'++ echo 121.42.0.72=276+ NUM=276 + '[' 276 -gt 30 ']'+ grep 121.42.0.72 /etc/hosts.deny + '[' 1 -gt 0 ']'+ echo sshd:121.42.0.72+ echo vsftpd:121.42.0.72。
在Linux上使用Shell脚本实现文件加密与解密

在Linux上使用Shell脚本实现文件加密与解密在计算机的日常使用中,文件的安全性和隐私保护是非常重要的。
为了保护文件的机密性,我们可以使用加密技术来对文件进行加密和解密。
在Linux操作系统上,我们可以使用Shell脚本来实现文件的加密和解密功能。
本文将介绍在Linux上使用Shell脚本实现文件加密与解密的方法。
一、文件加密在Linux中,我们可以使用openssl命令来进行文件的加密。
openssl 是一个开源的加密工具包,它提供了各种加密算法和加密函数。
下面是一个使用openssl命令进行文件加密的示例Shell脚本:```bash#!/bin/bash# 获取要加密的文件名read -p "请输入要加密的文件名:" filename# 生成随机的加密密码password=$(openssl rand -base64 32)# 加密文件openssl enc -aes-256-cbc -salt -in $filename -out $filename.enc -pass pass:$passwordecho "文件加密成功!加密密码已保存在password.txt文件中。
"# 将加密密码保存到文件中echo $password > password.txt```在以上示例中,首先通过read命令获取用户输入的要加密的文件名,然后使用openssl rand命令生成一个随机的加密密码。
接下来,使用openssl enc命令对文件进行加密,加密算法使用的是aes-256-cbc,加密后的文件保存为原文件名加上.enc后缀。
最后,将生成的加密密码保存在password.txt文件中。
二、文件解密对于加密后的文件,我们可以使用相同的加密密码来进行解密。
下面是一个使用openssl命令进行文件解密的示例Shell脚本:```bash#!/bin/bash# 获取要解密的文件名read -p "请输入要解密的文件名:" filename# 获取加密密码password=$(cat password.txt)# 解密文件openssl enc -d -aes-256-cbc -in $filename -out $filename.dec -pass pass:$passwordecho "文件解密成功!解密后的文件保存为$filename.dec。
Linux中执行shell脚本命令的4种方法总结

Linux中执⾏shell脚本命令的4种⽅法总结bash shell 脚本的⽅法有多种,现在作个⼩结。
假设我们编写好的shell脚本的⽂件名为hello.sh,⽂件位置在/data/shell⽬录中并已有执⾏权限。
⽅法⼀:切换到shell脚本所在的⽬录(此时,称为⼯作⽬录)执⾏shell脚本:复制代码代码如下:cd /data/shell./hello.sh./的意思是说在当前的⼯作⽬录下执⾏hello.sh。
如果不加上./,bash可能会响应找到不到hello.sh的错误信息。
因为⽬前的⼯作⽬录(/data/shell)可能不在执⾏程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。
查看PATH的内容可⽤ echo $PASH 命令。
现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执⾏。
⽅法⼆:以绝对路径的⽅式去执⾏bash shell脚本:复制代码代码如下:/data/shell/hello.sh⽅法三:直接使⽤bash 或sh 来执⾏bash shell脚本:复制代码代码如下:cd /data/shellbash hello.sh或复制代码代码如下:cd /data/shellsh hello.sh注意,若是以⽅法三的⽅式来执⾏,那么,可以不必事先设定shell的执⾏权限,甚⾄都不⽤写shell⽂件中的第⼀⾏(指定bash路径)。
因为⽅法三是将hello.sh作为参数传给sh(bash)命令来执⾏的。
这时不是hello.sh⾃⼰来执⾏,⽽是被⼈家调⽤执⾏,所以不要执⾏权限。
那么不⽤指定bash路径⾃然也好理解了啊,呵呵……。
⽅法四:在当前的shell环境中执⾏bash shell脚本:复制代码代码如下:cd /data/shell. hello.sh或复制代码代码如下:cd /data/shellsource hello.sh前三种⽅法执⾏shell脚本时都是在当前shell(称为⽗shell)开启⼀个⼦shell环境,此shell脚本就在这个⼦shell环境中执⾏。
linux常用命令_100个必会的shell脚本_linux基础知识总结

linux常⽤命令_100个必会的shell脚本_linux基础知识总结View Code linux常⽤命令:sudo 命令Linux系统的ping命令是常⽤的⽹络命令,它通常⽤来测试与⽬标主机的连通性,我们经常会说“ping ⼀下某机器,看是不是开着”、不能打开⽹页时会说“你先pi。
Linux常⽤命令详解_IT/计算机_专业资料。
⼀、个⼈整理了Linux常⽤命令合集。
su su 命令是最基本的命令之⼀,常⽤于不同⽤户间切换。
例如,如果登录为user1,要切换为⾸先必须强调,Linux命令记忆的最佳⽅法就是在使⽤中记忆,伴随着使⽤场景的记忆是⾮常深刻且难以磨灭的,在使⽤过⼀段时间之后,⼤部分的常⽤命令都会成为你未来⼗年乃⾄。
在linux下⾯⼯作,有些命令能够⼤⼤提⾼效率。
本⽂就向⼤家介绍find、grep命令,他哥俩可以算是必会的linux命令,我⼏乎每天都要⽤到他们。
本⽂结构如下: find命令前⼏天有个朋友给我发消息:"问你个问题,Linux 命令⾏有没有快捷键⼀下从⾏末会到⾏头?经常敲了很多命令发现忘加sudo 了,然后把命令删了重新敲⼀遍"。
正好。
⼆、Linux常⽤命令⽂件系统操作命令: 1 cat:可以显⽰⽂件的内容(经常和more搭配使⽤),或将多个⽂件合并成⼀个⽂件。
2 chgrp:⽤来改变⽂件或⽬录所属的L系统信息常⽤命令⼤全显⽰机器的处理器架。
Linux VPS下SSH常⽤命令:⽬录操作,⽂件操作,解压缩,下载wget,进程管理,Vim操作Linux VPS下SSH常⽤命令,命令是Linux系统上的重中之重⼀定要多加练linux ⽣产常⽤命令hostname 显⽰当前的主机名pwd 显⽰当前⼯作的⽬录w who whoami 显⽰当前⽤户及已建⽴的ssh链接useradd 新建⼀个普通⽤户。
三、Linux 系统常⽤命令格式: command [option] [argument1] [argument2] 其中option以“-”开始,多个option可⽤⼀个“-”连起来,如“ls -l -a”与“ls 当易⽹收集的linux常⽤命令⼤全是⼀款经过细⼼整合的linux⼿册,包含了迄今为⽌所有已经见到的linux操作命令,传输、管理、维护等多个⽅⾯,查阅、学习都。
Linux操作系统shell和常用命令
Linux操作系统shell和常用命令内容提要•1 shell•2 进程和shell 命令行•2 常用命令1、使用SHELL•1.1 什么是Shell•1.2 系统中有几种Shell •1.3 Shell脚本1.1 什么是Shell•shell提供了一个到Linux操作系统的界面以方便运行程序。
事实上,shell也只不过是另外一个Linux操作系统程序而已。
•shell是一个命令解释器,它可以用来启动、挂起、停止甚至编写程序。
shell是Linux操作系统的一个整体组成部分,也是Linux操作系统和UNIX设计的一部分。
1.1 什么是Shell•如果把Linux 操作系统的内核想象成一个球体的中心,那么shell 就是包围内核的外层。
从shell 或其他程序向Linux 操作系统传递命令的时候,内核就会做出相应的反应。
•用户Shell 配置的位置/etc//etc/passwdpasswd1.2 shell•这种shell的内建命令都有哪些?•怎样进行任务控制?•这种shell是否支持命令行编辑?•这种shell是否支持命令行历史记录?•什么是它的重要的开机启动文件或者配置文件?•各个shell的重要环境变量有哪些?•可以使用什么样的命令行提示符?•它支持什么样的编程框架?1.2 系统中有几种Shell•ash袖珍的sh兼容的shell–由Kenneth Almquist编写的ash shell是Linux操作系统上尺寸最小的shell之一。
这个shell有24个不同的内建命令和10个不同的命令行参数。
•bash Bourne Again Shell(与ksh和sh兼容)–bash就是由Brian Fox和Chet Ramey编写的Bourne Again Shell,它是Linux操作系统上最流行的shell之一。
•csh对tcsh的一个符号链接•ksh pdksh,公共域Korn(与ksh兼容)shell–pdksh shell在Linux操作系统中叫做ksh。
Linux下使用popen()执行shell命令
Linux下使⽤popen()执⾏shell命令简单说⼀下popen()函数,可以⽤linux命令来简化⼀些操作,例如grep进程名,判断进程是否存在。
函数定义#include <stdio.h>FILE * popen(const char *command , const char *type );int pclose(FILE *stream);函数说明 popen()函数通过创建⼀个管道,调⽤fork()产⽣⼀个⼦进程,执⾏⼀个shell以运⾏命令来开启⼀个进程。
这个管道必须由pclose()函数关闭,⽽不是fclose()函数。
pclose()函数关闭标准I/O流,等待命令执⾏结束,然后返回shell的终⽌状态。
如果shell不能被执⾏,则pclose()返回的终⽌状态与shell已执⾏exit⼀样。
type参数只能是读或者写中的⼀种,得到的返回值(标准I/O流)也具有和type相应的只读或只写类型。
如果type是"r"则⽂件指针连接到command的标准输出;如果type是"w"则⽂件指针连接到command的标准输⼊。
command参数是⼀个指向以NULL结束的shell命令字符串的指针。
这⾏命令将被传到bin/sh并使⽤-c标志,shell将执⾏这个命令。
popen()的返回值是个标准I/O流,必须由pclose来终⽌。
前⾯提到这个流是单向的(只能⽤于读或写)。
向这个流写内容相当于写⼊该命令的标准输⼊,命令的标准输出和调⽤popen()的进程相同;与之相反的,从流中读数据相当于读取命令的标准输出,命令的标准输⼊和调⽤popen()的进程相同。
返回值 如果调⽤fork()或pipe()失败,或者不能分配内存将返回NULL,否则返回标准I/O流。
popen()没有为内存分配失败设置errno值。
如果调⽤fork()或pipe()时出现错误,errno被设为相应的错误类型。
linux shell详解
linux shell详解Linux Shell 是一种运行在 Linux 操作系统上的命令行解释器,它提供了一种与系统进行交互的方式。
本文将详细介绍Linux Shell 的相关知识,包括 Shell 的基本概念、常用命令以及一些实用技巧。
## 一、Shell 的基本概念Shell 是用户与操作系统内核之间的接口,它接收用户输入的命令,并将其转发给内核执行。
在Linux 中,常见的Shell 有Bash (Bourne Again Shell)、Csh(C Shell)等。
Bash 是最常用的Shell,也是默认的 Shell。
Shell 的主要功能包括命令解析与执行、环境控制、脚本编程等。
用户可以通过Shell 提供的命令来执行文件操作、进程管理、权限控制等操作。
## 二、常用 Shell 命令1. 目录操作命令:- `ls`:列出当前目录下的文件和子目录。
- `cd`:切换当前工作目录。
- `pwd`:显示当前工作目录的路径。
2. 文件操作命令:- `cp`:复制文件或目录。
- `mv`:移动文件或目录。
- `rm`:删除文件或目录。
- `cat`:查看文件内容。
3. 进程管理命令:- `ps`:显示当前正在运行的进程。
- `top`:实时显示进程状态。
- `kill`:终止指定进程。
4. 网络命令:- `ping`:测试与指定主机的连通性。
- `ifconfig`:查看和配置网络接口信息。
- `ssh`:远程登录到其他主机。
5. 权限管理命令:- `chmod`:修改文件或目录的权限。
- `chown`:修改文件或目录的所有者。
- `chgrp`:修改文件或目录的所属组。
## 三、Shell 脚本编程Shell 脚本是一种可以用来编写一系列命令的脚本文件,它可以实现自动化任务的目的。
Shell 脚本通常以 `.sh` 作为文件后缀名。
以下是一个简单的Shell 脚本示例,用于统计指定目录下文件的数量:```shell#!/bin/bashdir_path="/path/to/directory"file_count=0# 遍历目录下的文件for file in $(ls $dir_path)doif [ -f $dir_path/$file ]; then((file_count++))fidoneecho "文件数量:$file_count"```以上脚本中,使用了 `for` 循环遍历目录下的文件,并通过判断是否是普通文件来统计文件数量。
简述linux下的shell编程的步骤方法。
简述linux下的shell编程的步骤方法Linux下的shell编程是一种编写程序的技术,它能够帮助您在Linux上完成许多任务。
本文将详细介绍shell编程的步骤和方法。
第一步,安装Linux系统。
Linux是一种开源操作系统,它可以从各种源获取,包括网络上的源、CD-ROM等。
安装完成后,你可以通过终端登陆系统,然后做一些基本的设置,例如设置Shell环境变量、设置系统时间等。
第二步,了解Shell编程语言。
Shell编程是一种计算机语言,它用于编写用于Linux系统上执行任务的脚本。
它主要基于Bash、Korn和C Shell等脚本语言来实现。
您可以通过学习它们来了解Linux系统上的shell编程,也可以通过学习书籍或在线教程来加深了解。
第三步,编写shell脚本。
在安装完成并了解了shell编程语言后,你可以开始使用shell编辑器(如vi、emacs等)来编写shell脚本。
shell脚本是一种可以让您以命令行方式完成特定任务的程序。
它可以用来执行多种操作,如文件管理、网络管理、系统管理等。
第四步,测试shell脚本。
在编写完shell脚本后,你应该将其存储到指定的文件中,并使用chmod命令赋予脚本可执行权限。
然后,你可以使用shell编辑器测试脚本,以确保脚本能够正常运行。
第五步,发布shell脚本。
一旦脚本测试通过,你就可以将其发布到Linux系统上,以供他人使用。
以上就是Linux下的shell编程的步骤和方法。
在Linux系统上,shell编程可以帮助您更轻松地完成各种任务,同时它也是一种开发程序的能力,可以帮助您更好地掌握Linux 系统。
通过学习和实践,您可以更好地掌握Linux下的shell编程技术,并成为一名优秀的开发人员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 Shell大作业说明书 题 目 LINUX Shell编程 学生姓名 学 号 系 别 年 级 专 业 指导教师 完成日期 2010年6月25日 1
一、需求分析 1.任务目标 Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。对用户的管理是操作系统的重点。LINUX课程设计要用shell编程实现,将理论学习付诸实践。设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。
2.系统要求 程序要包括四个文件,即menu,add,delete,passwd四个文件。passwd文件是用来保存用户信息;menu文件是主菜单,要求运行的时候能显示一个菜单供用户选择;add文件是用来增加信息;delete文件是用来删除信息。在主Shell脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。对于任务6和7,需要编写单独的Shell脚本文件(必须分别命名为add和delete)并且在主脚本menu文件中调用这些脚本文件。在主目录下建立一个以 07wl-0x-xx(x为班、座号)命名的目录,并且在作业中使用它作为工作目录。
3.系统功能 在主Shell脚本文件里(即menu 文件)要有一个多操作选项的菜单以便用户从中选择。在不同任务的中,这些操作能自动实现以下功能: 1、 在屏幕上显示当前所有用户的记录 2、 在屏幕上显示当前所有用户(经过格式化和排序的)的记录 3、 只在屏幕上显示用户名和用户ID 4、 只在屏幕上显示(经过格式化和排序的)用户名和用户ID 5、 查询并显示特定用户的记录 6、 往passwd文件里增加新的用户记录 7、 从passwd文件里删除某个用户记录 其中: menu文件中的程序完成1,2,3,4,5功能;另外写一个add脚本文件和delete脚本文件分别实现选项6和7.当用户做了选择且所选的操作完成之后,可以再次显示主菜单以供用户做下一步选择。用while循环和case条件语句配合来完成此操作。
二、总体设计
1.功能图 2
2.流程图 2.2.1主菜单
显示当前所有用户的记录 显示当前所有用户经格式化后的记录显示用户名和用户ID 显示格式化后用户名和用户ID 查找指定用户信息 添加用户信息 删除用户信息
用户信息主菜单
主菜单 你的选择 功能实现 回车退出 3
2.2.2 add模块 2.2.3 delete模块 主菜单
是否继续删除 进入delete界面 输入ID是否存在 是否删除 进入主菜单 N
Y
N Y
Y 4
三、详细设计 1.MENU主菜单 主菜单
在menu脚本文件里将创建如下菜单,菜单里包含供用户选择的一些操作。
无效输入 当用户做了选择且所选的操作完成之后,应再次显示主菜单以供用户做下一步选择。在以上等待用户做出选择的菜单中,如果用户偶尔输入了一个代码而不是1、2、3、4、5、6、7或Q,就有信息提示“无效的代码,请按回车键继续”。等用户按了回车键之后,再次显示主菜单供用户做其他选择。如图:
无输入 在以上等待用户做出选择的菜单中,如果用户简单地按了回车键,就会出现信息“无效的代码"。等用户按了回车键之后,再次显示主菜单供用户做其他选择。 5
当用户选择了1时——打印当前所有用户记录 当用户选择2时——打印当前经过格式化的用户记录后 当用户选择3时,——打印用户名和用户ID 当用户选择4时,——打印(格式化的)用户名和用户ID 当用户选择5时,——查找特定的记录 如果输入的关键字不在记录里 6
如果用户简单地按回车键而不是输入关键字 2.ADD文件 当用户在主菜单里选择6时你的add脚本文件就要被调用
输入用户名 用户输入一个无效的用户名
用户只按回车没有输入 输入密码 输入密码时不显示
要求密码长度至少达到6位以上 确认密码如果与密码不符应该让用户重新输入 7
用户ID 如果用户只是简单的按回车键
如果用户输入的是一个无效的ID或者是不符合格式的ID 组ID 对组ID的要求类似与用户ID,一个有效的组ID(数字、一般非超级用户的ID大等于500)
登录shell 一个有效的shell必须只能是bash、sh、kash、csh中的一种
如果用户只按回车没有输入的话则显示信息:“没有输入!”,并提示用户再次输入shell名 保存记录 8
3.DELETE文件 当用户在主菜单中选择7时,你的delete脚本文件必须被调用
用户输入一个无效的用户ID 用户简单的按回车键而没有任何输入 继续删除
四、附录(程序代码): 1、menu主脚本文件代码 #! /bin/sh - #声明全局变量 dataSource='passwd'; homePath='.'; AddUsers=". Add.sh"; DeleteUsers=". Delete.sh";
CheckDataSourceFileExist() { if [ -f $dataSource ] then #文件存在 9
return 0; else #文件不存在 clear; echo -n "警告 【$dataSource】 不存在!请确认!"; read ; return 1; fi }
choice="F"; while [ $choice != "Q" -a $choice != "q" ] do CheckDataSourceFileExist; if [ $? -ne 1 ] then clear; echo " 用户信息管理主菜单"; echo "==========================================================="; echo " 1.显示当前所有记录"; echo " 2.格式化显示当前所有记录"; echo " 3.显示用户名和用户ID"; echo " 4.格式化显示用户名和ID"; echo " 5.查询特定用户信息"; echo " 6.添加新用户"; echo " 7.删除用户"; echo " Q.退出"; echo -n "你的选择:"; read choice;
#作用是清除由于read到string.Empty的时候引发的bash参数过多的错误。 if [ -z $choice ] then choice="empty"; fi
clear; if [ $choice = "empty" ]; then echo "选项尚未选择!"; else case $choice in 10
1) CheckDataSourceFileExist; if [ $? -ne 1 ] then echo "当前的所有的用户信息如下所示:"; echo "用户名 密码 ID GID 说明 工作目录 登录Shell" cat $dataSource | tr ":" " " | more; fi;; 2) CheckDataSourceFileExist; if [ $? -ne 1 ] then echo "当前的所有的用户信息如下所示:"; echo -e "用户名\t密码\tID\tGID\t说明\t工作目录\t登录Shell" sort -k 1 $dataSource | awk -F ":" '{print $1 "\t" $2 "\t" $3 "\t" $4 "\t" $5 "\t" $6 "\t" $7 "\t"}' | more; fi;; 3) CheckDataSourceFileExist; if [ $? -ne 1 ] then echo "当前的所有的用户的用户名和用户ID如下所示:"; echo -e "用户名,ID"; awk -F ":" '{print $1 "," $3}' $dataSource | more; fi;; 4) CheckDataSourceFileExist; if [ $? -ne 1 ] then echo "当前的所有的用户的用户名和用户ID如下所示:"; echo -e "用户名 \t ID"; awk -F ":" '{print $1 "\t " $3}' $dataSource | more; fi;; 5) CheckDataSourceFileExist; if [ $? -ne 1 ] then keyWords=""; while [ -z $keyWords ] do echo -n "输入搜索关键词:"; read keyWords;
if [ -z $keyWords ] then echo "搜索关键词不能为空,请重新输入!";