好书推荐 好书速递 排行榜 读书文摘

Linux Shell脚本攻略(第3版)

Linux Shell脚本攻略(第3版)
作者:[美] Clif Flynt / [印] Shantanu Tushar / [印] Sarath Lakshman
译者:门佳
出版社:人民邮电出版社
出版年:2018-03
ISBN:9787115477385
行业:计算机
浏览数:6

内容简介

Linux/GNU是一款非凡的操作系统,拥有稳定可靠且极其强大的开发环境。作为与操作系统进行沟通的原生界面,shell能够控制整个操作系统的运作,是与Linux进行交互最灵活的手段。

本书向读者展现了如何有效地利用shell完成复杂的任务。作者从shell的基础知识开始,介绍简单命令的用法、对各类文件进行操作,随后讲解文本处理、Web交互、备份、监视以及其他系统管理任务,涵盖初中高三级主题,传授脚本老手经常使用的诸多技巧。书中所有示例均基于具体任务,透彻清晰,通俗易懂。

第3版进行了全面修订,囊括Linux最新发行版新特性,增加了仓储管理、网络分组、动态调用、系统调优、容器、云等100余页篇幅的新内容,极具实用价值,让看似复杂的Linux shell脚本任务迎刃而解。

•通过脚本与Web站点交互

•编写脚本,挖掘并处理Web数据

•使用crontab实现系统备份及其他重复性任务的自动化

•创建、压缩、加密重要数据

•配置并监视以太网和无线网络

•监视并记录网络和系统的活动日志

•系统调优,实现性能优化,提高系统安全性

•鉴别资源占用大户以及网络瓶颈

•使用git或fossil实现版本控制,处理自由开源软件项目

•创建并维护Linux容器和虚拟机

......(更多)

作者简介

作者简介:

Clif Flynt

Tcl/Tk及Linux用户社区活跃分子,经常在技术会议和用户小组中发表演说。Noumena公司创始人,负责开发定制软件和举办培训课程。另著有Tcl/Tk:A Developer's Guide一书。

Sarath Lakshman

Linux天才程序员、开源软件及GNU/Linux活跃分子。SLYNUX(2005)的开发者而,Linux For You专栏作家。在Fedora、Pardus Linux、PiTiVi、Ubuntu 以及Google编程夏令营等项目中均做出了不可估量的贡献。

Shantanu Tushar

GNU/Linux用户,KDE社区重要贡献者,维护着Calligra Active(用于Tablets的KDE办公文档查看器)、Plasma Media Center以及Gluon Player。Shantanu坚信终有一天编程会变得无比轻松,每个人都会热衷于为计算机编写程序。

译者简介:

门佳

GNU/Linux深度用户,喜欢溯本求源,挖掘技术背后的来龙去脉,对程序语言设计理论、编译技术、操作系统设计与实现、Web开发等领域均有涉猎,译著包括《TCP Sockets编程》《精通JavaScript(第2版)》《Linux命令行与shell脚本编程大全(第3版)》以及本书前两版等。

......(更多)

目录

第1章 小试牛刀  1

1.1 简介  1

1.2 在终端中显示输出  2

1.2.1 预备知识  2

1.2.2 实战演练  4

1.2.3 工作原理  6

1.2.4 补充内容  6

1.3 使用变量与环境变量  7

1.3.1 预备知识  7

1.3.2 实战演练  8

1.3.3 补充内容  9

1.4 使用函数添加环境变量  11

1.4.1 实战演练  11

1.4.2 工作原理  12

1.5 使用shell进行数学运算  12

1.6 玩转文件描述符与重定向  14

1.6.1 预备知识  14

1.6.2 实战演练  15

1.6.3 工作原理  17

1.6.4 补充内容  17

1.7 数组与关联数组  19

1.7.1 预备知识  19

1.7.2 实战演练  20

1.7.3 补充内容  20

1.8 别名  21

1.8.1 实战演练  21

1.8.2 补充内容  22

1.9 采集终端信息  23

1.9.1 预备知识  23

1.9.2 实战演练  23

1.10 获取并设置日期及延时  24

1.10.1 预备知识  24

1.10.2 实战演练  25

1.10.3 工作原理  26

1.10.4 补充内容  27

1.11 调试脚本  27

1.11.1 实战演练  28

1.11.2 工作原理  29

1.11.3 补充内容  29

1.12 函数和参数  29

1.12.1 实战演练  30

1.12.2 补充内容  31

1.13 将一个命令的输出发送给另一个命令  33

1.13.1 预备知识  33

1.13.2 实战演练  34

1.13.3 补充内容  34

1.14 在不按下回车键的情况下读入n个字符  35

1.15 持续运行命令直至执行成功  36

1.15.1 实战演练  36

1.15.2 工作原理  37

1.15.3 补充内容  37

1.16 字段分隔符与迭代器  37

1.16.1 预备知识  38

1.16.2 实战演练  38

1.17 比较与测试  40

1.18 使用配置文件定制bash  43

第2 章 命令之乐  46

2.1 简介  46

2.2 用cat进行拼接  46

2.2.1 实战演练  46

2.2.2 补充内容  47

2.3 录制并回放终端会话  49

2.3.1 预备知识  49

2.3.2 实战演练  49

2.3.3 工作原理  50

2.4 查找并列出文件  50

2.4.1 预备知识  50

2.4.2 实战演练  50

2.4.3 补充内容  51

2.5 玩转xargs  58

2.5.1 预备知识  59

2.5.2 实战演练  59

2.5.3 工作原理  60

2.5.4 补充内容  60

2.6 用tr进行转换  63

2.6.1 预备知识  63

2.6.2 实战演练  64

2.6.3 工作原理  64

2.6.4 补充内容  65

2.7 校验和与核实  67

2.7.1 预备知识  68

2.7.2 实战演练  68

2.7.3 工作原理  68

2.7.4 补充内容  69

2.8 加密工具与散列  71

2.9 行排序  72

2.9.1 预备知识  72

2.9.2 实战演练  72

2.9.3 工作原理  73

2.9.4 补充内容  73

2.10 临时文件命名与随机数  76

2.10.1 实战演练  77

2.10.2 工作原理  77

2.11 分割文件与数据  77

2.11.1 工作原理  78

2.11.2 补充内容  78

2.12 根据扩展名切分文件名  80

2.12.1 实战演练  80

2.12.2 工作原理  80

2.13 多个文件的重命名与移动  82

2.13.1 预备知识  82

2.13.2 实战演练  82

2.13.3 工作原理  83

2.14 拼写检查与词典操作  84

2.14.1 实战演练  84

2.14.2 工作原理  84

2.15 交互输入自动化  85

2.15.1 预备知识  86

2.15.2 实战演练  86

2.15.3 工作原理  86

2.15.4 补充内容  87

2.16 利用并行进程加速命令执行  88

2.16.1 实战演练  88

2.16.2 工作原理  89

2.16.3 补充内容  89

2.17 检查目录以及其中的文件与子目录  89

2.17.1 预备知识  90

2.17.2 实战演练  90

第3 章 以文件之名  92

3.1 简介  92

3.2 生成任意大小的文件  92

3.3 文本文件的交集与差集  94

3.3.1 预备知识  94

3.3.2 实战演练  94

3.3.3 工作原理  96

3.4 查找并删除重复文件  97

3.4.1 预备知识  97

3.4.2 实战演练  97

3.4.3 工作原理  98

3.5 文件权限、所有权与粘滞位  99

3.5.1 实战演练  101

3.5.2 补充内容  102

3.6 将文件设置为不可修改  104

3.6.1 预备知识  104

3.6.2 实战演练  104

3.7 批量生成空白文件  105

3.7.1 预备知识  105

3.7.2 实战演练  105

3.8 查找符号链接及其指向目标  106

3.8.1 实战演练  106

3.8.2 工作原理  107

3.9 枚举文件类型统计信息  107

3.9.1 预备知识  107

3.9.2 实战演练  107

3.9.3 工作原理  108

3.10 使用环回文件  109

3.10.1 实战演练  110

3.10.2 工作原理  111

3.10.3 补充内容  111

3.11 生成ISO及混合型ISO文件  113

3.11.1 预备知识  113

3.11.2 实战演练  113

3.11.3 补充内容  114

3.12 查找并修补文件差异  115

3.12.1 实战演练  115

3.12.2 补充内容  117

3.13 使用head与tail打印文件的前10行和后10行  117

3.14 只列出目录的各种方法  120

3.14.1 预备知识  120

3.14.2 实战演练  120

3.14.3 工作原理  120

3.15 在命令行中使用pushd和popd实现快速定位  121

3.15.1 预备知识  121

3.15.2 实战演练  121

3.15.3 补充内容  122

3.16 统计文件的行数、单词数和字符数  122

3.17 打印目录树  123

3.17.1 预备知识  123

3.17.2 实战演练  123

3.17.3 补充内容  124

3.18 处理视频与图像文件  125

3.18.1 预备知识  125

3.18.2 实战演练  126

第4 章 让文本飞  128

4.1 简介  128

4.2 使用正则表达式  128

4.2.1 实战演练  129

4.2.2 工作原理  131

4.2.3 补充内容  131

4.3 使用grep在文件中搜索文本  132

4.3.1 实战演练  132

4.3.2 补充内容  134

4.4 使用cut按列切分文件  138

4.4.1 实战演练  138

4.4.2 补充内容  139

4.5 使用sed替换文本  140

4.5.1 实战演练  140

4.5.2 补充内容  141

4.6 使用awk进行高级文本处理  144

4.6.1 预备知识  144

4.6.2 实战演练  144

4.6.3 工作原理  144

4.6.4 补充内容  146

4.7 统计特定文件中的词频  149

4.7.1 预备知识  149

4.7.2 实战演练  150

4.7.3 工作原理  150

4.7.4 参考  151

4.8 压缩或解压缩JavaScript  151

4.8.1 预备知识  151

4.8.2 实战演练  152

4.8.3 工作原理  152

4.8.4 参考  153

4.9 按列合并多个文件  153

4.9.1 实战演练  154

4.9.2 参考  154

4.10 打印文件或行中的第n个单词或列  154

4.10.1 实战演练  154

4.10.2 参考  155

4.11 打印指定行或模式之间的文本  155

4.11.1 预备知识  155

4.11.2 实战演练  155

4.11.3 参考  156

4.12 以逆序形式打印行  156

4.12.1 预备知识  156

4.12.2 实战演练  156

4.12.3 工作原理  157

4.13 解析文本中的电子邮件地址和URL  157

4.13.1 实战演练  157

4.13.2 工作原理  158

4.13.3 参考  158

4.14 删除文件中包含特定单词的句子  158

4.14.1 预备知识  158

4.14.2 实战演练  159

4.14.3 工作原理  159

4.14.4 参考  159

4.15 对目录中的所有文件进行文本替换  159

4.15.1 实战演练  160

4.15.2 工作原理  160

4.15.3 补充内容  160

4.16 文本切片与参数操作  160

4.16.1 实战演练  160

4.16.2 参考  161

第5 章 一团乱麻?没这回事!  162

5.1 简介  162

5.2 Web 页面下载  162

5.2.1 预备知识  162

5.2.2 实战演练  163

5.2.3 工作原理  163

5.2.4 补充内容  164

5.3 以纯文本形式下载页面  165

5.3.1 预备知识  165

5.3.2 实战演练  165

5.4 cURL入门  166

5.4.1 预备知识  166

5.4.2 实战演练  166

5.4.3 工作原理  167

5.4.4 补充内容  167

5.4.5 参考  169

5.5 从命令行访问未读的Gmail邮件  170

5.5.1 实战演练  170

5.5.2 工作原理  170

5.5.3 参考  171

5.6 解析网站数据  171

5.6.1 实战演练  171

5.6.2 工作原理  172

5.6.3 参考  172

5.7 图片爬取器及下载工具  172

5.7.1 实战演练  172

5.7.2 工作原理  173

5.7.3 参考  174

5.8 网页相册生成器  174

5.8.1 预备知识  175

5.8.2 实战演练  175

5.8.3 工作原理  176

5.8.4 参考  176

5.9 Twitter命令行客户端  176

5.9.1 预备知识  177

5.9.2 实战演练  177

5.9.3 工作原理  178

5.9.4 参考  179

5.10 通过Web服务器查询单词含义  179

5.10.1 预备知识  179

5.10.2 实战演练  180

5.10.3 工作原理  180

5.10.4 参考  180

5.11 查找网站中的无效链接  181

5.11.1 预备知识  181

5.11.2 实战演练  181

5.11.3 工作原理  182

5.11.4 参考  182

5.12 跟踪网站变动  182

5.12.1 预备知识  182

5.12.2 实战演练  182

5.12.3 工作原理  184

5.12.4 参考  184

5.13 发送Web页面并读取响应  184

5.13.1 预备知识  184

5.13.2 实战演练  185

5.13.3 参考  186

5.14 从Internet下载视频  186

5.14.1 预备知识  186

5.14.2 实战演练  186

5.14.3 工作原理  186

5.15 使用OTS汇总文本  187

5.15.1 预备知识  187

5.15.2 实战演练  187

5.15.3 工作原理  187

5.16 在命令行中翻译文本  187

5.16.1 预备知识  188

5.16.2 实战演练  188

5.16.3 工作原理  188

第6 章 仓储管理  189

6.1 简介  189

6.2 创建新的git仓库  190

6.2.1 预备知识  190

6.2.2 实战演练  190

6.2.3 工作原理  190

6.3 克隆远程git仓库  191

6.4 使用git添加与提交变更  191

6.5 使用git创建与合并分支  192

6.5.1 预备知识  193

6.5.2 实战演练  193

6.5.3 工作原理  193

6.5.4 补充内容  193

6.6 分享工作成果  194

6.7 推送分支  196

6.8 检查git仓库状态  197

6.8.1 实战演练  197

6.8.2 工作原理  198

6.9 查看git历史记录  198

6.10 查找bug  198

6.10.1 实战演练  199

6.10.2 补充内容  199

6.11 快照标签  200

6.12 提交信息规范  201

6.13 使用fossil  202

6.13.1 预备知识  202

6.13.2 实战演练  202

6.14 创建新的fossil仓库  202

6.14.1 实战演练  203

6.14.2 工作原理  203

6.14.3 补充内容  203

6.15 克隆远程fossil仓库  204

6.15.1 实战演练  204

6.15.2 工作原理  204

6.16 打开fossil项目  204

6.16.1 实战演练  204

6.16.2 工作原理  205

6.16.3 补充内容  205

6.17 使用fossil添加与提交变更  205

6.17.1 实战演练  205

6.17.2 补充内容  206

6.18 使用fossil分支与fork  206

6.18.1 实战演练  207

6.18.2 工作原理  207

6.18.3 补充内容  208

6.19 使用fossil分享工作成果  208

6.19.1 实战演练  208

6.19.2 工作原理  209

6.20 更新本地fossil仓库  209

6.21 检查fossil仓库状态  209

6.22 查看fossil历史记录  210

第7 章 B 计划  215

7.1 简介  215

7.2 使用tar归档  215

7.2.1 预备知识  215

7.2.2 实战演练  216

7.2.3 工作原理  216

7.2.4 补充内容  216

7.2.5 参考  220

7.3 使用cpio归档  221

7.3.1 实战演练  221

7.3.2 工作原理  221

7.4 使用gzip压缩数据  222

7.4.1 实战演练  222

7.4.2 补充内容  223

7.4.3 参考  225

7.5 使用zip归档及压缩  225

7.5.1 实战演练  225

7.5.2 工作原理  226

7.6 更快的归档工具pbzip2  226

7.6.1 预备知识  226

7.6.2 实战演练  226

7.6.3 工作原理  227

7.6.4 补充内容  227

7.7 创建压缩文件系统  228

7.7.1 预备知识  228

7.7.2 实战演练  228

7.7.3 补充内容  229

7.8 使用rsync备份系统快照  229

7.8.1 实战演练  229

7.8.2 工作原理  230

7.8.3 补充内容  231

7.9 差异化归档  232

7.9.1 实战演练  232

7.9.2 工作原理  232

7.10 使用fsarchiver创建全盘镜像  233

7.10.1 预备知识  233

7.10.2 实战演练  233

7.10.3 工作原理  234

第8 章 无网不利  235

8.1 简介  235

8.2 网络设置  236

8.2.1 预备知识  236

8.2.2 实战演练  236

8.2.3 补充内容  237

8.2.4 参考  241

8.3 ping!  241

8.3.1 实战演练  241

8.3.2 补充内容  242

8.4 跟踪IP路由  244

8.5 列出网络中所有的活动主机  245

8.5.1 预备知识  245

8.5.2 实战演练  245

8.5.3 工作原理  245

8.5.4 补充内容  246

8.5.5 参考  247

8.6 使用SSH在远程主机上执行命令  247

8.6.1 预备知识  247

8.6.2 实战演练  248

8.6.3 补充内容  249

8.7 在远程主机上执行图形化命令  250

8.7.1 实战演练  250

8.7.2 参考  251

8.8 通过网络传输文件  251

8.8.1 预备知识  251

8.8.2 实战演练  251

8.8.3 补充内容  252

8.8.4 参考  254

8.9 连接无线网络  254

8.9.1 预备知识  254

8.9.2 实战演练  254

8.9.3 工作原理  255

8.9.4 参考  256

8.10 实现SSH的无密码自动登录  256

8.10.1 预备知识  256

8.10.2 实战演练  256

8.11 使用SSH实现端口转发  257

8.11.1 实战演练  257

8.11.2 补充内容  258

8.12 在本地挂载点上挂载远程驱动器  259

8.12.1 预备知识  259

8.12.2 实战演练  259

8.12.3 参考  259

8.13 分析网络流量与端口  259

8.13.1 预备知识  259

8.13.2 实战演练  260

8.13.3 工作原理  260

8.13.4 补充内容  261

8.14 测量网络带宽  261

8.15 创建套接字  262

8.15.1 预备知识  262

8.15.2 实战演练  262

8.15.3 补充内容  263

8.15.4 工作原理  263

8.16 搭建网桥  264

8.16.1 预备知识  264

8.16.2 实战演练  264

8.17 Internet连接共享  265

8.17.1 预备知识  265

8.17.2 实战演练  265

8.17.3 工作原理  266

8.18 使用iptables架设简易防火墙  266

8.18.1 实战演练  267

8.18.2 工作原理  267

8.18.3 补充内容  268

8.19 创建虚拟私有网络  268

8.19.1 预备知识  268

8.19.2 实战演练  269

第9 章 明察秋毫  274

9.1 简介  274

9.2 监视磁盘使用情况  274

9.2.1 预备知识  275

9.2.2 实战演练  275

9.2.3 补充内容  275

9.3 计算命令执行时间  279

9.3.1 实战演练  279

9.3.2 工作原理  281

9.4 收集登录用户、启动日志及启动故障的相关信息  281

9.4.1 预备知识  282

9.4.2 实战演练  282

9.5 列出1小时内占用CPU最多的10个进程  284

9.5.1 预备知识  284

9.5.2 实战演练  284

9.5.3 工作原理  285

9.5.4 参考  286

9.6 使用watch监视命令输出  286

9.6.1 实战演练  286

9.6.2 补充内容  286

9.7 记录文件及目录访问情况  287

9.7.1 预备知识  287

9.7.2 实战演练  287

9.7.3 工作原理  287

9.8 使用syslog记录日志  288

9.8.1 预备知识  288

9.8.2 实战演练  289

9.8.3 参考  289

9.9 使用logrotate管理日志文件  290

9.9.1 预备知识  290

9.9.2 实战演练  290

9.9.3 工作原理  290

9.10 通过监视用户登录找出入侵者  291

9.10.1 预备知识  291

9.10.2 实战演练  291

9.10.3 工作原理  293

9.11 监视远程磁盘的健康情况  293

9.11.1 预备知识  293

9.11.2 实战演练  294

9.11.3 工作原理  295

9.11.4 参考  295

9.12 确定系统中用户的活跃时段  295

9.12.1 预备知识  296

9.12.2 实战演练  296

9.12.3 工作原理  297

9.13 电源使用情况的测量与优化  297

9.13.1 预备知识  298

9.13.2 实战演练  298

9.14 监视磁盘活动  298

9.14.1 预备知识  298

9.14.2 实战演练  299

9.15 检查磁盘及文件系统错误  299

9.15.1 预备知识  299

9.15.2 实战演练  299

9.15.3 工作原理  300

9.16 检查磁盘健康情况  300

9.16.1 预备知识  301

9.16.2 实战演练  301

9.16.3 工作原理  303

9.17 获取磁盘统计数据  303

9.17.1 预备知识  303

9.17.2 实战演练  303

9.17.3 工作原理  304

9.17.4 补充内容  304

第10 章 管理重任  305

10.1 简介  305

10.2 收集进程信息  305

10.2.1 预备知识  305

10.2.2 实战演练  306

10.2.3 工作原理  307

10.2.4 补充内容  307

10.2.5 参考  312

10.3 which、whereis、whatis与file  312

10.4 杀死进程以及发送和响应信号  313

10.4.1 预备知识  313

10.4.2 实战演练  313

10.4.3 补充内容  314

10.5 向用户终端发送消息  316

10.5.1 预备知识  316

10.5.2 实战演练  317

10.6 /proc文件系统  318

10.7 收集系统信息  319

10.8 使用cron进行调度  321

10.8.1 预备知识  321

10.8.2 实战演练  321

10.8.3 工作原理  322

10.8.4 补充内容  323

10.9 数据库的形式及用法  324

10.9.1 预备知识  324

10.9.2 实战演练  325

10.9.3 补充内容  325

10.10 读写SQLite数据库  326

10.10.1 预备知识  326

10.10.2 实战演练  327

10.10.3 工作原理  327

10.10.4 补充内容  327

10.11 读写MySQL数据库  328

10.11.1 预备知识  329

10.11.2 实战演练  329

10.11.3 工作原理  332

10.12 用户管理脚本  333

10.12.1 实战演练  333

10.12.2 工作原理  335

10.13 图像文件的批量缩放及格式转换  336

10.13.1 预备知识  336

10.13.2 实战演练  336

10.13.3 工作原理  338

10.13.4 参考  339

10.14 终端截图  339

10.14.1 预备知识  339

10.14.2 实战演练  340

10.15 集中管理多个终端  340

10.15.1 预备知识  340

10.15.2 实战演练  341

第11 章 觅迹寻踪  342

11.1 简介  342

11.2 使用tcpdump跟踪分组  342

11.2.1 预备知识  342

11.2.2 实战演练  343

11.2.3 工作原理  345

11.3 使用ngrep查找分组  346

11.3.1 预备知识  346

11.3.2 实战演练  346

11.3.3 工作原理  347

11.3.4 补充内容  347

11.4 使用ip跟踪网络路由  347

11.4.1 预备知识  347

11.4.2 实战演练  348

11.4.3 工作原理  349

11.5 使用strace跟踪系统调用  349

11.5.1 预备知识  350

11.5.2 实战演练  350

11.5.3 工作原理  351

11.6 使用ltrace跟踪动态库函数  352

11.6.1 预备知识  352

11.6.2 实战演练  352

11.6.3 工作原理  353

11.6.4 补充内容  353

第12 章 系统调优  355

12.1 简介  355

12.2 识别服务  356

12.2.1 预备知识  356

12.2.2 实战演练  357

12.2.3 补充内容  359

12.3 使用ss收集套接字数据  360

12.3.1 预备知识  360

12.3.2 实战演练  360

12.3.3 工作原理  361

12.4 使用dstat收集系统I/O使用情况  362

12.4.1 预备知识  362

12.4.2 实战演练  362

12.4.3 工作原理  363

12.4.4 补充内容  363

12.5 使用pidstat找出资源占用大户  364

12.5.1 预备知识  364

12.5.2 实战演练  364

12.5.3 工作原理  364

12.6 使用sysctl调优Linux内核  365

12.6.1 预备知识  365

12.6.2 实战演练  365

12.6.3 工作原理  366

12.6.4 补充内容  366

12.7 使用配置文件调优Linux系统  366

12.7.1 预备知识  367

12.7.2 实战演练  367

12.7.3 工作原理  367

12.8 使用nice命令更改调度器优先级  367

12.8.1 实战演练  367

12.8.2 工作原理  368

12.8.3 补充内容  368

第13 章 在云端  369

13.1 简介  369

13.2 使用Linux容器  370

13.2.1 预备知识  370

13.2.2 实战演练  371

13.2.3 工作原理  377

13.3 使用Docker  377

13.3.1 预备知识  377

13.3.2 实战演练  378

13.3.3 工作原理  381

13.4 在Linux中使用虚拟机  381

13.4.1 预备知识  381

13.4.2 实战演练  382

13.5 云端的Linux  382

13.5.1 预备知识  382

13.5.2 实战演练  384

13.5.3 补充内容  384

......(更多)

读书文摘

有一个巧妙的方法可以一方面将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。这一切都可以使用tee来实现。

%-5s指明一个格式为左对齐且宽度为5的字符串替代(-表示左对齐,不用-表示右对齐。.2指定保留2个小数位)

......(更多)

猜你喜欢

点击查看