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" ]; then
   echo "opt目录存在"
else
   echo "opt目录不存在"
fi

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

echo "是否要校验opt目录是否存在?(y/n)"
read answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ "$answer" = "y" ]; then
   echo "opt目录存在"
else
   echo "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" ]; then
   echo "opt目录存在"
else
   echo "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,否则会出现不可见的符号,导致命令行报错,脚本无法使用
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apipost接口自动化测试入门

今天我们来聊一聊接口自动化测试。以往我们都是以以代码的形式编写自动化测试脚本做自动化测试,网上也有非常多的攻略,那么在不会代码的情况下该怎么做接口自动化呢,今天给大家介绍Apipost自动化测试模块,不用写代码也能做接口自动…

字节C++后端面试总结

字节的面经,技术栈是 C++ 后端。 计算机网络 UDP和TCP区别 先说了概念一个是面向连接的基于字节流的可靠连接,一个是不需要连接的基于数据报的不可靠传输 然后说了几个小点,比如首部长度、应用场景、服务对象什么的。 补充: 还有一个很重要的点:UDP 的实时性比 TCP 好…

微服务技术栈(1.0)

微服务技术栈 认识微服务 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 优点: 架构简单部署成本低 缺点: 耦合度高 分布式架构 分布式架构:根据业务功能对系统进行拆分&#xff0c…

鉴源实验室|公钥基础设施(PKI)在车联网中的应用

作者 | 付海涛 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 01 PKI与车联网 1.1 PKI概述 公钥基础设施(PKI ,Public Key Infrastructure)是一种在现代数字环境中实现认证和加密的基本框架,主要用于保护网络交互和通信的安…

Mac电脑怎么使用“磁盘工具”修复磁盘

我们可以使用“磁盘工具”的“急救”功能来查找和修复磁盘错误。 “磁盘工具”可以查找和修复与 Mac 磁盘的格式及目录结构有关的错误。使用 Mac 时,错误可能会导致意外行为,而重大错误甚至可能会导致 Mac 彻底无法启动。 继续之前,请确保您…

Flutter父宽度自适应子控件的宽度

需求: 控件随着金币进行自适应宽度 image.png 步骤: 1、Container不设置宽度,需要设置约束padding; 2、文本使用Flexible形式; Container(height: 24.dp,padding: EdgeInsetsDirectional.only(start: 8.dp, end: 5.d…

LISA:通过大语言模型进行推理分割

论文:https://arxiv.org/pdf/2308.00692 代码:GitHub - dvlab-research/LISA 摘要 尽管感知系统近年来取得了显著的进步,但在执行视觉识别任务之前,它们仍然依赖于明确的人类指令来识别目标物体或类别。这样的系统缺乏主动推理…

跨境商城系统源码的优势,助力企业海外扩张

跨境电商发展背景与趋势 随着全球化的推进和互联网技术的快速发展,跨境电商已成为企业海外拓展的重要途径。然而,跨境电商面临着诸多挑战,如复杂的海外市场、文化差异、海关监管等。为了解决这些问题,企业可以借助跨境商城系统源码…

FOHEART H1数据手套:连接虚拟与现实,塑造智能交互新未来

在全新交互时代背景中,数据手套无疑是一种重要的科技产物。它不仅彻底改变了我们与虚拟世界的互动方式,更为我们提供了一种全新、更为直观的交互形式。 FOHEART H1数据手套结合了虚拟现实、手势识别等高新技术,用先进的传感技术和精准的数据…

TeeChart NET for MAUI Crack

TeeChart NET for MAUI Crack 跨平台图表-移动或桌面应用程序的核心图表代码相同。 图表集合-60多种图表类型和50多种财务和统计指标。 图表类型 60多种2D和3D图表类型以及多种组合,包括: 标准:线条(条形)、条形、区域、饼图、快线、点(散点…

LVS集群

目录 1、lvs简介: 2、lvs架构图: 3、 lvs的工作模式: 1) VS/NAT: 即(Virtual Server via Network Address Translation) 2)VS/TUN :即(Virtual Server v…

三极管从入门到精通

文章目录 摘要1 基础1.1 PN结1.2 三极管 2 三极管模拟电路知识2.1 I-V特性曲线2.2 极限参数解释2.3 基本共射极放大电路2.4 小信号模型2.5 用小信号模型分析基本共射极放大电路 3 三极管实际模拟电路应用图3.1 共射极放大电路3.1.1 基本共射极放大电路3.1.2 基极分压式射极偏置…

实际工作中通过python+go-cqhttp+selenium实现自动检测维护升级并发送QQ通知消息(程序内测)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 首先,今年比较忙没有多余时间去实操创作分享文章给大家,那就给大家分享下博主在实际工作中的一点点内容吧,就当交…

架构训练营学习笔记:5-1 计算架构模式之多级缓存架构

序 本节主要是计算架构。 多级缓存架构 缓存与缓冲:通常场景是读缓存,写缓冲。 缓存技术的本质:空间换时间,因此缓存架构属于高性能计算 架构。 缓存设计框架 主要考虑存什么?存多久?存哪里?如…

成品短视频App源码开发:一步步教你搭建短视频平台

近年来,短视频平台的兴起迅速改变了人们对视频内容的获取方式,成品短视频App源码的开发也因此备受瞩目。对于希望快速搭建短视频平台的创业者来说,使用成品短视频App源码是一个明智的选择。 成品短视频App源码为您提供了一个基于现有技术和功…

vue3+antd——实现个人中心页面+同步更改头部用户信息——基础积累

之前写过一篇文章关于vue3antd的框架模板,链接如下:http://t.csdn.cn/9dZMS 首先感谢大神提供的后台管理系统的模板,在此基础上改动要简单很多,主要是自己有很多内容不太敢随意改动。。。 直接看【个人中心】页面的效果图&#…

[迁移学习]领域泛化

一、概念 相较于领域适应,领域泛化(Domain generalization)最显著的区别在于训练过程中不能访问测试集。 领域泛化的损失函数一般可以描述为以下形式: 该式分为三项:第一项表示各训练集权重的线性组合,其中π为使该项最小的系数&a…

【Docker系列】push镜像报错问题解决方案

1 问题描述 docker push 报这个错,unknown blob 详细报错内容: Use docker scan to run Snyk tests against images to find vulnerabilities and learn how to fix them The push refers to repository [192.******/*******/*************] 3b3341e9d03…

网络安全进阶学习第十三课——SQL注入Bypass姿势

文章目录 一、等号被过滤二、substr、mid等被过滤三、逗号被过滤四、and/or被过滤五、空格被过滤五、其他绕过方式 一、等号被过滤 1、like&#xff0c;rlike语句&#xff0c;其中rlike是正则2、大于号>&#xff0c;小于号<3、符号<>&#xff1a;<>为不等于…

【win10专业版远程控制】 自带远程桌面公司内网电脑

使用win10专业版自带远程桌面公司内网电脑 文章目录 使用win10专业版自带远程桌面公司内网电脑 在现代社会中&#xff0c;各类电子硬件已经遍布我们身边&#xff0c;除了应用在个人娱乐场景的消费类电子产品外&#xff0c;各项工作也离不开电脑的帮助&#xff0c;特别是涉及到数…