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

news2025/1/18 14:04:17

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脚本中实现更加复杂的条件判断和流程控制。

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

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

相关文章

专题三:Spring源码中新建module

前面我们构建好了Spring源码,接下来肯定迫不及待来调试啦,来一起看看大名鼎鼎ApplicationContext 新建模块 1、基础步骤 1.1 自定义模块名称如:spring-self 1.2 选择构建工具因为spring使用的是gradle,所以这边需要我们切换默认…

KV260视觉AI套件--PYNQ-DPU

目录 1. 简介 2. DPU 原理介绍 2.1 基本原理 2.2 增强型用法 3. DPU 开发流程 3.1 添加 DPU IP 3.2 在 BD 中调用 3.3 配置 DPU 参数 3.4 DPU 与 Zynq MPSoC互联 3.5 分配地址 3.6 生成 Bitstream 3.7 生成 BOOT.BIN 4. 总结 1. 简介 在《Vitis AI 环境搭建 &…

爬虫中如何创建Beautiful Soup 类的对象

在使用 lxml 库解析网页数据时,每次都需要编写和测试 XPath 的路径表达式,显得非常 烦琐。为了解决这个问题, Python 还提供了 Beautiful Soup 库提取 HTML 文档或 XML 文档的 节点。 Beautiful Soup 使用起来很便捷,…

数据结构-期末复习题

数据结构-期末复习题 一、选择题 1、在数据结构中,与所使用的计算机无关的是数据的( ) 结构。 A. 存储B. 物理C. 逻辑D. 物理和存储 【答案】C 【解析】暂无解析2、算法分析的两个主要方面是 ( )。 A. 正确性和简单性B. 可读性和文档性C. 空间复杂度…

拼多多滑块逆向

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi …

onInterceptTouchEvent() 与 onTouch() 事件分析

前言 本文主要分析 onTouch() 与 onTouchEvent() 事件的差异 正文 先看布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <com.longzhiye.intercepttouch.MyFrameLayout xmlns:android"http://schemas.android.com/apk/res…

Big Data Tools插件

一些介绍 在Jetbrains的产品中&#xff0c;均可以安装插件&#xff0c;其中&#xff1a;Big Data Tools插件可以帮助我们方便的操作HDFS&#xff0c;比如 IntelliJ IDEA&#xff08;Java IDE&#xff09; PyCharm&#xff08;Python IDE&#xff09; DataGrip&#xff08;SQL …

ctfshow-web入门-命令执行(web71-web74)

目录 1、web71 2、web72 3、web73 4、web74 1、web71 像上一题那样扫描但是输出全是问号 查看提示&#xff1a;我们可以结合 exit() 函数执行php代码让后面的匹配缓冲区不执行直接退出。 payload&#xff1a; cvar_export(scandir(/));exit(); 同理读取 flag.txt cinclud…

mybatis实现动态sql

第一章、动态SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验&#xff0c;你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特…

网安小贴士(2)OSI七层模型

一、前言 OSI七层模型是一种网络协议参考模型&#xff0c;用于描述计算机网络体系结构中的不同层次和功能。它由国际标准化组织 (ISO) 在1984年开发并发布。 二、定义 OSI七层模型&#xff0c;全称为开放式系统互联通信参考模型&#xff08;Open Systems Interconnection Refe…

微型导轨:手术机器人的高精度“骨骼”

微型导轨精度高&#xff0c;摩擦系数小&#xff0c;自重轻&#xff0c;结构紧凑&#xff0c;被广泛应用在医疗器械中&#xff0c;尤其是在手术机器人中的应用&#xff0c;通过手术机器人&#xff0c;外科医生可以远离手术台操纵机器人进行手术。可以说&#xff0c;是当之无愧的…

6-linux操作文件与数据上传

目录 通配符学习 创建和上传下载文件 系统盘与数据盘 创建和查找文件夹 文件上传与移动 Windows上传文件到服务器方法1 Windows上传文件到服务器方法2&#xff1a;网盘等 删除文件 rm 复制文件cp 移动文件 常用的命令 cp:复制文件和目录。 mv:移动或重命名文件和目…

「漏洞复现」时空智友ERP系统updater.uploadStudioFile 任意文件上传漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

九浅一深Jemalloc5.3.0 -- ①浅*编译调试

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析Jemalloc5.3.0的实现。5.3.0的特性请见Releases jemalloc/jemalloc GitHub 另…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

2024年06月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 15 题,每题 2 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几…

前端工程化09-webpack静态的模块化打包工具(未完结)

9.1、开发模式的进化历史 webpacks是一个非常非常的强大的一个工具&#xff0c;相应的这个东西的学习也是有一定的难度的&#xff0c;里边的东西非常的多&#xff0c;里面涉及到的 概念的话也是非常非常的多的。 这个东西既然非常重要&#xff0c;那么在我们前端到底处于怎样…

如何在面试中找到最优秀的候选人:雇佣问题的随机化算法探索

目录 一、雇佣问题 二、雇佣问题的本质 三、引入随机化算法的思考过程 &#xff08;一&#xff09;随机排列 &#xff08;二&#xff09;预面试期 &#xff08;三&#xff09;正式雇佣期 四、概率分析 &#xff08;一&#xff09;预面试期的选择 &#xff08;二&#…

昇思25天学习打卡营第12天 | 基于MobileNetv2的垃圾分类函数式自动微分

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…

基于STM32的八位数码管显示和闹钟计时【Proteus仿真】

某鱼&#xff1a;两栖电子 一、系统功能 采用矩阵键盘&#xff0c;按下对应的数字再按下确认按键&#xff0c;数码管会显示自己输入的数字&#xff0c;如果按错可以使用删除按钮进行删除。点击计时按钮可以显示当前的时间。 二、使用器件 DS1302实时时钟芯片&#xff0c;8位数…