[AIGC] Shell脚本在工作中的常用用法

Shell脚本是一种为 shell 编写的脚本程序。商业上的 Unix Shell 一般都配备图形界面,主要包括:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh),和修正版的 C Shell(/usr/bin/tcsh)。在这篇文章中,我将重点介绍一些在工作中经常使用的shell用法,如判断文件是否存在,如果不存在如何创建,以及如何递归创建文件。

Shell Scripting


文章目录

    • 判断文件是否存在
    • 创建文件
    • 递归创建文件
    • `test`

判断文件是否存在

在 Shell 中,我们可以使用if语句来判断文件是否存在。这里是一个例子:

if [ -f "/path/to/your/file" ]; then
    echo "File exists."
else 
    echo "File does not exist."
fi

在这段脚本中,我们使用-f操作符来检查文件是否存在。如果文件存在,shell将执行then部分中的命令,否则执行else部分中的命令。

创建文件

如果经过上述判断,文件不存在,那我们就需要创建文件。在 Shell 中,我们可以使用touch命令来创建新文件,如下:

touch /path/to/your/file

如果指定路径的文件已经存在,touch命令不会创建新文件,但会更新文件的修改时间。

递归创建文件

如果我们想要在不存在的目录中创建文件,那我们就需要递归地创建目录和文件。我们可以使用mkdir -ptouch命令来实现,如下:

mkdir -p /path/to/your && touch /path/to/your/file

在这段脚本中,mkdir -p命令会创建所有不存在的父目录。然后,touch命令会在新创建的目录中创建新文件。

Shell脚本在我们的日常工作中非常重要,掌握其使用方法可以大大提高我们的工作效率。希望这篇文章对你有所帮助,如果你有任何关于Shell脚本的问题,欢迎在评论区留言。

test

test命令在Shell中主要被用于检验和比较数字,检查文件,检查字符串等。test命令用于评估一个表达式,如果表达式为真,则返回零(代表成功),否则返回非零(代表失败)。返回值可用于条件判断和流程控制等。

在shell脚本中,我们常常看到的方括号形式的条件判断,实际上也是test命令的简写形式。例如下面两种写法其实是等价的:

test -f /etc/resolv.conf
[ -f /etc/resolv.conf ]

两种写法都是检查/etc/resolv.conf文件是否存在并且是一个普通文件。

常用的test命令操作形式有:

  • 检查数字:-eq(等于),-ne(不等于),-gt(大于),-ge(大于等于),-lt(小于),-le(小于等于)等,
  • 检查文件:-e(存在),-f(普通文件),-d(目录),-r(可读),-w(可写),-x(可执行)等,
  • 检查字符串:=(等于),!=(不等于),-z(长度为零),-n(长度非零)等。

通过熟练掌握test命令,我们可以在shell脚本中实现更加复杂的条件判断和流程控制。

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

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

相关文章

抓紧收藏!7 款令人惊艳的 AI 开源项目

🐼 关注我, 了解更多 AI 前沿资讯和玩法,AI 学习之旅上,我与您一同成长! 🎈 进入公众号,回复 AI, 可免费领取超多实用的 AI 资料 和内容丰富的 AI 知识库地址。 自从去年 AIGC 兴起以来,AI 开源…

【python爬虫实战】爬取豆瓣top250(网站有反爬虫机制肿么办)

关于请求头headers: 值得注意的是,与上一篇 :​​​​​​【python爬虫实战】爬取书店网站的 书名&价格(注释详解)-CSDN博客 爬取书名不同,这次爬取豆瓣网站必须使用“请求头headers”,不然将没有输…

Tomcat的安装和虚拟主机和context配置

一、 安装Tomcat 注意:安装 tomcat 前必须先部署JDK 1. 安装JDK 方法1:Oracle JDK 的二进制文件安装 [rootnode5 ~]# mkdir /data [rootnode5 ~]# cd /data/ [rootnode5 data]# rz[rootnode5 data]# ls jdk-8u291-linux-x64.tar.gz [rootnode5 data]…

通用管理页面的功能实现

在Windows Forms(WinForms)应用程序中,创建一个通用的管理页面通常涉及对数据的增删改查(CRUD)操作,以及一些额外的功能,如数据过滤、排序、导出和导入等。 先看一个仓库管理页面要素。 仓库管…

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作: git clone https://github.com/gperftools/gperftools.git 注:如果网速较慢,可直接去下载压缩包。 如我下载的地址:https://github.com/gperftools/gperftools/releases/ta…

ComfyUI局部重绘的四种方式 (附件工作流在最后)

前言 局部重绘需要在图片中选择重绘区域,点击图片右击选择Open in MaskEditor(在蒙版编辑器中打开),用鼠标描绘出需要重绘的区域 方式一:重绘编码器 这种方式重绘比较生硬,需要额外搭配使用才行 方式二&…

Sql审核平台Archery的搭建和简单配置

Sql审核平台Archery的搭建和简单配置 Archery是一个开源的Web应用,基于Python开发,利用Flask作为后端框架,前端采用Vue.js,构建了一个现代化的数据操作界面。提供了SQL审核、数据查询、报表生成等功能,同时支持多种数据…

普元EOS学习笔记-创建精简应用

前言 本文依旧基于EOS8.3进行描述。 在上一篇文章《EOS8.3精简版安装》中,我们了解到普元预编译好的EOS的精简版压缩包,安装后,只能进行低开,而无法高开。 EOS精简版的高开方式是使用EOS开发工具提供的IDE,创建一个…

【C语言】指针剖析(完结)

©作者:末央& ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 目录 回调函数概念回调函数的使用 - qsort函数 sizeof/strlen深度理解概念手脑并用1.sizeof-数组/指针专题2.strlen-数组/指针专题 指针面试题专题 回调函…

从0-1搭建一个web项目(package.json)详解

本章分析package.json文件详解 本文主要对packge.json配置子文件详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等…

每日一题——Python实现PAT乙级1073 多选题常见计分法(举一反三+思想解读+逐步优化)9千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试 再次尝试 有何不同 版本一(原始版本):…

Python变量的命名规则与赋值方式

第二章:Python 基础语法 第一节:变量的命名规则与赋值方式 2.1.1 引言 在编程中,变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

修复vcruntime140.dll方法分享

修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理,甚至有的dll处理工具还需要花钱????,我本来就是为…

VMware17安装Ubuntu20版本-保姆级别

首先需要安装好VMware和Ubuntu20的镜像,在网上搜索Ubuntu镜像下载即可,最后选择国内镜像站下载,这样更快点,然后打开VMware。 1.创建虚拟机: 2.选择自定义: 3.默认,继续下一步: 4.选…

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…

UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出,向其传入三个参数(①输出日志类型,一般LogTemp ②具体种类,普通/警告/错误,这里是Warning ③输出的文本内容,使用TEXT(" "),这里是TEXT("Run AActor BeginPlay")) 代码写…

嵌入式学习——硬件(s3c2440外部中断、定时器中断)——day54

1. start.s preserve8area reset, code, readonlycode32entryldr pc, startnopnopnopnopnop ldr pc, interrupt_handlernopstartldr sp, 0x40001000mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12;IRQbic r0, r0, #(1 << 7);打开IRQ中断允许msr cpsr_c, r0ldr …

C语言力扣刷题11——打家劫舍1——[线性动态规划]

力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解…

Java基础(三)——类和对象、构造方法

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…