终端(cmd,bash,powershell) 命令换行总结

2023-11-05

场景解析

我在使用Windows批处理(cmd/bat)过程中遇到了单条命令过长的问题.
为了使脚本书写工整,需要将单条执行的命令跨行书写.如下面代码:

echo Hello Code World

现在我想将CodeWorld切分到第二行和第三行时,需要在前两行的行末添加尖括号^.
注意尖括号后面不能有其他字符(包括空格),否则不生效
如果添加了其他字符的话,尖括号前面的空格会被打印出来.

echo Hello ^
Code ^
World

这时终端会将这三行中的代码解析为一行命令并加以执行.

使用示例

下面是我使用mvn命令生成maven工程的代码:

; cmd下单条 Maven 命令跨行书写
mvn archetype:generate ^
-DgroupId=com.example ^
-DartifactId=hutoolTest ^
-DarchetypeArtifactId=maven-archetype-quickstart ^
-DinteractiveMode=false
引申

同理在PowerShell下要想实现同样的效果需要用到`反引号.

# powershell 下单条 Maven 命令跨行书写
mvn archetype:generate `
-DgroupId=com.example `
-DartifactId=hutoolTest `
-DarchetypeArtifactId=maven-archetype-quickstart `
-DinteractiveMode=false

Bash 下实现同样的效果则要用到\反斜杠.

# bash 下单条 Maven 命令跨行书写
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=hutoolTest \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
命令跨行书写 实现原理

之前一直不明白为什么通过行尾添加^,`,\可以实现命令的跨行书写,可能是因为我的学习开端不是很好吧,一开始就找错了方向.其实这里的三个字符分别为 cmd,powershellbash脚本语言中的转义字符.

在所有脚本语言中,都会有一些控制字符,它们无法像普通字符一样可以直接被表示出来.比如最常见的换行符制表符等等.

为了能够将它们表示出来,所有编程语言中都会设置转义字符来对那些无法直接表示的字符进行处理.

比如换行符:
  • cmd中的表示方式为^n,
  • 而在powershell中的表示方式为`n;
  • bash中的表示方式为 \n

那么我们的转义字符放在每行的行尾(后面不能有其他字符包括换行符)又可以表示什么意思呢?

转义字符放在行尾表示转义换行符

这里我们以bash举例

我们可以通过转义字符\n来表示换行符,同时我们也可以使用回车键表示换行符,通过回车键表示的换行符如果不加设置的话其实是无法直接显示的,但是会表现为文本的换行.

如果我们不希望终端解析通过回车键实现的换行符为其本身的意思的话,则需要在每一行的行尾也就是换行符之前添加转义字符来转义换行符,转义后的换行符不再表示为换行的意思,而是退化成为了一个普通的空白字符.

换行符在终端解释器中会被解析为命令的结束,但是如果在添加了转义字符后,原本的换行符不再表示其命令结束的 含义,而是退化为了一个空白字符,这里的空白字符不能认为它和空格的作用是一样的.

使用价值分析

其实这段解析本身用处并不大,我们在生活中也不会到处用到单条命令的跨行书写问题,本身有强迫症,希望能够书写工整的脚本语言的同学应该是个福音吧.

参考资料

Split long commands in multiple lines through Windows batch file

bat单条命令跨多行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

终端(cmd,bash,powershell) 命令换行总结 的相关文章

随机推荐

  • elementPlus自动按需导入图标

    最近在使用Vue3重构自己的项目 需要用到elementPlus里面的图标 vite中已经配置了elementPlus中的组件自动按需引入 看看图标引入的相关文档 没道理为了图标又全局引入elementPlus吧 于是就有了图标自动按需引入
  • es or查询

    跨索引查询 SearchRequest request new SearchRequest index1 index2 想实现类似于 select from table where a 1 and b 1 or startTime gt 2
  • 数据结构与算法(十)图的入门

    图的实际应用 在现实生活中 有许多应用场景会包含很多点以及点点之间的连接 而这些应用场景我们都可以用即将要学习的图这种数据结构去解决 地图 我们生活中经常使用的地图 基本上是由城市以及连接城市的道路组成 如果我们把城市看做是一个一个的点 把
  • 传输层的TCP和UDP

    TCP IP 中有两个具有代表性的传输层协议 分别是 TCP 和 UDP TCP 是面向连接的 可靠的流协议 流就是指不间断的数据结构 当应用程序采用 TCP 发送消息时 虽然可以保证发送的顺序 但还是犹如没有任何间隔的数据流发送给接收端
  • 【MySQL SQL语句】DROP TABLE简述

    标准语法 DROP TEMPORARY TABLE IF EXISTS tbl name tbl name RESTRICT CASCADE DROP TABLE 删除一个或多个表 你必须对每个表具有DROP权限 注意 使用此语句时要小心操
  • 打开Vue项目时出现“error:03000086:digital envelope routines::initialization error”的解决方法

    首先看用 VSCode 打开 Vue项目 清除 npm 缓存 因为 npm 有缓存时 常常出现安装依赖不成功的现象 并且一旦出现问题 报错信息很完善 但根据报错信息一项一项去解决 却很容易陷入解决不了关键问题的死循环当中 找不出原因 控制台
  • 瑞芯微RK3128的gpio控制--输入输出和中断

    第一章 gpio的dts设置 1 输出引脚 reset gpios lt gpio0 GPIO D1 GPIO ACTIVE HIGH gt 以上参数分别对应 引脚的名称 第几组gpio 第几个引脚 工作模式 注 以上配置对应为 GPIO0
  • 20.状态模式

    状态模式 一 状态模式 1 状态模式 1 状态模式 State Pattern 它主要用来解决对象在多种状态转换时 需要对外输出不同的行为的问题 状态和行为是一一对应的 状态之间可以相互转换 2 当一个对象的内在状态改变时 允许改变其行为
  • NodeJs创建应用基本流程

    1 创建根目录 2 初始化package json npm init y 3 创建入口文件app js var express require express var path require path var app express ap
  • 【LeetCode】55. 跳跃游戏(给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。)、45. 跳跃游戏 II

    55 跳跃游戏 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个位置 示例 1 输入 2 3 1 1 4 输出 true 解释 从位置 0 到 1 跳 1 步 然
  • java.lang.IndexOutOfBoundsException: Index: 6, Size: 6异常出现的可能原因

    我出现这个异常的情况是 xml中修改了sql语句 然后调用接口时报了这个异常 1 首选确认写的sql无误 在数据库中直接查询 能够成功 2 我的解决方法和问题所在是 修改了sql语句 比如说原来的sql中查出了A字段 和这个sql对应的实体
  • 一、Conflux 网页钱包创建

    相信每一位新加入的小伙伴都有一个疑问 去中心化的钱包到底是什么 如何拥有一个自己钱包 如何使用这个钱包吧 下面我将会为大家讲解如何创建钱包 导入钱包 使用钱包三个方面讲解下 一 创建钱包 首先大家进入钱包网站登录页面 大家可以将该网址收藏
  • JVM 类加载机制、双亲委派

    JVM类加载的步骤 加载 gt 连接 gt 初始化 gt 使用 gt 卸载 其中连接包括 验证 gt 准备 gt 解析三个阶段 下面介绍每个部分的作用 加载 加载是类加载过程中的一个阶段 这个阶段会在内存中生成一个代表这个类的 java l
  • 做视频剪辑可以在哪里接单赚钱?

    如果你自己会一点剪辑技术 想赚点钱还是挺容易的 可以接单剪辑视频 可以做视频账号等等 不说轻松月入过万 每天100 300还是可以做到的 那会视频剪辑可以通过哪些方式赚钱呢 有哪些渠道呢 今天这期内容大周花了一晚上总结了一些赚钱的渠道 分享
  • vue axios跨域 Request Method: OPTIONS问题

    今天做跨域登录功能遇到这个问题 后端已做跨域处理 当跨域请求为post时候 请求的method变为了options 其实跨域分为 简单跨域请求和复杂跨域请求 简单跨域请求是不会发送options请求的 复杂跨域请求会发送一个预检请求opti
  • spring学习笔记(20)数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中 往往是一台 或多台 服务器向无数客户程序提供服务 当服务器查询数据库获取数据时 如果没有采用必要的隔离机制 可能会存在数据库事务的并发问题 下面是一些常见的并发问题分类 1 第一类丢失更新 撤销一个事务 其
  • 集群之间文件同步(for Linux)(三)

    1 准备工作 1 1 防护墙设置 1 关闭各主机的防火墙 systemctl stop firewalld 2 禁止防火墙开机自启动 systemctl disable firewalld 1 3 重启服务 reboot 1 4 查看防火墙
  • listview的divider边距

    今天需要设置listview的divider 这个divider是带边距的 一开始想使用一个view做边距 但是需要控制这个view的显示 还要改adapter 很麻烦 其实listview的divider就可以做到 但是这个divider
  • 徐州一姑娘写的(女孩看了是自省,男孩看了是激励)

    别嫌文章长 看完你肯定想看第二遍 女孩看了是自省 男孩看了是激励 最经典的话 要是我的男人真的就没那本事 我就忍了 弄不好他有了本事 我就没了他呢 他没逼我长成曼玉嘉欣 我没理由逼他盖过李嘉诚 OK 不废话了 开始 1 我在想 为什么女性朋
  • 终端(cmd,bash,powershell) 命令换行总结

    场景解析 我在使用Windows批处理 cmd bat 过程中遇到了单条命令过长的问题 为了使脚本书写工整 需要将单条执行的命令跨行书写 如下面代码 echo Hello Code World 现在我想将Code和World切分到第二行和第