[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" ]; thenecho "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.mzph.cn/bicheng/38209.shtml

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

相关文章

简单多状态DP问题

这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做?关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划(Multi-State Dynamic Programming, Multi-St…

vue2实例实现一个初步的vue-router

vue2实例实现一个初步的vue-router 实现源码:vue2-review 1.App.vue 2.router目录下的index.js 3.自己实现的x-router.js 4.自己实现的xrouter-view.js 5.自己实现的xrouter-link.js 6.效果 微信公众号:刺头拾年

AI奥林匹克竞赛:Claude-3.5-Sonnet对决GPT-4o,谁是最聪明的AI?

目录 实验设置 评估对象 评估方法 结果与分析 针对学科的细粒度分析 GPT-4o vs. Claude-3.5-Sonnet GPT-4V vs. Gemini-1.5-Pro 结论 AI技术日新月异,Anthropic公司最新发布的Claude-3.5-Sonnet因在知识型推理、数学推理、编程任务及视觉推理等任务上设立新…

【雷达原理】雷达测角原理及实现方法

目录 一、雷达测角原理1.1 测角研究历史和现状1.2 测角方法总结1.3 3DFFT测角1.3.1 基本原理1.2.2 测角性能 二、MATLAB仿真案例参考文献 一、雷达测角原理 1.1 测角研究历史和现状 (1)早期采用窄波束对准目标,目标的角度对应于天线的角度读…

【动态规划】139. 单词拆分

139. 单词拆分 难度:中等 力扣地址:https://leetcode.cn/problems/word-break/description/ 问题描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字…

INS-GPS组合导航——卡尔曼滤波

系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹(三维建模)》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台,平台的自定位误差将影响SAR…

LeetCode-Leetcode 1120:子树的最大平均值

LeetCode-Leetcode 1120:子树的最大平均值 题目描述:解题思路一:递归解题思路二:0解题思路三:0 题目描述: 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…

还不知道工业以太网和现场总线区别???

工业以太网 工业以太网是一种专为工业环境设计的网络通信技术,它基于标准的以太网技术,但针对工业应用进行了优化。工业以太网能够适应高温、低温、防尘等恶劣工业环境,采用TCP/IP协议,与IEEE 802.3标准兼容,并在应用层…

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天,回溯算法part03,牢记回溯三部曲,掌握树形结构结题方法💪 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解:代码随想录复原IP地址 视频讲解:手撕复原IP地址 题目&#xff1…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中,常用到AHP-SWOT法进行定量分析,形成判断矩阵后,如何构造整洁的战略四边形是分析的最后一个环节,本文现将相关代码发布如下: import mpl_toolkits.axisartist as axisartist import …

解决本机电脑只能通过localhost访问,不能通过127.0.0.1访问

背景问题 有天我启动项目,发现项目连接Mysq总是连接不上,查了url、ip、port、用户名和密码都没有错,就是连接不上mysql数据库,后来通过查找资料发现有多个进程占用3306端口。 pid 6016 是mysqld服务 而pid 9672 是一个叫 svchos…

逆变器--学习笔记(一)

并网: 逆变器中的“并网”指的是逆变器将其产生的交流电与电网同步,并输送到公共电网中。并网逆变器通常用于太阳能发电系统和其他分布式发电系统,将其产生的电能输送到电网供其他用户使用。 THD谐波失真总量: 逆变器的THD(Tot…

大模型系列课程学习-基于2080TI-22G魔改卡搭建双卡大模型训练平台(双系统)

1.选择合适的硬件配置 再配置电脑之前,需要确认自己需要的显存大小、主板、内存条、电源、散热等核心配件。经过前期调研,选择的硬件配置如下: (1)主板:华南X99_F8D(DDR4主板),因为需要支持双卡…

Python: PyCharm 2023.1 调试

1.设断点 (行号对应的红色点,在需要设置断点的代码行与行号之间鼠标点击即可以设置) 2.shiftF9,或 altshiftf9 选择文件 或是在菜单 Run->debug "main" 或是在菜单Run->debug 选择文件 (鼠标光标放在设置第一个…

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略: 1)学习已有系统,重用已有模型 2)使用分类标签。分类标签来源于领域,需要我们研究一些资料并做一些提炼。从采用5W…

基于elastic stack的docker-compose部署的ELK与LDAP集成

说明: ldap信息配置到es配置文件上,然后kibana读取es的配置信息 用户与角色的关系通过role_mapping.yml文件配置获取 角色与权限的关系通过elastic stack提供的DevTools或API进行维护 一、前置条件: 1.1 es已开启xpack(已开启…

DIY智能音箱:基于STM32的低成本解决方案 (附详细教程)

摘要: 本文详细介绍了基于STM32的智能音箱的设计与实现过程,包括硬件设计、软件架构、语音识别、音乐播放等关键技术。通过图文并茂的方式,结合Mermaid流程图和代码示例,帮助读者深入理解智能音箱的工作原理,并提供实际操作指导。…

汇川CodeSysPLC教程03-2-10 如何组态

大家好,我是阿凡工控分享,本期我们将调整教程的顺序,和粉丝朋友们讨论后,后续我将优先出绿旗标注的部分,便于小白水平的你循序渐进,其他水平的朋友有些需求可能要稍后了,如果有问题请见谅&#…

【Spring成神之路】一次SpringIOC源码之旅,女朋友也成为了Spring大神!

文章目录 一、前言二、前置准备三、IOC容器的使用四、Spring IOC源码解读1. prepareRefresh源码解读2. obtainFreshBeanFactory源码解读2.1 refreshBeanFactory源码解读 3. prepareBeanFactory源码解读4. postProcessBeanFactory源码解读5. invokeBeanFactoryPostProcessors源码…

计算机Java项目|基于SpringBoot的作业管理系统设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…