shell第二天练习

news2024/12/28 1:58:49

题目

1、编写一个 Shell脚本,程序执行时从键盘读入一个目录名,如果用户输入的目录不存在,则提示file does not exist;如果用户输入的不是目录则提示用户必须输入目录名;如果用户输入的是目录则显示这个目录下所有文件的信息。
2、写一个脚本,完成以下要求:让用户输入用户名,如果其UID为0,就显示此为管理员;否则,就显示其为普通用户。
3、写一个脚本,给定一个用户,判断其UID与GID号码是否一样,如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
4、写一个脚本,给定一个文件,比如/etc/inittab,判断这个文件中是否有空白行;如果有,则显示其空白行数;否则,显示没有空白。

1、编写一个 Shell脚本,程序执行时从键盘读入一个目录名,如果用户输入的目录不存在,则提示file does not exist;如果用户输入的不是目录则提示用户必须输入目录名;如果用户输入的是目录则显示这个目录下所有文件的信息。

1.编写脚本

[root@localhost shell]# vim ll_dir.sh

#!/bin/bash
read -p "please input a directory to show:" dir
[ ! -e "$dir" ] && echo "directory dose not exist." && exit 1
[ ! -d "$dir" ] && echo "you must enter a directory name." && exit 2
[ -d "$dir" ] && ls -l $dir

2.设置可执行权限

[root@localhost shell]# chmod a+rx ll_dir.sh

3.运行测试
在这里插入图片描述

2、写一个脚本,完成以下要求:让用户输入用户名,如果其UID为0,就显示此为管理员;否则,就显示其为普通用户。

1.编写脚本

[root@localhost shell]# vim is_admin.sh

#!/bin/bash  
uid="`id -u $1`"
[ "$uid" -eq 0 ] && echo "user $1 is administrator." && exit 0
[[ "$uid" != 0 ]] && echo "user $1 is regular users."

2.设置可执行权限

[root@localhost shell]# chmod a+rx is_admin.sh

3.运行测试

[root@localhost shell]# ./is_admin.sh root
user root is administrator.
[root@localhost shell]# ./is_admin.sh rhel
user rhel is regular users.

3、写一个脚本,给定一个用户,判断其UID与GID号码是否一样,如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。

1.编写脚本

[root@localhost shell]# vim guy.sh

#!/bin/bash
  
uid=`id -u $1`
gid=`id -g $1`
[ "$uid" -eq "$gid" ] && echo "user $1 is good guy." && exit 0
echo "user $1 is bad guy."

2.设置可执行权限

[root@localhost shell]# chmod a+rx guy.sh 

3.运行测试

[root@localhost shell]# id test
uid=1235(test) gid=2000(test)=2000(test)
[root@localhost shell]# ./guy.sh test
user test is bad guy.
[root@localhost shell]# id rhel
uid=1001(rhel) gid=1001(rhel)=1001(rhel)
[root@localhost shell]# ./guy.sh rhel
user rhel is good guy.

4、写一个脚本,给定一个文件,比如/etc/inittab,判断这个文件中是否有空白行;如果有,则显示其空白行数;否则,显示没有空白。

1.编写脚本

[root@localhost shell]# vim blankLinesNum.sh

#!/bin/bash
  
read -p "please input a file:" file
[ ! -e "$file" ] && echo "$file is not exist." && exit 1
[ ! -f "$file" ] && echo "the input must be a file name." && exit 2
num=`grep ^$ $file | wc -l`
[[ $num = 0 ]] && echo "this file has no blank lines." && exit
echo "this file has $num blank lines."

grep ^$ 过滤出文件中的空白行
wc -l 显示空白行行数

2.设置可执行权限

[root@localhost shell]# chmod a+rx blankLinesNum.sh

3.运行测试

[root@localhost shell]# ./blankLinesNum.sh
please input a file:testtxt.txt
this file has 2 blank lines.
[root@localhost shell]# cat testtxt.txt
input

line2

hello

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django笔记《模型和数据库一》

文章目录1 前言2 创建一个demo项目2.1 修改配置文件3 模型3.1 主键3.2 django 内置字段类型3.3 自定义字段类型3.4 django字段选项3.5 字段备注名3.5 META3.6 关联关系3.6.1 多对一关系3.6.2 多对多关系3.6.3 一对一关系3.7 字段命名限制3.8 模型属性:Model.objects…

基于springboot+Vue前后端分离的招聘管理系统(程序+数据库+文档)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读

1. 摘要 估计RGB图片的深度是一个长期存在的病态问题,计算机视觉、图形学、机器学习社区已经探索了数十年。立体匹配是最广泛见诸文献的技术之一,因为它与人类的双目系统有强关联。传统上,利用多张图片的人工特征匹配来处理基于立体的深度估…

nginx 实现图片防盗链功能

在搜索浏览网页的时候,发现一篇文章是从我的个人网站转载的,但是没有注明出处,文章中的图片也没有本地化处理,还是从我的服务器请求,这就无形中增加了我的服务器的开销,于是有了设置防盗链功能这一想法。 …

Kafka 核心源码解读【五】--延迟操作模块

文章目录1 TimingWheel:探究Kafka定时器背后的高效时间轮算法1.1 时间轮简介1.2 源码层级关系1.3 时间轮各个类源码定义1.3.1 TimerTask 类1.3.2 TimerTaskEntry 类1.3.3 TimerTaskList 类1.3.4 TimingWheel 类1.4 总结2 DelayedOperation:Broker是怎么延…

【Vue】九、vue-element-admin

后端程序员的vue学习之路一、介绍二、功能特性三、前置准备四、前置知识五、项目结构说明:六、安装运行一、介绍 vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现,它使用了最新的前端技术栈,内置了动态路…

深入理解计算机系统_程序的链接过程

编辑好的程序,依次经过预处理(注释,宏替换,头文件包含,生成.s文件)、编译(生成汇编文件.s )、汇编(生成静态可重定位目标文件,文件名是.o)、链接后最终得到可执行目标文件,这个笔记记录一下,链接…

信号处理系列之死区滤波器(DeadZone)

信号处理专栏相关限幅滤波的文章,可以参看下面的链接,这里不再赘述: 博途PLC信号处理系列之限幅消抖滤波_RXXW_Dor的博客-CSDN博客关于限幅滤波可以参看下面这篇文章PLC信号处理之限幅滤波(西门子三菱FB)_RXXW_Dor的博客-CSDN博客限幅滤波是一种消除随机干扰的有效方法,比…

WordPress元宇宙和VR(虚拟现实)最佳插件汇总

近年来,虚拟现实(VR )和元宇宙(Metaverse )变得越来越流行。它使用户能够在舒适的家中享受身临其境的体验。此外,将此功能添加到您的网站可以帮助您的内容更具交互性,这可能会带来更多转化。幸运…

RHCE——ansible安装配置(2)

安装并且配置ansible: 1)安装和配置ansible以及ansible控制节点server.example.com如下: 2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示: 2.1)node1 是dev主机组的成员 2.2)node2是test主机组的成员 2.3)node1和node…

c++动态内存管理

1.回顾c语言中的动态内存管理 在c语言中,我们想要动态开辟一段空间,需要使用malloc,calloc,realloc几个函数 void* malloc (size_t size); //在堆上申请size个字节的空间void* calloc (size_t num, size_t size); //第一个参数是…

压缩空气储能研究(Matlab代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

CMMI之技术预研

技术预研(Technical Pre-Research, TPR)是指在立项之后到开发工作完成之前的时间内,对项目将采用的关键技术提前学习和研究,以便尽可能早地发现并解决开发过程中将会遇到的技术障碍。 技术预研过程域是SPP模型的重要组成部分。本…

Android实现轮播控件Banner

背景 最近做需求要实现一个轮播图,最后通过HandlerViewPager实现了需求,所以把实现的过程总结一下,方便以后学习参考,以下是轮播图的效果: 实现思路 定时轮播 利用HandlerViewPager,Handler发送定时消息切…

初探Scala

目录 Scala介绍 Scala 环境搭建 IDEA新建Maven工程 创建执行输出Hello Scala Scala中main方法语法的详细解读 class 和 object 说明 Scala介绍 一般来说,学 Scala 的人,都会 Java,而 Scala 是基于 Java 的,因此我们需要将 S…

CSS基础总结(五)定位

文章目录 1.为什么需要定位 2.定位的组成 2.1公式 2.2定位模式 2.2.1静态定位static 2.2.2相对定位relative 2.2.3绝对定位absolute 2.2.4固定定位fixed 2.2.5粘性定位sticky 总结 2.3边偏移 3.定位叠放次序 4.定位拓展 4.1子绝父相布局法 4.2固定于版心右侧位置方…

read and write

read and write The read and write methods both perform a similar task, that is, copying data from and to application code. Therefore, their prototypes are pretty similar, and its worth introducing them at the same time: read 和 write 方法都执行类似的任务&…

Java开发 - 常用算法深度讲解,让你再也不会忘记

目录 前言 冒泡排序 原理 选择排序 原理 插入排序 原理 二分查找排序 原理 结语 前言 经常会有一些算法,我们说常用不常用,说不用也偶尔会用,当时看记住了,过几天提起来又忘记了,这是为什么呢?以…

Spring Security:PasswordEncoder密码加密匹配操作

目录 PasswordEncoder SpringBoot:注入BSryptPasswordEncoder实例 BSryptPasswordEncoder详解 父接口PasswordEncoder BSryptPasswordEncoder及其使用 成员方法 SecurityUtils安全服务工具类 测试代码 PasswordEncoder PasswordEncoder是Spring Security框架…

51单片机学习笔记_4 IO扩展:LED 点阵

IO 扩展(串转并)-74HC595 前面接的一些输入输出设备都是直接连接的单片机 IO 口,单片机仅有的 IO 口非常有限。而使用 IO 扩展可以大量增加可使用的端口。比如后面要使用的 LED 点阵,8*8个格子,使用扩展 IO 输入就更为合适。如果多级联一个&…