Linux 一条长命令占用多行
前言
考察下面的脚本:
|
1
|
emcc -o ./dist/test.html --shell-file ./tmp.html --source-map-base dist -O3 -g4 --source-map-base dist -s MODULARIZE=1 -s "EXPORT_NAME=\"Test\"" -s USE_SDL=2 -s LEGACY_GL_EMULATION=1 --pre-js ./pre.js --post-js ./post.js --cpuprofiler --memoryprofiler --threadprofilermain.cpp |
这里在调用 emcc 进行 WebAssembly 编译时,组织了很多参数。整个命令都在一行之中,不是很好阅读和维护。
换行
可通过加 \ 的方式来进行换行拆分。
改造后看起来像这样,一个参数占一行:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
emcc -o ./dist/test.html\ --shell-file ./tmp.html\ --source-map-base dist\ -O3\ -g4\ --source-map-base dist\ -s MODULARIZE=1\ -s "EXPORT_NAME=\"Test\""\ -s USE_SDL=2\ -s LEGACY_GL_EMULATION=1\ --pre-js ./pre.js\ --post-js ./post.js\ --cpuprofiler\ --memoryprofiler\ --threadprofiler\ main.cpp |
注释
通过 \(backslash) 换行后,整体阅读体验好了很多。进一步,我们想要为每个参数添加注释,发现不能简单地这样来:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
emcc -o ./dist/test.html\ # 目标文件 --shell-file ./tmp.html\ # 模板文件 --source-map-base dist\ -O3\ -g4\ --source-map-base dist\ -s MODULARIZE=1\ -s "EXPORT_NAME=\"Test\""\ -s USE_SDL=2\ -s LEGACY_GL_EMULATION=1\ --pre-js ./pre.js\ --post-js ./post.js\ --cpuprofiler\ --memoryprofiler\ --threadprofiler\ main.cpp |
这样会导致整个 shell 脚本解析失败。
实测发现,也不能这样:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
emcc -o\ # 目标文件 ./dist/test.html\ # 模板文件 --shell-file ./tmp.html\ --source-map-base dist\ -O3\ -g4\ --source-map-base dist\ -s MODULARIZE=1\ -s "EXPORT_NAME=\"Test\""\ -s USE_SDL=2\ -s LEGACY_GL_EMULATION=1\ --pre-js ./pre.js\ --post-js ./post.js\ --cpuprofiler\ --memoryprofiler\ --threadprofiler\ main.cpp |
同样会导致解析失败。
说到底,通过 \ 拆分的命令,只是呈现上变成了多行,其中插入的注释是会破坏掉语义的。
但也不是没办法添加注释了,几经周转发现如下写法是可行的:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
emcc -o ./dist/test.html `# 目标文件` \ --shell-file ./tmp.html `# 模板文件` \ --source-map-base dist `# source map 根路径` \ -O3 `# 优化级别` \ -g4 `# 生成 debug 信息` \ --source-map-base dist\ `# -s MODULARIZE=1\` -s "EXPORT_NAME=\"Test\""\ -s USE_SDL=2\ -s LEGACY_GL_EMULATION=1\ --pre-js ./pre.js\ --post-js ./post.js\ --cpuprofiler\ --memoryprofiler\ --threadprofiler\ main.cpp |
即通过 `(backtick) 来包裹我们的注释,就不会破坏掉脚本的语义了,能够正确解析执行。
进一步,解决了注释的问题,如果我们不想要某一行,同时又不想删除,可以像下面这样来注释:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
emcc -o ./dist/test.html `# 目标文件` \ --shell-file ./tmp.html `# 模板文件` \ --source-map-base dist `# source map 根路径` \ -O3 `# 优化级别` \ -g4 `# 生成 debug 信息` \ --source-map-base dist\ -s MODULARIZE=1\ -s "EXPORT_NAME=\"Test\""\ -s USE_SDL=2\ -s LEGACY_GL_EMULATION=1\ `# --pre-js ./pre.js`\ --post-js ./post.js\ --cpuprofiler\ `# --threadprofiler`\ --memoryprofiler\ main.cpp |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
转载自:https://www.jb51.net/article/165139.htm
Linux 一条长命令占用多行的更多相关文章
- linux 添加常用长命令别名
## 设置linux下常用命令别名,提高效率 将要使用的命令别名写入到~/.bashrc文件,通过source ~/.bashrc命令使变更生效 alias sst='systemctl status ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- linux三剑客之sed命令
一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- Linux 一条命令杀死占用端口的所有进程
Linux 一条命令杀死占用端口的所有进程 2018年05月28日 19:43:05 gq97 阅读数 7655更多 分类专栏: Linux 版权声明:本文为博主原创文章,遵循CC 4.0 BY- ...
- Linux 性能监控之命令行工具
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
- 显示器 Linux 性能 18 (一个命令行工具传递)
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...
- 【No.2】监控Linux性能25个命令行工具
接着上一篇博文继续 [No.1]监控Linux性能25个命令行工具 10:mpstat -- 显示每个CPU的占用情况 该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一 ...
- 【No.1】监控Linux性能25个命令行工具
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?通过以下命令或者工具可以快速定位 top vmstat lsof tcpdump netsta ...
- 【Linux】1、命令行及命令参数
命令行及命令参数 文章目录 命令行及命令参数 1.命令行提示符 2.命令和命令参数 简单的命令 date ls 命令参数 短参数(一个字母) 长参数(多个字母) 参数的值 其它参数 3.小结 4.参考 ...
随机推荐
- matlab安装与使用
Matlab安装和使用 百度网盘连接:https://pan.baidu.com/s/1aHPeAkNofCuwyYopnva4Mg 提取码:ci96 下载完成后: 将R2017b_win64_dvd ...
- OpenWrt 中查看 Flash RAM CPU 信息
OpenWrt 中查看 Flash RAM CPU 信息 来源 https://blog.csdn.net/mcusun2000/article/details/51130434 硬件: QCA95 ...
- vue 自定义image组件
介绍 1:当图片加载失败时,给出错误提示. 2:当图片加载中时,给出加载提示. 3:图片处理模式:等比缩放/裁剪/填充/... 1.图片加载状态处理 通过给图片绑定load事件与error事件处理函数 ...
- border-radius圆角属性
border-radius圆角 当盒子的宽高一样时,设置盒子的border-radius为50%,得到一个圆形 border-radius: 20px 30px 200px 200px; 只写一个值: ...
- requests模块 简单使用
目录 requests模块 简单使用 Anaconda简单了解 简单了解 requests模块 使用requests模块 爬取搜狗首页源码数据 实现一个简易的网页采集器 解决乱码问题 解决UA检测问题 ...
- 如何使用NPM?CNPM又是什么?
背景介绍 什么是npm? npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等), NPM是随同NodeJS一起安装的包管理工具 ...
- python下调用c语言代码
1)首先,创建一个.c文件,其大体内容如下: 2 #include <Python.h> 99 char * extract(char * path) ...
- vuex页面刷新数据丢失的解决办法
在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 原因: 因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例 ...
- python3实现unix域协议(tcp、udp)通讯
socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIXDomain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loopb ...
- 学习python的日常
今天是开始正式接触python语言的第一天,然后来自前辈的知道开始了在学习过程当中用博客来记录自己的学习历程,以供自己更快地掌握这门编程语言. 大概的总结一下的话,还是按照我的编程的习惯,要学写代码, ...