当前位置: 首页 > news >正文

Linux的shell脚本常用命令

1、前提

使用shell脚本可以将所要执行的命令行进行汇总,统一执行,制作为脚本工具,简化重复性工作

1.1、常用命令

1.1.1、启动命令

假设我们拥有一个halloWord.sh的脚本,通过cd 命令进入相对应的目录下

./halloWord.sh

1.1.2、记录日志

将脚本执行的内容以及输出记录在log.txt文件中,同时也控制台显示器也要输出一份,可以在脚本开始处添加以下代码

# -a 后的$(date +%Y-%m-%d_%H:%M:%S)_log.txt为log.txt名称
# (date +%Y-%m-%d_%H:%M:%S)为当前时间 防止log文件重名
exec &> >(tee -a $(date +%Y-%m-%d_%H:%M:%S)_log.txt)

1.1.3、设置变量以及输出内容

#控制台将输出内容为 "127.0.0.1"的字符串
DB_HOST="127.0.0.1"
echo $DB_HOST

1.1.4、创建文件夹

#在/opt下创建Back文件夹
mkdir /opt/Back

1.1.5、拷贝文件夹、文件

选项:
-r:递归复制目录及其内容。与-R选项相同。
-p:保持源文件的权限、所有者和时间戳等属性。
-i:在复制时进行交互式确认,如果目标文件已经存在,则提示是否覆盖。
-f:强制复制,不进行任何提示或警告。
-u:只复制源文件比目标文件更新的文件。
-v:显示详细的复制过程信息。

#cp [选项] 源文件 目标文件
#将opt目录下的log.txt文件,拷贝至opt的Back目录下
#相同原理,也可以拷贝文件夹
cp -R /opt/log.txt /opt/Back

1.1.6、校验目录或文件夹是否存在

if [ -f "/opt" ]; thenecho "opt目录存在"
elseecho "opt目录不存在"
fi

1.1.7、输入英语字符并转换为小写字符

echo "是否要校验opt目录是否存在?(y/n)"
read answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ "$answer" = "y" ]; thenecho "opt目录存在"
elseecho "opt目录不存在"
fi

1.1.8、中途停止脚本的执行

#使用 exit 1进行停止
#exit 1 是一个Shell命令,用于在脚本中退出并返回一个非零的退出状态。
#它通常用于指示脚本或命令在执行过程中发生了错误或异常。
#当执行exit 1时,脚本将立即终止,
echo "是否要校验opt目录是否存在?(y/n)"
read answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ "$answer" = "y" ]; thenecho "opt目录存在"
elseecho "opt目录不存在"echo "操作已取消"exit 1
fi

1.1.9、将文本内容更换为UTF-8格式

定义两个变量,分别为需要源文件路径,以及目标文件路径

#将opt目录下的log.txt更换为UTF-8格式
TXT_FILE="/opt/log.txt"
TXT_FILE_UTF="/opt/log_UTF-8.txt"
iconv -f GBK -t UTF-8 $TXT_FILE > $TXT_FILE_UTF

也可以不使用变量的方式

#将opt目录下的log.txt更换为UTF-8格式
iconv -f GBK -t UTF-8 "/opt/log.txt" > "/opt/log_UTF-8.txt"

2、注意事项

2.1、书写格式

.sh文件的第一行必须为:#!/bin/bash
例如:在这里插入图片描述

2.2、权限问题

第一次调用.sh脚本是时可能会出现权限不足的问题

#脚本赋予可执行权限
chmod u+x /opt/XXX.sh

2.3、编写的格式问题

winodw编写可以使用编辑器(如NotePad++),保存格式为unix,否则会出现不可见的符号,导致命令行报错,脚本无法使用
在这里插入图片描述

相关文章:

Linux的shell脚本常用命令

1、前提 使用shell脚本可以将所要执行的命令行进行汇总,统一执行,制作为脚本工具,简化重复性工作 1.1、常用命令 1.1.1、启动命令 假设我们拥有一个halloWord.sh的脚本,通过cd 命令进入相对应的目录下 ./halloWord.sh1.1.2、…...

使用自己的数据集预加载 Elasticsearch

作者:David Pilato 我最近在讨论论坛上收到一个问题,关于如何修改官方 Docker 镜像以提供一个现成的 Elasticsearch 集群,其中已经包含一些数据。 说实话,我不喜欢这个想法,因为你必须通过提 entrypoint.sh 的分叉版本…...

机器视觉赛道持续火热,深眸科技坚持工业AI视觉切入更多应用领域

随着深度学习等算法的突破、算力的不断提升以及海量数据的持续积累,人工智能逐渐从学术界向工业界落地。而机器视觉作为人工智能领域中一个正在快速发展的分支,广泛应用于工业制造的识别、检测、测量、定位等场景,相较于人眼,在精…...

MyBatis操作数据库常见用法总结2

文章目录 1.动态SQL使用什么是动态sql为什么用动态sql标签拼接标签拼接标签拼接标签拼接标签拼接 补充1:resultType和resultMap补充2:后端开发中单元测试工具使用(Junit框架) 1.动态SQL使用 以insert标签为例 什么是动态sql 是…...

基于SpringBoot+LayUI的宿舍管理系统 001

项目简介 源码来源于网络,项目文档仅用于参考,请自行二次完善哦。 系统以MySQL 8.0.23为数据库,在Spring Boot SpringMVC MyBatis Layui框架下基于B/S架构设计开发而成。 系统中的用户分为三类,分别为学生、宿管、后勤。这三…...

C语言笔记7

#include <stdio.h> int main(void) {int a123;int b052;//十进制42int c0xa2;//十进制162printf("a%d b%o c%x \n",a,b,c);//分别是十进制 八进制 十六进制printf("a%d b%d c%d \n",a,b,c);printf("Hello 凌迟老头\n");return …...

Centos更换网卡名称为eth0

Centos更换网卡名称为eth0 已安装好系统后需要修改网卡名称为eth0 编辑配置文件将ens33信息替换为eth0,可在vim命令模式输入%s/ens33/eth0/g替换相关内容 修改内核文件,添加内容:net.ifnames=0 biosdevname=0 [root@nova3 ~]# vim /etc/default/grub 使用命令重新生成g…...

【Express.js】软件测试

软件测试 本节介绍如何在 express.js 使用 Jest 进行单元测试 准备工作 准备一个基础的 express 项目&#xff0c;本文基于 evp-express-cli安装 Jest npm install jest --save-dev生成 Jest 配置 npx jest --init编写测试 创建测试文件&#xff0c;以 .test.js 后缀命名…...

TCP三次握手、四次握手过程,以及原因分析

TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手&#xff1a;为了对每次发送的数据量进行跟踪与协商&#xff0c;确保数据段的发送和接收同步&#xff0c;根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系&#xff0c;并建立虚连接。 四次挥手&…...

OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案

摘要&#xff1a;本文整理自 OceanBase 架构师周跃跃&#xff0c;在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分&#xff1a; 分布式数据库 OceanBase 关键技术解读 生态对接以及典型应用场景 OceanBase X Flink 在游戏行业实践 未来展望 点击…...

600V EasyPIM™ IGBT模块FB30R06W1E3、FB20R06W1E3B11、FB20R06W1E3降低了系统成本和损耗,可满足高能效要求。

EasyPIM™ IGBT模块是一种三相输入整流器PIM IGBT模块&#xff0c;采用TRENCHSTOP™ IGBT7、发射器控制7二极管和NTC/PressFIT技术。该模块具有增强的dv/dt可控性、改进的FWD软度、优化的开关损耗以及8μs短路稳定性。EasyPIM&#xff08;功率集成模块&#xff09;外形非常小巧…...

form 表单恢复初始数据

写表单的时候&#xff0c;想做到&#xff0c;某个操作时&#xff0c;表单恢复初始数据 this.$options.data().form form 是表单的对象 <template><div><el-dialog title"提示" :visible.sync"dialogVisible"><el-form :model"…...

MySQL—索引

这里写目录标题 索引是什么? 索引优缺点?MySQL索引类型索引底层实现? 为什么使用B树, 而不是B树, BST, AVL, 红黑树等等?什么是聚簇索引和非聚簇索引?非聚簇索引一定会回表吗?什么是联合索引?为什么需要注意联合索引中的字段顺序?什么是最左前缀原则?什么是前缀索引?…...

Android图形-合成与显示-概论

目录 引言 概念与理解 SurfaceFlinger Surface HWC Fence&#xff1a; Gralloc&#xff1a; DisplayDevice 引言 Activity是Android的主要UI相关组件。通过View的相关类和接口实现&#xff0c;在WMS的管理下&#xff0c;进行窗口和控件的测量&#xff0c;布局和绘制&am…...

Swift 5 数组如何获取集合的索引和对应的元素值

Swift 5 数组如何获取集合的索引和对应的元素值 在Swift 5中&#xff0c;你可以使用enumerated()方法来获取集合的索引和对应的元素值。这个方法会返回一个包含索引和元素的元组数组。以下是使用enumerated()方法来获取一个数组的索引和元素的示例&#xff1a; let array [1…...

计算 Nginx 日志的PV和UV

计算 Nginx 日志的 PV&#xff08;页面浏览量&#xff09;和 UV&#xff08;独立访客数&#xff09;&#xff0c;你需要使用一些工具和技术。 PV&#xff08;页面浏览量&#xff09;是指网站的所有页面被访问的总次数&#xff0c;而 UV&#xff08;独立访客数&#xff09;则是指…...

Spring中常用的注解

1.声明Bean的注解(标注在类上) Component&#xff1a;表示普通的组件&#xff0c;也可泛指下面三种组件。Controller&#xff1a;控制层。Service&#xff1a;业务逻辑层。Repository&#xff1a;数据访问层。 2.Bean的生命周期的注解 Scope表示设置Spring是如何创建Bean的…...

Plugin 插件

Plugin 插件 插件是 webpack 的支柱功能。插件目的在于解决 loader 无法实现的其他事。Webpack 提供很多开箱即用的插件。 常用插件 clean-webpack-plugin 自动清理输出目录 html-webpack-plugin 自动生成使用 bundle.js 的 HTML copy-webpack-plugin 拷贝文件到输出目…...

Structure needs cleaning fsimage文件系统损坏修复

最近清除数据的时候发现有些文件无法rm [rootnode101 application_1691504014432_0002]# rm -rf ls:* [rootnode101 application_1691504014432_0002]# ls ls: 无法访问flink-dist-cache-8f72398e-9254-42d4-a14d-a0def99b493d: Structure needs cleaning以下操作可能会删除文件…...

MATLAB|信号处理的Simulink搭建与研究

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解&#xff1a;Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...