Linux 指定命令行前后添加echo打印内容

目录

  • 一. 前提条件
  • 二. 通过sh脚本进行批量修改
  • 三. 通过Excel和文本编辑器进行批量转换
  • 四. 实际执行效果


一. 前提条件

⏹项目中有批量检索文件的需求,如下所示需要同时执行500多个find命令

find ./work -type f -name *.java
find ./work -type f -name *.html
find ./work -type f -name *.css
find ./work -type f -name *.js
... 省略若干 ...

⏹手动执行每条命令,既容易出错,也很耗时间,因此需要做一个sh脚本文件批量执行
但是通过脚本文件执行的话,执行结果会紧密靠在一起,不好区分,因此最好在每个命令执行结束后,添加一个空行之类的,便于区分。
例如将命令批量处理为下面这样,然后创建一个sh脚本文件,通过bash命令执行

echo "「find ./work -type f -name *.java」コマンドの実行開始..."
find ./work -type f -name *.java
echo -e "「find ./work -type f -name *.java」コマンドの実行終了...\n"echo "「find ./work -type f -name *.html」コマンドの実行開始..."
find ./work -type f -name *.html
echo -e "「find ./work -type f -name *.html」コマンドの実行終了...\n"echo "「find ./work -type f -name *.css」コマンドの実行開始..."
find ./work -type f -name *.css
echo -e "「find ./work -type f -name *.css」コマンドの実行終了...\n"echo "「find ./work -type f -name *.js」コマンドの実行開始..."
find ./work -type f -name *.js
echo -e "「find ./work -type f -name *.js」コマンドの実行終了...\n"

⏹500多条命令,显然不能一条条的手动修改,因此需要有批量进行修改的方法
下文进行介绍


二. 通过sh脚本进行批量修改

  • 将需要进行批量转换的命令放到file_search.txt文件中

  • 由于是按行读取文件,因此最后一行命令需要有换行行为,否则最后一行会丢失

    find ./work -type f -name *.java
    find ./work -type f -name *.html
    find ./work -type f -name *.css
    find ./work -type f -name *.js
    # 需要有该空行保证最后一行换行了
    
  • 部分windows上的文本编辑器默认的换行符是\r\n,而Linux默认的换行符是\n,为避免换行符不统一造成的问题
    使用tr -d '\r'命令,去掉每行中的\r,将换行符转换为Linux的换行符\n

⏹命令如下

while IFS= read -r line; do# 去掉\r line=$(echo "$line" | tr -d '\r')# 跳过空行if [[ -z "$line" ]]; thencontinuefiecho "echo \"[$line]コマンドの実行開始...\""echo "$line"echo "echo -e \"[$line]コマンドの実行終了...\n\""echodone < file_search.txt > output.sh

⏹效果如下所示

Admin@FengYeHong-HP MINGW64 ~/Desktop/tst
$ cat file_search.txt
find ./work -type f -name *.java
find ./work -type f -name *.html
find ./work -type f -name *.css
find ./work -type f -name *.jsAdmin@FengYeHong-HP MINGW64 ~/Desktop/tst
$ sh cmd_convert.shAdmin@FengYeHong-HP MINGW64 ~/Desktop/tst
$ cat output.sh
echo "[find ./work -type f -name *.java]コマンドの実行開始..."
find ./work -type f -name *.java
echo -e "[find ./work -type f -name *.java]コマンドの実行終了...\n"echo "[find ./work -type f -name *.html]コマンドの実行開始..."
find ./work -type f -name *.html
echo -e "[find ./work -type f -name *.html]コマンドの実行終了...\n"echo "[find ./work -type f -name *.css]コマンドの実行開始..."
find ./work -type f -name *.css
echo -e "[find ./work -type f -name *.css]コマンドの実行終了...\n"echo "[find ./work -type f -name *.js]コマンドの実行開始..."
find ./work -type f -name *.js
echo -e "[find ./work -type f -name *.js]コマンドの実行終了...\n"Admin@FengYeHong-HP MINGW64 ~/Desktop/tst

三. 通过Excel和文本编辑器进行批量转换

⏹在Excel的单元格中预埋以下公式,批量生成命令

="echo ""「" & A1 & "」コマンドの実行開始..."""
=A1
="echo -e ""「" & A1 & "」コマンドの実行終了...\n"""

在这里插入图片描述

⏹复制B,C,D列内容,粘贴为纯文本后,在D列的文本的最后添加一个特殊符号#

  • 特殊符号不一定非得是#,此处只是为了举例
  • 添加特殊符号是为了之后替换文本的时候用
echo -e "「find ./work -type f -name *.java」コマンドの実行終了...\n"#

⏹Excel的内容复制到文本编辑器中(此处用NotePad++举例),准备替换

  • Excel的内容复制到文本编辑器之后,列与列之间默认以Tab进行分隔
  • NotePad++新建的文件默认以\r\n作为换行符,我们将Tab空格替换为\r\n从而实现了行转列

在这里插入图片描述

⏹替换之后的效果如下

在这里插入图片描述

⏹可以看到,命令与命令之间很紧凑,不便于肉眼查看
这个时候,可以将之前特意添加的#给替换为\r\n,用来给每一组命令添加分隔行

在这里插入图片描述


四. 实际执行效果

💥注意事项

  • 脚本需要通过bash命令来执行,如果通过sh命令来执行的话,echo -e无法被识别
  • 因为 sh 可能是 较早版本的 Shell(如 /bin/sh 可能是 dash),而 dash 的 echo 不支持 -e 选项。
apluser@ubuntu24-01:~$ cat search_file.sh
echo "「find ./work -type f -name *.java」コマンドの実行開始..."
find ./work -type f -name *.java
echo -e "「find ./work -type f -name *.java」コマンドの実行終了...\n"echo "「find ./work -type f -name *.html」コマンドの実行開始..."
find ./work -type f -name *.html
echo -e "「find ./work -type f -name *.html」コマンドの実行終了...\n"echo "「find ./work -type f -name *.css」コマンドの実行開始..."
find ./work -type f -name *.css
echo -e "「find ./work -type f -name *.css」コマンドの実行終了...\n"echo "「find ./work -type f -name *.js」コマンドの実行開始..."
find ./work -type f -name *.js
echo -e "「find ./work -type f -name *.js」コマンドの実行終了...\n"apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ bash search_file.sh
「find ./work -type f -name *.java」コマンドの実行開始...
./work/cbc/src/test/java/com/example/jmw/JmwApplicationTests.java
./work/cbc/src/main/java/com/example/jmw/service/MailSendFactory.java
...省略...
./work/cbc/src/main/java/com/example/jmw/entity/Product.java
./work/cbc/src/main/java/com/example/jmw/entity/Department.java
./work/cbc/src/main/java/com/example/jmw/entity/OrderInfoEntity.java
./work/cbc/src/main/java/com/example/jmw/entity/Menu.java
「find ./work -type f -name *.java」コマンドの実行終了...「find ./work -type f -name *.html」コマンドの実行開始...
./work/cbc/src/main/resources/templates/test5.html
./work/cbc/src/main/resources/templates/test31.html
...省略...
./work/cbc/src/main/resources/templates/test33.html
./work/cbc/src/main/resources/static/error/404.html
./work/cbc/src/main/resources/static/error/500.html
「find ./work -type f -name *.html」コマンドの実行終了...「find ./work -type f -name *.css」コマンドの実行開始...
./work/cbc/src/main/resources/static/css/public/jquery-ui.min.css
./work/cbc/src/main/resources/static/css/common/common.css
./work/cbc/src/main/resources/static/css/business/test2.css
./work/cbc/src/main/resources/static/css/business/test1.css
「find ./work -type f -name *.css」コマンドの実行終了...「find ./work -type f -name *.js」コマンドの実行開始...
./work/cbc/src/main/resources/static/js/public/jquery-3.6.0.min.js
./work/cbc/src/main/resources/static/js/common/commonModule.js
./work/cbc/src/main/resources/static/js/common/common.js
./work/cbc/src/main/resources/static/js/business/test2.js
./work/cbc/src/main/resources/static/js/business/test1.js
「find ./work -type f -name *.js」コマンドの実行終了...apluser@ubuntu24-01:~$

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

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

相关文章

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 小伙伴们&#xff0c;你们好呀&#xff01;今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册&#xff0c;并…

pytorch 50 大模型导出的onnx模型优化尝试

本博文基于Native-LLM-for-Android项目代码实现,具体做了以下操作: 1、尝试并实现将模型结构与权重零散的onnx模型进行合并,通过该操作实现了模型加载速度提升,大约提升了3倍 2、突破了onnxconverter_common 无法将llm模型导出为fp16的操作,基于该操作后将10g的权重降低到…

Training-free Neural Architecture Search for RNNs and Transformers(预览版本)

摘要 神经架构搜索 (NAS) 允许自动创建新的有效神经网络架构&#xff0c;为手动设计复杂架构的繁琐过程提供了替代方案。然而&#xff0c;传统的 NAS 算法速度慢&#xff0c;需要大量的计算能力。最近的研究调查了图像分类架构的无训练 NAS 指标&#xff0c;大大加快了搜索算…

c++_二叉树的介绍

内存模型 一.内存中有代码区&#xff1b;栈区&#xff1b;数据段 堆区 1、栈区存放了函数所有局部变量和形参&#xff1b; 它的局限在于&#xff1a;局部变量和形参的生存期&#xff1b;即函数返回后对象就会被回收 解决方案是&#xff1a;1&#xff09;使用全局变量 &…

②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网https://item.taobao.com/item.htm?ftt&id784749793551 网关 MS-A1-5081 MS-A1-5081 网关通过 MODBUS TCP 协议与 Modbus RTU/ASCII 协议的相互转换&#xff0c;可以将 Modbus 串口设备接入 MODBUS TCP 网络…

[网络爬虫] 动态网页抓取 — Selenium 元素定位

&#x1f31f;想系统化学习爬虫技术&#xff1f;看看这个&#xff1a;[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 在使用 Selenium 时&#xff0c;往往需要先定位到指定元素&#xff0c;然后再执行相应的操作。例如&#xff0c;再向文本输入框中输入文字之前&#xff0c;…

vue实现一个pdf在线预览,pdf选择文本并提取复制文字触发弹窗效果

[TOC] 一、文件预览 1、安装依赖包 这里安装了disjs-dist2.16版本&#xff0c;安装过程中报错缺少worker-loader npm i pdfjs-dist2.16.105 worker-loader3.0.8 2、模板部分 <template><div id"pdf-view"><canvas v-for"page in pdfPages&qu…

Java零基础入门笔记:多线程

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章…

【VUE2】第三期——样式冲突、组件通信、异步更新、自定义指令、插槽

目录 1 scoped解决样式冲突 2 data写法 3 组件通信 3.1 父子关系 3.1.1 父向子传值 props 3.1.2 子向父传值 $emit 3.2 非父子关系 3.2.1 event bus 事件总线 3.2.2 跨层级共享数据 provide&inject 4 props 4.1 介绍 4.2 props校验完整写法 5 v-model原理 …

蓝桥杯刷题周计划(第二周)

目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目题解分析 题目九题目代码题解分析 题目十题目代码题解分析 题目十一题目代码题解分…

Redis渐进式遍历数据库

目录 渐进式遍历 数据库 渐进式遍历 keys*可以一次性的把整个redis中所有key都获取到&#xff0c;这个操作是非常危险的&#xff0c;因为可能一下获取到太多的key&#xff0c;阻塞redis服务器。要想很好的获取到所有的key&#xff0c;又不想出现卡死的情况&#xff0c;就可以…

一周学会Flask3 Python Web开发-使用SQLAlchemy动态创建数据库表

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们定义了模型&#xff0c;我们可以通过sqlalchemy对象提供的create_all()方法来映射和动态创建数据库表。 因为我们用到…

android studio2024最新详解(完全小白)安装-运行第一个程序

前面我用2023最新版本的&#xff0c;死活就卡在引入依赖那里卡了两天&#xff0c;俺的崩溃谁知啊&#xff01;&#xff01; 后面我就换了个思维&#xff0c;看着网上大多的教程都是基于2022或者2020的&#xff0c;我就找了个看起来非常详细的视频&#xff0c;里面的是2020的&am…

laravel中 添加公共/通用 方法/函数

一&#xff0c;现在app 下面创建Common目录&#xff0c;然后在创建Common.php 文件 二&#xff0c;修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…

c语言笔记 函数参数的等价(上)

这三种写法在 C 语言中是等价的&#xff0c;因为它们都用于声明一个指向二维数组的指针&#xff0c;或者用于声明一个二维数组作为函数参数。它们的等价性源于 C 语言中数组和指针之间的密切关系。让我们逐一分析这三种写法&#xff1a; 在C语言中&#xff0c;当数组作为函数参…

ubuntu局域网部署stable-diffusion-webui记录

需要局域网访问&#xff0c;如下设置&#xff1a; 过程记录查看源码&#xff1a; 查看源码&#xff0c;原来修改参数&#xff1a;--server-name 故启动&#xff1a; ./webui.sh --server-name0.0.0.0 安装下载记录&#xff1a; 快速下载可设置&#xff1a; export HF_ENDPOI…

CTFHub-FastCGI协议/Redis协议

将木马进行base64编码 <?php eval($_GET[cmd]);?> 打开kali虚拟机&#xff0c;使用虚拟机中Gopherus-master工具 Gopherus-master工具安装 git clone https://github.com/tarunkant/Gopherus.git 进入工具目录 cd Gopherus 使用工具 python2 "位置" --expl…

MetaGPT发布的MGX与Devin深度对比

家人们&#xff0c;搞编程的都知道&#xff0c;工具选对了&#xff0c;效率能翻倍&#xff01;今天必须给大伙唠唠MetaGPT发布的MGX编程助手和Devin编程助手 。 先看MGX&#xff0c;简直是编程界的王炸&#xff01;它就像一个超神的虚拟开发团队&#xff0c;一堆智能助手分工明…

Git学习笔记(二)

Git学习笔记&#xff08;二&#xff09; 下载VSCode创建本地仓库推送远程仓库界面功能 使用 VSCode 进行Git仓库的项目管理 这篇文章是我学完使用 命令行终端 管理Git仓库额外学习的 文章主要用于巩固和方便后续复习 下载VSCode 可以看我这篇文章下载VSCode 创建本地仓库 …

本地fake server,

C# 制作的系统级tcp 重定向&#xff0c;整个系统只要有访问指定url&#xff0c;返回自定义内容到访问端。不局限在浏览器单一方面。 再者请理解这个图的含金量&#xff0c;服务器down机都可以模拟。 用途那就太多了&#xff0c;当然很多用途都不正当。嘿嘿 如果你很想要源代…