shell命令编写

 1.

  1 #!/bin/bash 2 3 directory_path="/txh"4 5 # 使用 find 命令查找指定路径下的文件,并使用 wc 命令统计行数(即文件个数)6 7 file_count=$(find "directory_path" -type f | wc -l)8 9 10 echo "在路径$directory_path下的文件个数是: $file_count"   

 解释一下最关键的 -type f

  • -type: 用于指定要查找的文件类型。
  • f: 表示普通文件。这包括文本文件、二进制文件等,但不包括目录、设备文件、符号链接等其他类型的文件。

find 是一个在Unix和类Unix系统中用于在目录树中查找文件和目录的强大命令。它能够根据各种条件搜索文件,并执行相应的操作。

find 命令的基本语法如下:

bash

find [起始目录] [匹配条件] [执行操作]

  • 按文件名搜索:

    find /path/to/search -name "filename"

2.

set

env

如何设置环境变量呢?

export 

4.

单引号(')

单引号用于创建字面量字符串,其中的内容被视为精确的文本。在单引号内部,特殊字符(比如变量、通配符和命令替换)通常不会被解释或扩展。例如:

echo 'Hello, $USER'

在这个例子中,$USER 不会被解释为当前用户,而是作为普通字符串输出。

双引号(")

双引号用于创建字符串,并允许解释其中的变量和特殊字符。在双引号内,变量会被替换为其值,而特殊字符会被扩展。例如

greeting="Hello, $USER";echo "$greeting" 

在这里,$USER 被解释为当前的用户名,并被替换成实际的用户名。

 在这里$USER会变成用户的名字,所以是root

反引号(`)

反引号用于执行命令替换,将命令的输出结果赋值给变量。例如:

current_date=`date` echo "今天是:$current_date"

在这个例子中,date 命令的输出被赋值给 current_date 变量。

需要注意的是,反引号在较新的Shell版本中逐渐被 $() 替代,功能相似但更易读且嵌套更方便:

5.

#!/bin/bashdirectory_path="/path/to/your/directory"# 获取目录中的所有文件
files=("$directory_path"/*)# 删除前10个文件
for ((i=0; i<10 && i<${#files[@]}; i++)); dorm "${files[$i]}"echo "已删除文件:${files[$i]}"
doneecho "成功删除 $i 个文件。"

6.

 2 #定义存储联系人的数组3 contacts=()4 5 #使用while循环添加联系人6 while true; do7   read -p "请输入联系人姓名(输入exit结束) : " name8 9   if [ "$name" == "exit" ]; then10      break11   fi12 13   read -p "请输入联系人电话: " phone14 15   #将联系人信息添加到数组中16   contact="姓名: $name,电话: $phone"17   contacts+=("$contact")18 19 done20 21 echo "通讯录: "22 for contact in "${contacts[@]}"; do23     echo "$contact"24 done               
  1. #!/bin/bash: 这是 shebang 行,指定了脚本使用的解释器。#!/bin/bash 表示脚本将由 Bash 解释器执行。

  2. contacts=(): 这行创建了一个名为 contacts 的空数组。这是 Bash 中定义数组的方式。

  3. while true; do ... done: 这是一个无限循环的开始。while true 会一直循环执行,因为条件始终为真。循环中的命令将一直执行,直到遇到 break 为止。

  4. read -p "请输入联系人姓名(输入exit结束添加): " name: read 命令用于从标准输入读取用户输入,并将其存储在变量中。-p 选项用于在用户输入前显示提示消息。在这里,用户输入的姓名将被存储在 $name 变量中。

  5. if [ "$name" == "exit" ]; then break; fi: 这是一个条件语句,使用 if 进行条件判断。[ "$name" == "exit" ] 检查变量 $name 是否等于 "exit"。如果是,就执行 break 命令退出循环。

  6. read -p "请输入联系人电话: " phone: 类似于前面的 read 命令,用于接收用户输入的电话号码,并将其存储在 $phone 变量中。

  7. contact="姓名: $name, 电话: $phone": 这行创建了一个字符串变量 contact,其中包含联系人姓名和电话信息。这里使用了变量替换,将 $name$phone 的值嵌入到字符串中。

  8. contacts+=("$contact"): 这是将字符串 $contact 添加到数组 contacts 的语法。+= 表示追加。

  9. echo "通讯录:": echo 命令用于打印文本到标准输出。在这里,它打印了通讯录的标题。

  10. for contact in "${contacts[@]}"; do echo "$contact"; done: 这是一个 for 循环,用于遍历数组 contacts 中的每个元素。${contacts[@]} 表示整个数组。循环中的命令 echo "$contact" 打印每个联系人的信息。

 7.

#!/bin/bash# 获取目标目录
target_directory="$1"# 遍历输入参数中的文件,并将其复制到目标目录
for file in "${@:2}"; do# 检查文件是否存在if [ -e "$file" ]; then# 复制文件到目标目录cp "$file" "$target_directory/"echo "已复制文件 '$file' 到目录 '$target_directory/'"elseecho "警告: 文件 '$file' 不存在,跳过该文件"fi
doneecho "复制完成"

./copy_files.sh /目标目录 文件1 文件2 文件3
 

8.

#!/bin/bash# 定义包含10个城市名称的数组
cities=("城市1" "城市2" "城市3" "城市4" "城市5" "城市6" "城市7" "城市8" "城市9" "城市10")# 遍历数组并打印每个城市名称
for city in "${cities[@]}"; doecho "$city"
done

 9.

该脚本动态构建一个包含从命令行参数的数量递减到 1 的数字序列的 echo 命令,并通过 eval 命令执行这个构建的 echo 命令,从而实现以逆序打印数字。

10.

#!/bin/bash# 接收用户输入的字符串
read -p "请输入字符串: " input_string# 接收用户输入的n和m
read -p "请输入要提取的起始位置n: " n
read -p "请输入要提取的结束位置m: " m# 使用cut命令提取子串
result=$(echo "$input_string" | cut -c $n-$m)# 显示提取的子串
echo "提取的子串为: $result"

cut的用法:

其中 OPTION 是一些选项,FILE 是输入文件的名称。如果没有指定文件,则 cut 从标准输入读取数据。

以下是一些常用的 cut 命令选项:

  • -c, --characters=LIST:指定要剪切的字符范围。例如,-c 1-5 表示剪切第1到第5个字符。

  • -f, --fields=LIST:指定要剪切的字段范围,字段以制表符或空格分隔。例如,-f 2,4 表示剪切第2和第4个字段。

  • -d, --delimiter=DELIM:指定字段分隔符,默认为制表符。

  • --complement:补集,表示不剪切指定的部分,而是保留其他部分。

  • --output-delimiter=STRING:指定输出时使用的分隔符。

实验题:

#!/bin/bash# Function to draw the progress bar
drawProgressBar() {local progress=$1local total=$2local bar_length=50local filled_length=$((progress * bar_length / total))local empty_length=$((bar_length - filled_length))# Create the progress bar stringlocal progress_bar=$(printf "[%s%s]" $(printf "#%.0s" $(seq 1 $filled_length)) $(printf " %.0s" $(seq 1 $empty_length)))# Print the progress barprintf "\r%s %d%%" "$progress_bar" $((progress * 100 / total))
}# Example usage
total_steps=100for ((i=1; i<=total_steps; i++)); do# Perform some task heresleep 0.1# Update the progress bardrawProgressBar $i $total_steps
done# Print a newline to separate the progress bar from the next command prompt
echo

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

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

相关文章

网工学习5 交换机端口相关配置

交换机的接口属性默认支待一般网络环境&#xff0c;一般情况下是不需要对其接口进行设置的。在某些情况下需 要对其端口属性进行配置时&#xff0c;配置的对象主要有接口隔离、速率、双工等信息。 5.1 接口隔离设置 > 配置接口 GE0/0/1 和 GE0/0/2 的接口隔离功能&#xf…

Leetcode1094. 拼车

Every day a Leetcode 题目来源&#xff1a;1094. 拼车 解法1&#xff1a;差分数组 对于本题&#xff0c;设 a[i] 表示车行驶到位置 i 时车上的人数。我们需要判断是否所有 a[i] 都不超过 capacity。 trips[i] 相当于把 a 中下标从 fromi 到 toi−1 的数都增加 numPassenge…

【ArcGIS Pro微课1000例】0045:深度学习--车牌模糊

借助ArcGIS Pro提供的车牌模糊训练模型,可以很方便实现车牌模糊。 文章目录 一、车牌模糊对比二、工具介绍三、案例实现一、车牌模糊对比 车牌模糊前: 车牌模糊后: 二、工具介绍 本功能使用的依然是ArcGIS Pro提供的深度学习工具中的使用深度学习分类像素(Classify Pixel…

JavaScript基础知识20——循环结构:退出循环

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 最近一段时间没学习JavaScript&#xff0c;今天看数字孪生的资料&#xff0c;发现很多低代码开发还是得必须熟悉JavaScript才行&#xff0c;为了以后方便搞数字孪生&#xff0c;有时间还是继续学习下JavaScript。 以下…

如何开启Windows Server 2016 远端桌面

使用GUI 设定 服务器管理器–> 本地服务器–> 远端桌面 启用远端桌面 远端–> 允许远端连线至此电脑 会提示防火墙设定跟电源设定 防火墙之前已经关闭了 完成

matlab 多目标粒子群优化算法MOPSO

1、内容简介 略 21-可以交流、咨询、答疑 多目标、粒子群 2、内容说明 多目标粒子群优化算法MOPSO 3、仿真分析 略 %% Problem Definition TestProblem3; % Set to 1, 2, or 3 switch TestProblem case 1 CostFunction(x) MyCost1(x); nVar5; …

数据库管理-第120期 初探Halo数据库(202301201)

数据库管理-第120期 初探Halo数据库&#xff08;202301201&#xff09; 12月份正好也是第120期&#xff0c;新的一篇文章&#xff0c;尝试一条新的路线。其实吧&#xff0c;Halo&#xff08;羲和&#xff09;这个数据库我较早时间就听说过&#xff08;早于今年DTCC&#xff0c…

时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标)

时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标) 目录 时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标)预测效果基本介绍环境准备程序设计参考资料预测效果 基本介绍 LSTM是一种递归神经网络(RNN)的变体

HCIP —— OSPF 综合实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1&#xff0c;R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用公有IP 2&#xff0c;R3-R5/6/7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分…

如何从 Jira 成功迁移到极狐GitLab,看这个就够了!

内容来源&#xff1a;https://about.gitlab.com/blog 作者&#xff1a;Melissa Ushakov Atlassian 之前表示&#xff0c;到 2024 年 2 月会全面终止对于其服务器端产品的支持。 随着 Jira Server 的生命周期即将结束&#xff0c;众多组织都在考虑将其敏捷项目管理工具从Jira 迁…

van-list的onload事件多次触发的问题

一、问题描述 如图所示&#xff0c;页面刷新的时候&#xff0c;调了3次接口&#xff08;总共27条数据&#xff0c;我分页10条&#xff09;&#xff0c;一直莫名奇妙的 我期望是默认加载第一页&#xff0c;然后我上拉的时候再push第二页的数据 二、解决方法 还是要多看文档 1…

彻底解决ModuleNotFoundError: No module named ‘exceptions‘【Bug完美解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结心得项目场景: 根据本文可找到bug原因并彻底解决**ModuleNotFoundError: No module named ‘exceptions‘**Bug 报错: E:\Anconda\python.exe c:\Users\24190\PycharmProjects\pythonProject4py尝试 gong…

RK3568平台开发系列讲解(Linux系统篇) dtb 到 device_node 的转化

🚀返回专栏总目录 文章目录 一、dtb 展开流程二、dtb 解析过程源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 dtb 如何展开成 device_node 一、dtb 展开流程 设备树源文件编写: 根据设备树的基本语法和相关知识编写符合规范的设备树。…

c# OpenCV 读取、显示和写入图像(二)

读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时&#xff0c;您也需要先读取图像。因此&#xff0c;掌握这些基本操作非常重要。 imread()读取图像imshow()在窗口中显示图像imwrite()将图像保存到文件目录里 我们…

YOLOV7改进:在C5模块不同位置添加SegNext_Attention

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:SegNext_Attention注意力机制,实现…

毕业论文管理系统的设计与实现

摘要 毕业论文工作是高等学校本科培养阶段的一个重要环节。目前论文管理工作存在着许多问题,例如人工管理极为不便;学生对论文所要撰写的内容并不十分了解,与指导老师的沟通非常不便;老师的指导监督也很难完全到位;手工评审的效率低等。而现有的一些毕业论文信息管理或答辩评审…

总结1073

学习记录&#xff1a;今日共计学习12h 数学:纯计算1.5h,用克拉默法则解方程&#xff0c;华里士公式大全&#xff0c;三个公式的推导&#xff0c;推导出来后&#xff0c;一道模拟卷的大题就能直接秒了&#xff0c;又捡回了12分。 英语&#xff1a;作文一篇22年阅读长难句回顾1…

C#,数值计算——插值和外推,二维三次样条插值(Spline2D_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 二维三次样条插值 /// Object for two-dimensional cubic spline interpolation on a matrix.Construct /// with a vector of x1 values, a vector of x2 values, and a ma…

矩阵元素求和:按行、按列、所有元素np.einsum()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 矩阵元素求和&#xff1a; 按行、按列、所有元素 np.einsum() [太阳]选择题 下列说法正确的是&#xff1a; import numpy as np A np.array([[1, 2],[3, 4]]) print("【显示】A") p…

会话 cookie 及隐私的那些事

什么是会话 Cookie? 会话 Cookie 的概念非常简单。 会话 Cookie,也称为临时 Cookie 或内存 Cookie,是网站在浏览会话期间存储在用户计算机或设备上的小数据片段。 它是由网站生成并由您的浏览器存储和使用的多种 Cookie 之一。 常规 Cookie 或“持久”Cookie 是通常在您的…