shell第一天练习

news2024/11/15 9:50:52

题目:

1、在当前主机编写脚本文件history_max.sh显示主机中执行频率最高的前5个命令。
2、判断主机是否存在rhel用户,如果存在则设置密码为redhat,如果不存在则创建用户并设置密码。
3、通过设置变量HISTTIMEFORMAT,使得当执行history命令时输出格式如下:[2022-12-25 16:53:42][root]history

1、在当前主机编写脚本文件history_max.sh显示主机中执行频率最高的前5个命令。

思路:使用history命令获取记录历史命令,再通过tr、cut、sort、uniq等命令进行替换、切割、排序、统计操作,进而得到结果并输出。
操作
1、查看history输出内容
在这里插入图片描述
2、根据history输出内容特征,用vim编写history_max.sh脚本

[root@localhost shell]# vim history_max.sh 
#!/bin/bash
echo "  count cmd"
history | tr -s ' ' | cut -d' ' -f3- | sort | uniq -c | sort -k1 -nr | head -5

注释:
tr -s ’ ’ 表示将history输出的重复空格删除;
cut -d ’ ’ -f3- 表示切割出以空格为分隔符的第3列及以后的所有列;
sort 表示将切割出的内容排序;
uniq -c 表示删除连续的重复行并在每列旁边显示该行连续重复出现的次数;
sort -k1 -nr 表示指定第一列为排序依据并以数值型倒序排序。

3、设置history_max.sh脚本为可执行文件

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

4、测试运行脚本

[root@localhost shell]# source history_max.sh
  count cmd
      4 ll
      4 cd /etc/yum.repos.d/
      2 cat CentOS-Base.repo
      1 yun install python36
      1 yum repolist [all] 

2、判断主机是否存在rhel用户,如果存在则设置密码为redhat,如果不存在则创建用户并设置密码。

1、使用vim编辑useradd_rhel.sh脚本

[root@localhost shell]# vim useradd_rhel.sh 
#!/bin/bash
if grep rhel /etc/passwd &> /dev/null
then
  echo "user rhel already exists."
else
  useradd rhel -p redhat
  echo "add user rhel successfully."
fi

2、设置useradd_rhel.sh脚本为可执行文件

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

3、运行测试脚本
在这里插入图片描述

3、通过设置变量HISTTIMEFORMAT,使得当执行history命令时输出格式如下

[2022-12-25 16:53:42][root]history

1、打开 /etc/profile 或 /etc/bashrc 文件,设置环境变量HISTTIMEFORMAT

[root@localhost ~]# vim /etc/profile
export HISTTIMEFORMAT="[%F %T][`whoami`]"

2、重新读取文件

[root@localhost ~]# source /etc/profile

3、验证生效

[root@localhost ~]# history | more

在这里插入图片描述

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

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

相关文章

16. BootStrap

文章目录一、Bootstrap1、概念2、快速入门二、响应式布局三、CSS样式和JS插件1、全局CSS样式2、组件1. 导航条2. 分页条3、插件1. 轮播图四、案例1、案例描述2、案例分析3、实现一、Bootstrap 1、概念 * 概念: 一个前端开发的框架,Bootstrap&#xff0…

Linux网络配置(如何设置静态IP?如何设置查看主机名?)

文章目录Linux网络配置一、网络地址配置1.1. 查看网络地址1.2. 测试两个地址是否连接1.3. Linux系统的网络配置二、主机名以及hosts映射2.1. 查看和设置主机名2.2. hosts映射2.3. DNSLinux网络配置 一、网络地址配置 如果在一台Windows电脑上安装了Linux虚拟机,那…

颤抖开篇,从php角度谈谈IO模型(BIO)

颤抖开篇,从php角度谈谈IO模型(BIO) IO 是什么? 在计算机系统中I/O就是输入(input)和输出(Output)的意思。针对不同的操作对象,可以划分为磁盘I/O模型,网络I/O模型&am…

开发神器VSCode配置C/C++编译环境

hi,小伙伴们大家好,今天给大家介绍一款程序员常用的开发神器VSCode,想必大家肯定有所了解,也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时,真正的被它惊艳到了,可以说是一见钟情。从此就爱…

13.6-14.8读书笔记

13.6 对象移动 13.6.1 右值引用 概念: 为了支持移动操作,新标准引入了的一种新的引用类型.所谓右值引用就是必须绑定到右值的引用. 通过&&来获得右值引用 int i 42;int &r i;int &&rr i; // 错误,不能将一个右值引用绑定到一个左值上int &r3 …

【python基础_05】面向对象

文章目录1. 类和对象1.1 使用对象组织数据的模版1.2 成员变量和成员方法1.3 实现代码2. 内置方法(魔术方法)2.1 构造方法:__init__()1. 类和对象 1.1 使用对象组织数据的模版 1.2 成员变量和成员方法 1.3 实现代码 1…

jupyter notebook无法启动内核

jupyter notebook无法启动内核问题概述方法一使用Window PowerShell方法二更改文件路径重新启动内核参考问题概述 遇到的问题是在使用jupyter的时候无法正常运行,所以在这里尝试一些办法,在这里进行记录,希望能够帮助到大家 方法一 使用Window PowerShell 首先第一个方法就…

Java IO流 - 释放资源的方式

资源释放的方式 书接上文, 在上一篇文章我们做过一个文件拷贝的练习, 但是在联系中是有释放资源隐患的的, 例如在下面代码中, 在文件释放之前有许多行的逻辑代码; 如果这许多行的逻辑代码有报错, 导致程序不运行, 那么资源就得不到释放 public static void main(String[] args)…

Crack:ActiveReportsJS 3.2.2 EN:ActiveReportsJS

ActiveReportsJS - 高级 JavaScript 报告解决方案 ActiveReportsJS 是一种用于在前端应用程序中可视化数据的报告解决方案。Ω578867473自定义报告布局并将我们的报告设计器和查看器组件集成到 Web 应用程序中,以便在任何平台上预览、导出或打印报告。 使用我们的跨…

WPF+ASP.NET SignalR实现动态折线图

在实际业务中,当后台数据发生变化,客户端能够实时的收到通知,而不是由用户主动的进行页面刷新才能查看,这将是一个非常人性化的设计。有没有那么一种场景,后台数据明明已经发生变化了,前台却因为没有及时刷…

ElementUI——案例2用户管理(基于SpringBoot实现增删改)

1.ElementUI整合SpringBoot前后端分离实现用户增删改查 效果展示 2.前端核心代码 项目目录 main.js引入 import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import router from ./router import axios from axiosVue.prototype.$http ax…

SQL 存储过程

文章目录存储过程简介存储过程的创建及调用存储过程的删除 如何删除存储过程存储过程的优缺点现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同 时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入一条老师数据&a…

高级IO-多路转接

高级IO 以前的都是拷贝接口。write什么的就是将字符串拷贝到发送缓冲区中。 应用层等待接收缓冲区填写数据的过程算是IO吗?算 IO等待拷贝数据; 真正的IO的过程就是拷贝的过程。比如等待鱼上钩的时候也算是钓鱼(adj),当把鱼拿上来的时候也…

【Spring篇】代理模式

🍓个人主页:个人主页 🍒系列专栏:SSM框架 目录 一、场景模拟 二、提出问题 三、代理模式 1.静态代理 2.动态代理 一、场景模拟 ①声明接口 声明计算器接口Calculator,包含加减乘除的抽象方法 public interface…

hadoop基础搭建(hadoop+hive+hbase+zk)(一)

文章目录一、基础环境&插件安装(root)二、创建启动脚本,后续使用三、安装JDK(root)四、安装Hadoop五、安装 rsync(root)六、网络配置(4台服务器,root)七、…

使用html2canvas,将页面转换成图片的采坑记录(Web/Taro h5)

使用html2canvas将页面转换成图片的采坑记录 "html2canvas": "^1.4.1","tarojs/taro": "3.4.0-beta.0"问题: 1. 生成的图片很模糊 2. 生成的图片是空白 3. 生成的图片不完整 截图前是这样 截图后这样 截图后的图片图片缺省了一部分…

【消息中间件】1小时快速上手RabbitMQ

前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:深入、全面、系统的介绍消息中间件 🌰 文章简介:本文将介绍RabbitMQ,一小时快速上…

Good Bye 2022: 2023 is NEAR D. Koxia and Game

原题链接:Problem - D - Codeforces 题面: 大概意思就是给你一个数组a和数组b,你自己设计一个数组c,Koxia可以从a[i]、b[i]和c[i]中选一个,而Mahiru只能从另外两个里选一个,问你有多少个数组c一定能使Mah…

给GitHub装扮个性化首页

我的主页 如何配置 需要创建一个仓库,仓库名要跟GitHub的用户名一样,我的已经创建过了 喜欢我的主页可以直接fork然后在自己的仓库修改,如果想自己装扮直接看下一步 地址:https://github.com/linweiqian 开始装扮 下面展示仓库状态统计的设…

工业控制系统安全控制应用缩略语汇总

声明 本文是学习GB-T 32919-2016 信息安全技术 工业控制系统安全控制应用指南. 下载地址 http://github5.com/view/585而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业控制系统安全控制应用缩略语 ICS 工业控制系统(Industrial Contro…