Shell编程练习:掌握命令行的魔法


1、编写一个 shell 脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。

#!/bin/bash# 检查是否提供了至少两个参数
if [ "$#" -lt 2 ]; thenecho "使用方法: $0 目标目录 文件..."exit 1
fi# 第一个位置参数是目标目录
DEST_DIR="$1"# 移除第一个参数,剩下的都是文件
shift# 创建目标目录,如果它不存在的话
mkdir -p "$DEST_DIR"# 循环通过所有剩余的位置参数(现在都是文件)
while [ "$#" -gt 0 ]; do# 复制文件到目标目录cp "$1" "$DEST_DIR"# 移动到下一个位置参数(文件)shift
doneecho "文件已经被复制到 $DEST_DIR."

2、编写一个 shell 脚本,显示当天日期,查找给定的某用户是否在系统中工作。如果在系统中,就发一个问候给他。

#!/bin/bash
username=$1
current_date=$(date)
# 显示当前日期
echo "今天的日期是:$current_date"# 检查用户是否登录系统
if who | grep -q "$username "; thenecho "Hi, $username! 祝你有美好的一天!"
elseecho "$username 用户当前不在系统中。"
fi

3、打印给定目录下的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名。

#!/bin/bash
if [ $# -lt 2 ]; thenecho "Usage: $0 directory file1 file2 ..."exit 1
fidirectory=$1
shiftfor file in "$@"; docat "$directory/$file"
done

4、利用for循环将当前目录下的.c文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。

#!/bin/bash# 检查是否提供了至少一个参数(目标目录)
if [ "$#" -lt 1 ]; thenecho "使用方法: $0 目标目录"exit 1
fi# 第一个位置参数是目标目录
DEST_DIR="$1"# 创建目标目录,如果它不存在的话
mkdir -p "$DEST_DIR"# 移动当前目录下的所有 .c 文件到目标目录
for FILE in *.c; do# 检查文件是否存在if [ -f "$FILE" ]; thenmv "$FILE" "$DEST_DIR"fi
done# 在目标目录中按文件大小排序并列出文件
echo "移动后的文件按大小排序:"
ls -lS "$DEST_DIR" | grep '\.c$'

5、利用数组形式存放10个城市的名字,然后利用for循环把它们打印出来。

#!/bin/bashcities=("Beijing" "Shanghai" "Guangzhou" "Shenzhen" "Chengdu" "Hangzhou" "Wuhan" "Xi'an" "Nanjing" "Tianjin")for city in "${cities[@]}"; doecho "$city"
done

6、编写一个shell脚本,求斐波那契数列的前10项及总和。

#!/bin/bashfib=(0 1)for ((i=2; i<10; i++)); dofib[i]=$((fib[i-1] + fib[i-2]))
donesum=0
for num in "${fib[@]}"; dosum=$((sum + num))
doneecho "Fibonacci series: ${fib[@]}"
echo "Sum: $sum"

7、显示前面所执行的40个命令的清单,重新执行倒数第5条命令。编辑其中一条命令,然后执行。

history 40

要重新执行倒数第5条命令,您可以使用!符号加上命令的历史编号。例如,如果倒数第5条命令的编号是562,您可以这样执行:

!562

如果您想编辑这条命令再执行,可以使用fc命令。这将打开您的默认文本编辑器(通常是vi或nano),让您编辑命令。编辑完成后保存并退出编辑器,命令将自动执行。这里是如何操作:

fc -l

上面的命令会列出最近执行的命令,找到您想要编辑的命令的编号,然后使用:

fc 562

这将打开编号为562的命令进行编辑。编辑完成后,保存并退出,命令将被执行。

8、定义一个别名命令,它等价的功能是:显示当前日期及工作目录,并列出有多少用户在系统上工作。

alias showinfo='echo $(date); echo $(pwd); echo "Users logged in:"; who | wc -l'

9、设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。例如:
自定义输入字符串
$ cuts 1114
this is a test of cuts program (输入)
test (显示结果)

Cut 从文本文件或文本流中提取文本列。

#!/bin/bash
n=$1
m=$2
read string
ex=$(echo "$string" | cut -c "$n"-"$m")
echo "$ex"

总结

1.文件复制脚本:这个脚本接受一个目标目录和多个文件作为参数,并将这些文件复制到指定的目录中。它首先检查参数数量,然后创建目标目录(如果不存在),最后复制文件。
2.用户问候脚本:这个脚本显示当前日期并检查特定用户是否登录系统。如果用户已登录,它会发送问候语。
3.文件打印脚本:此脚本接受一个目录和多个文件名作为参数,并打印出指定目录中的这些文件的内容。
4.文件移动和排序脚本:这个脚本将当前目录下的所有 .c 文件移动到指定的目录,并在目标目录中按文件大小排序。
5.城市名称打印脚本:此脚本使用数组存储城市名称,并使用循环将它们打印出来。
6.斐波那契数列脚本:这个脚本计算斐波那契数列的前10项及其总和,并将结果打印出来。
7.命令历史和编辑脚本:这个脚本显示最近执行的40个命令,并提供了重新执行和编辑命令的方法。
8.信息显示别名命令:这个别名命令显示当前日期、工作目录,并列出系统上的用户数量。
9.文本抽取脚本:cuts 程序从标准输入读取数据,并根据提供的参数范围抽取字符串中的特定部分。

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

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

相关文章

6.19作业

TCP服务器 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h>#define PORT 8888 #define IP "192.168.124.39&q…

VUE3实现个人网站模板源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1…

对比4090及4090D:国区“特供”与原版相比有何区别?

2023年12月28日 英伟达宣布正式发布GeForce RTX 4090D&#xff0c;对比于一年前上市的4090芯片&#xff0c;两者的区别与差异在哪&#xff1f;而在当前比较火热的大模型推理、AI绘画场景方面 两者各自的表现又如何呢&#xff1f; 规格与参数信息对比现在先来看看GeForce RT…

SCI绘图【1】-不同颜色表示密度和差异--密度图

参考资料&#xff1a;密度图&#xff08;Density Plot&#xff09; - 数据可视化图表 - 数字孪生百科 密度图是快速观察变量数值分布的有效方法之一。通常情况下&#xff0c;会根据两个变量将平面绘图区域分为非常多的子区域&#xff0c;之后以不同颜色表示落在该区域上样本的…

揭秘!家用空气净化器针对“毛絮、灰尘”的制胜秘诀是什么?

亲爱的朋友们&#xff01;作为一个家庭主妇&#xff0c;我想和大家聊聊我日常生活中那些让人头疼的飞尘和毛絮问题。 每天忙得团团转&#xff0c;累得腰酸背痛&#xff0c;但家里仍然飘着那些烦人的飞尘和毛絮。它们就像一群顽皮的小精灵&#xff0c;四处飞舞&#xff0c;怎么…

《2024攻防演练必修高危漏洞集合》

1 漏洞汇总数据 以下数据针对自2024年3月以来截止到目前在攻防演练过程红队利用率比较高的漏洞进行总结汇总&#xff0c;具体的数据如下所示&#xff1a; ●远程代码执行漏洞 漏洞数量&#xff1a;6个 涉及厂商&#xff1a;YzmCMS、畅捷通、pgAdmin、泛微、锐捷、奇安信、 ●…

如何通过自己编写Jmeter函数

在Jmeter的函数助手里&#xff0c;有很多内置的函数&#xff0c;比如Random、UUID、time等等。使用这些函数可以快速帮我们生成某些数据&#xff0c;进行一些逻辑处理。用起来非常的方便。 但是在实际接口测试过程中&#xff0c;有很多的需求&#xff0c;Jmeter内置的函数可能…

苹果不会等到明年才对 Siri 进行改进|TodayAI

据彭博社报道&#xff0c;今年苹果&#xff08;APPLE&#xff09;将推出一个更令人满意的 Siri。 当 iOS 18 今年秋季推出时&#xff0c;Siri 的功能不仅仅是让你的 iPhone 边缘显示彩虹光环。虽然苹果智能功能要到 2025 年才会向非测试版用户推出&#xff0c;但据报道&#x…

每天写java到期末考试(6.19)--1.百元买百鸡

好久没有写了&#xff0c;现在赶快先复习复习&#xff0c;哈哈&#xff0c;加油&#xff01; 收获&#xff1a;写了好久&#xff0c;才写好这一个问题&#xff0c;提示自己不要好高骛远&#xff0c;前期先踏踏实实写好每一个代码&#xff1b; 被困住原因 取余%与整除/区别 pa…

数据库引擎有哪些?

数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务&#xff0c;从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查…

Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局 核心语法&#xff1a; 水平布局容器&#xff1a; 水平布局容器的创建&#xff1a; GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); homogeneous&#xff1a;容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE ) spacing&#…

Qemu 模拟 Mini2440 扩展SDRAM 64M 到 128M,256M(三)

1. Mini2440 最大支持的SDRAM 是128M+128M MINI2440 板子的内存是由两片64M大小的SDRAM组成,所以实际内存有128M。分别连接到芯片的BANK6和BANK7。从这个图可以看出 Mini2440 最大支持的SDRAM 是128M+128M,我们能不能利用 QEMU 直接给你模拟干满到 256M呢?各位看官看我的操作…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具&#xff0c;极大地简化了 API 测试和调试的过程&#xff0c;提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数&#xff0c;以提高 API 测试和开发的便利性。 1、解析请求参数 首先&#xff0c;我们需要…

sql知识点

案例1: 需求&#xff1a;请你查找employees里最晚入职员工的所有信息&#xff0c;以上例子输出如下:emp_nobirth_datefirst_namelast_namegenderhire_date100011953-09-02GeorgiFacelloM1986-06-26100021964-06-02BezaleSimmelF1985-11-21100031959-12-03PartoBamfordM1986-08-…

微信小程序-点击事件、text标签赋值

点击事件 设置&#xff08;bindtap&#xff09;和监听 <button class"key" bindtap"keyClick" data-value"1">1</button>Page({keyClick: function (e) {const value e.currentTarget.dataset.value;}, })text标签赋值 在微信小…

Linux下调试代码——gdb的使用

1. 文件准备&#xff1a; 测试代码&#xff1a; Makefile文件&#xff1a; 执行结果&#xff1a; 此时&#xff0c;我们的结果是存在问题的&#xff0c;即最终结果少了100。现在我们用gdb来调试它。 我们发现我们还没有安装gdb&#xff0c;这里安装一下。 2. 环境准备&#…

Django测试平台搭建学习笔记1

一安装 pip离线安装requests2.32.0所需要的依赖&#xff1a; : charset-normalizer<4,>2 (3.0.0b1) : idna<4,>2.5 (3.7) : urllib3<3,>1.21.1 (2.2.0) : certifi>2017.4.17 (2024.6.2) pip离线安装pytest8.2.0所需要的依赖&#xff1a; : iniconfig (2…

棱镜七彩荣获CNNVD两项大奖,专业能力与贡献再获认可!

6月18日&#xff0c;国家信息安全漏洞库&#xff08;CNNVD&#xff09;2023年度工作总结暨优秀表彰大会在中国信息安全测评中心成功举办。棱镜七彩凭借在漏洞方面的突出贡献和出色表现&#xff0c;被授予“2023年度优秀技术支撑单位”与“2023年度最佳新秀奖”。 优秀技术支撑单…

人工智能无法修复自动化已经破坏的东西

人工智能无法修复自动化已经破坏的东西 没错&#xff0c;如今不断涌现出“我们日益恶化的反乌托邦的快照”之类的故事&#xff0c;但这篇来自行业杂志《美国银行家》(American Banker)的文章却脱颖而出。这篇文章揭示了企业人工智能的一个新的前沿用例:在呼叫中心的工作人员被…

2024请收好这一份全面--详细的AI产品经理从业指南

前言 入行人工智能领域这段时间以来&#xff0c;从零到一把AI推荐系统产品化搭建了起来&#xff0c;也与很多同行AI产品经理小伙伴建立了联系。AI产品经理工作内容各异&#xff0c;不同AI产品化生命周期中更是大为不同&#xff0c;但对想入行AI产品经理的小伙伴来讲&#xff0…