发布了文章2020-06-29
我们写代码或者文档时,经常需要在多行的行首或者行尾添加同样的内容,手动一行行操作显然效率很低,做这样的事情有方便的技巧。 案例一 把 {代码...} 改成 {代码...} 注释掉一段代码是非常常用的操作,很多人都知道如何操作,直接替换即可: {代码...} # 后有一个空...
发布了文章2017-11-19
树莓派 3 自带的有线网卡是 100M 的,无线网卡是 72M 的,都比较慢。想提升网速的话,最直接的方法是使用 usb 网卡,千兆的有线网卡或者 450M 以上的 2.4GHz 无线网卡或者 5GHz 无线网卡。但因为树莓派 3 的 usb 接口是 2.0 的,而且 tf 卡也要共享带宽,所以也提升...
发布了文章2017-09-29
作为一种重要的测试方法,单元测试在很多种编程语言程序测试中起到举重轻重的作用。但不幸的是,单元测试基本不适用于 shell 脚本。并不是说 shell 脚本不能被单元测试,而是说单元测试能测试出来的问题很少,投入却很大。为了让 shell 脚本能被单元测试,50 行的代...
赞了文章2017-09-21
剪切/拼接视频文件是一种常见需求。在线视频网站现在往往将一个视频文件分割成 n 段,以减少流量消耗。使用 DownloadHelper/DownThemAll 这类工具下载下来的往往就是分割后的文件。能实现剪切/拼接视频文件的工具多种多样,但往往都需要进行视频重编码(transcoding...
发布了文章2017-09-20
因为 shell 脚本语法比较灵活,写 shell 脚本的开发者熟悉的编程语言也有较大差异,大家很容易写出风格迥异的代码出来。如果只有自己一个人用还好,如果是大家合作开发同一个项目,代码风格不同就会造成不小的麻烦。所以约定一个代码风格是很有必要的。
回答了问题2017-09-18
不知道你遇到了什么问题。 我下载 Distribution version 的代码,然后解压后进去直接运行 make 即可正常编译,gcc 版本是 7.2.0。
发布了文章2017-09-17
WSL 从最初功能不全 bug 遍地都是,到现在除了少数几个比较顽固的 bug 外,基本足以正常使用了。但自带终端模拟器的体验依然非常糟糕,而且在可以预期的未来都不会有太大的长进了。我是从去年 8 月开始开发 wsl-terminal(中文页面)的,期间因为想不到可以添加什么...
发布了文章2017-09-05
导读 本文将讲解一些比较简单的 zsh 脚本实例。 实例一:复制一个目录的目录结构 功能: 将一个目录及它下边的所有目录复制到另一个目录中(即创建同名目录),但不复制目录下的其他类型文件。 例子: {代码...} 思路: 首先需要先将 src 目录下的目录名筛选出来,可...
发布了文章2017-09-04
除了 zsh/mathfunc、zsh/net/socket、zsh/net/tcp,zsh 还内置了一些其他的内置模块。本文简单讲几个比较常用的模块。
发布了文章2017-09-03
就像我之前提到的,zsh 脚本是可以直接使用 socket 文件(UNIX domain socket 所使用)或者 TCP 和其他进程通信的。如果进程都在本地,用 socket 文件效率更高些,并且不要占用端口,权限也更好控制。如果是在不同机器,可以使用 TCP。
发布了文章2017-09-03
alias(别名)在 shell 中是非常常用的,它主要用于给命令起别名,简化输入。但主要用于交互场景,在脚本中基本用不到。eval 是一个非常强大的命令,它的功能是将字符串解析成代码再执行,但也会额外增加很多复杂性,非必要场景尽量少用。alias 和 eval 看起来好像没...
发布了文章2017-09-02
通常情况 zsh 脚本是在一个进程中(并且单线程)执行的,但有时我们需要并行执行一些代码,因为现在的 CPU 基本都是多核的,这样可以加快运行速度。这就涉及到进程与作业控制。这里不讲进程的概念。
发布了文章2017-09-02
写文件要比读文件简单一些,最常用的用法是使用 > 直接将命令的输出重定向到文件。如果文件存在,内容会被覆盖;如果文件不存在,会被创建。
发布了文章2017-09-02
到目前为止,我们已经大致了解了 zsh 的语法特性,可以写一些功能不复杂的脚本了。但 shell 脚本主要的应用场景并不是闭门造车写独立的程序,而是和外部环境交互。所以要写出实用的脚本,要了解 zsh 如何和外部环境交互。这里的外部环境包括其他进程、文件系统、网络...
发布了文章2017-09-01
[[ ]] 是我们比较熟悉的符号了,从第一篇开始我们就一直在用,但我一直没有详细介绍它的用法,只用到了它的一小部分功能。本文详细介绍 [[ ]] 的用法。
发布了文章2017-09-01
之前我们已经依次讲过 zsh 下的五种变量(字符串、数组、哈希表、整数、浮点数)的基本用法。但变量的使用方面,还有一些比较进阶的内容,这对一些比较特别的场景很有帮助。
发布了文章2017-09-01
寻找满足特定条件的文件路径,简称文件查找,是 shell 脚本的常见任务,因为条件复杂多样,这样的任务并不轻松。很多人使用 find 命令来做,但 find 只能覆盖一部分功能,其他的要自己进一步处理,而且 find 并不好用,和脚本其他部分配合也比较麻烦,容易出错。用 z...
发布了文章2017-08-31
很多时候,我们写的代码并不是只运行一次就不再用了,那就需要保存到文件里。我们通常称包含解释性编程语言代码的可执行文件为脚本文件,简称脚本。而在脚本内部,也会有一些可以复用的代码,我们可以把这样的代码写成函数,供其他部分调用。Zsh 中函数和脚本基本上...
发布了文章2017-08-31
变量修饰语是 zsh 中有一个很独特的概念,对变量进行操作,功能上和函数类似,但用起来更方便,在一行代码里实现复杂功能主要靠它了。而代价是可读性更差,怎么用就要自己权衡了。它也是 zsh 最有特色的部分之一。变量修饰语主要应用于数组和哈希表,但也有一小部分...
发布了文章2017-08-30
数值计算主要是在 (( )) 或者 $(( )) 中进行的,在 $[ ] 或者 $var[ ](可用于数组索引的计算)中也能进行一部分,这里统一使用小括号。