Vim 操作实用案例分析(一):批量在行首或行尾添加内容

2020-06-29
阅读 2 分钟
9k
我们写代码或者文档时,经常需要在多行的行首或者行尾添加同样的内容,手动一行行操作显然效率很低,做这样的事情有方便的技巧。 案例一 把 {代码...} 改成 {代码...} 注释掉一段代码是非常常用的操作,很多人都知道如何操作,直接替换即可: {代码...} # 后有一个空格。^ 只匹配行首的位置,而不匹配任何字符,所以可以...

同时使用多网卡提升树莓派网络利用率

2017-11-19
阅读 2 分钟
8.4k
树莓派 3 自带的有线网卡是 100M 的,无线网卡是 72M 的,都比较慢。想提升网速的话,最直接的方法是使用 usb 网卡,千兆的有线网卡或者 450M 以上的 2.4GHz 无线网卡或者 5GHz 无线网卡。但因为树莓派 3 的 usb 接口是 2.0 的,而且 tf 卡也要共享带宽,所以也提升不了太多,而高速的 usb 网卡也不便宜(千兆 usb 有线...

Zsh 开发指南(第二十一篇 测试方法以及编写可测试代码的方法)

2017-09-29
阅读 4 分钟
1.9k
作为一种重要的测试方法,单元测试在很多种编程语言程序测试中起到举重轻重的作用。但不幸的是,单元测试基本不适用于 shell 脚本。并不是说 shell 脚本不能被单元测试,而是说单元测试能测试出来的问题很少,投入却很大。为了让 shell 脚本能被单元测试,50 行的代码很可能要改写成 100 多行甚至更多行。更重要的是 she...

Zsh 开发指南(第二十篇 代码风格)

2017-09-20
阅读 4 分钟
2.8k
因为 shell 脚本语法比较灵活,写 shell 脚本的开发者熟悉的编程语言也有较大差异,大家很容易写出风格迥异的代码出来。如果只有自己一个人用还好,如果是大家合作开发同一个项目,代码风格不同就会造成不小的麻烦。所以约定一个代码风格是很有必要的。

使用 wsl-terminal 更好地体验 Win 10 WSL 终端环境

2017-09-17
阅读 5 分钟
10.3k
WSL 从最初功能不全 bug 遍地都是,到现在除了少数几个比较顽固的 bug 外,基本足以正常使用了。但自带终端模拟器的体验依然非常糟糕,而且在可以预期的未来都不会有太大的长进了。我是从去年 8 月开始开发 wsl-terminal(中文页面)的,期间因为想不到可以添加什么功能而搁置了比较长时间。最近心血来潮,添加了很多实...

Zsh 开发指南(第十九篇 脚本实例讲解)

2017-09-05
阅读 15 分钟
3.8k
导读 本文将讲解一些比较简单的 zsh 脚本实例。 实例一:复制一个目录的目录结构 功能: 将一个目录及它下边的所有目录复制到另一个目录中(即创建同名目录),但不复制目录下的其他类型文件。 例子: {代码...} 思路: 首先需要先将 src 目录下的目录名筛选出来,可以用 **/*(/) 匹配。 然后用 mkdir -p 在 dst 目录中...

Zsh 开发指南(第十八篇 更多内置模块的用法)

2017-09-04
阅读 4 分钟
3k
除了 zsh/mathfunc、zsh/net/socket、zsh/net/tcp,zsh 还内置了一些其他的内置模块。本文简单讲几个比较常用的模块。

Zsh 开发指南(第十七篇 使用 socket 文件和 TCP 实现进程间通信)

2017-09-03
阅读 3 分钟
3.2k
就像我之前提到的,zsh 脚本是可以直接使用 socket 文件(UNIX domain socket 所使用)或者 TCP 和其他进程通信的。如果进程都在本地,用 socket 文件效率更高些,并且不要占用端口,权限也更好控制。如果是在不同机器,可以使用 TCP。

Zsh 开发指南(第十六篇 alias 和 eval 的用法)

2017-09-03
阅读 2 分钟
4k
alias(别名)在 shell 中是非常常用的,它主要用于给命令起别名,简化输入。但主要用于交互场景,在脚本中基本用不到。eval 是一个非常强大的命令,它的功能是将字符串解析成代码再执行,但也会额外增加很多复杂性,非必要场景尽量少用。alias 和 eval 看起来好像没什么关系,但功能上有相似之处,所以放在一起讲。

Zsh 开发指南(第十五篇 进程与作业控制)

2017-09-02
阅读 3 分钟
4.6k
通常情况 zsh 脚本是在一个进程中(并且单线程)执行的,但有时我们需要并行执行一些代码,因为现在的 CPU 基本都是多核的,这样可以加快运行速度。这就涉及到进程与作业控制。这里不讲进程的概念。

Zsh 开发指南(第十四篇 文件读写)

2017-09-02
阅读 4 分钟
3.4k
写文件要比读文件简单一些,最常用的用法是使用 > 直接将命令的输出重定向到文件。如果文件存在,内容会被覆盖;如果文件不存在,会被创建。

Zsh 开发指南(第十三篇 管道和重定向)

2017-09-02
阅读 5 分钟
2.7k
到目前为止,我们已经大致了解了 zsh 的语法特性,可以写一些功能不复杂的脚本了。但 shell 脚本主要的应用场景并不是闭门造车写独立的程序,而是和外部环境交互。所以要写出实用的脚本,要了解 zsh 如何和外部环境交互。这里的外部环境包括其他进程、文件系统、网络等等。本篇主要讲管道和重定向,这是和其他进程、文件...

Zsh 开发指南(第十二篇 [[ ]] 的用法)

2017-09-01
阅读 3 分钟
2.7k
[[ ]] 是我们比较熟悉的符号了,从第一篇开始我们就一直在用,但我一直没有详细介绍它的用法,只用到了它的一小部分功能。本文详细介绍 [[ ]] 的用法。

Zsh 开发指南(第十一篇 变量的进阶内容)

2017-09-01
阅读 3 分钟
2.4k
之前我们已经依次讲过 zsh 下的五种变量(字符串、数组、哈希表、整数、浮点数)的基本用法。但变量的使用方面,还有一些比较进阶的内容,这对一些比较特别的场景很有帮助。

Zsh 开发指南(第十篇 文件查找和批量处理)

2017-09-01
阅读 4 分钟
7.8k
寻找满足特定条件的文件路径,简称文件查找,是 shell 脚本的常见任务,因为条件复杂多样,这样的任务并不轻松。很多人使用 find 命令来做,但 find 只能覆盖一部分功能,其他的要自己进一步处理,而且 find 并不好用,和脚本其他部分配合也比较麻烦,容易出错。用 zsh 的话,基本不需要 find 命令,借助 zsh 自身的功能...

Zsh 开发指南(第九篇 函数和脚本)

2017-08-31
阅读 4 分钟
8.1k
很多时候,我们写的代码并不是只运行一次就不再用了,那就需要保存到文件里。我们通常称包含解释性编程语言代码的可执行文件为脚本文件,简称脚本。而在脚本内部,也会有一些可以复用的代码,我们可以把这样的代码写成函数,供其他部分调用。Zsh 中函数和脚本基本上一样的,可以认为脚本就是以文件名为函数名的函数。脚...

Zsh 开发指南(第八篇 变量修饰语)

2017-08-31
阅读 3 分钟
2.2k
变量修饰语是 zsh 中有一个很独特的概念,对变量进行操作,功能上和函数类似,但用起来更方便,在一行代码里实现复杂功能主要靠它了。而代价是可读性更差,怎么用就要自己权衡了。它也是 zsh 最有特色的部分之一。变量修饰语主要应用于数组和哈希表,但也有一小部分可以应用于字符串(整数和浮点数也会被当成字符串处理)。

Zsh 开发指南(第七篇 数值计算)

2017-08-30
阅读 2 分钟
4.7k
数值计算主要是在 (( )) 或者 $(( )) 中进行的,在 $[ ] 或者 $var[ ](可用于数组索引的计算)中也能进行一部分,这里统一使用小括号。

Zsh 开发指南(第六篇 哈希表)

2017-08-30
阅读 3 分钟
3.3k
哈希表是比数组更复杂的数据结构,在某些语言里被称作关联数组或者字典等等。简单说,哈希表用于存放指定键(key)对应的值(value),键和值的关系,就像字典中单词和释义的对应关系,通过单词可以快速找到释义,而不需要从头依次遍历匹配。准确地说,哈希表只是该功能的一种实现方式,也可以使用各种树或者其他数据结...

Zsh 开发指南(第五篇 数组)

2017-08-29
阅读 4 分钟
2.8k
了解完结构比较简单的字符串后,我们来看更复杂一些的数组。其实字符串在 zsh 中也可以当字符数组操作,但很少有需要把字符串当数组来处理的场景。本篇中主要讲的是字符串数组,复杂度要比单个字符串高一些。

Zsh 开发指南(第四篇 字符串处理之通配符)

2017-08-29
阅读 2 分钟
3.8k
通配符(glob)是 shell 中的一个比较重要的概念,可以认为是正则表达式的简化版本。通配符在字符串匹配和文件名搜索等方面非常有用。本篇只讲它在字符串匹配上的用法。

Zsh 开发指南(第三篇 字符串处理之转义字符和格式化输出)

2017-08-28
阅读 7 分钟
5.6k
上一篇讲了 zsh 的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf 的使用等等。其中很多内容没有必要记忆,作为手册参考即可。

Zsh 开发指南(第二篇 字符串处理之常用操作)

2017-08-28
阅读 4 分钟
5.3k
字符串处理是 shell 脚本的重点部分,因为 shell 脚本主要的工作是和文件或者其他程序打交道,数据格式通常是文本,而处理没有统一格式的文本文件出奇地复杂,shell 命令中也有很多都是处理文本的。用 bash 处理文本的话,因为自身的功能有限,经常需要调用像 awk、sed、grep、cat、cut、comm、dirname、basename、expr...

Zsh 开发指南(第一篇 变量和语句)

2017-08-28
阅读 8 分钟
10.6k
网上关于 zsh 的文章有很多,但其中超过 95% 的文章讲如何使用和配置,写如何用 zsh 编程的文章很少,能找到的多数也是只言片语,不成系统。国外有几本讲 zsh 的书,其中也有很多内容是配置、使用、编写补全脚本等等,对编程有用的篇幅占比并不多,而且比较零散不便于查询。至于官方文档?那是让即使有多年编程经验的开...

树莓派和其他 arm 开发板的本质区别

2017-04-23
阅读 2 分钟
11.3k
我第一次听说树莓派时,并没有对它产生任何兴趣,因为对我来说这并不是一款新产品。在更早之前,我玩过 arm11 的开发板(S3C6410 系列,见下图),虽然和树莓派还是有区别的,比如体积更大、没有 HDMI 接口、自带触摸屏、价钱比树莓派稍贵等等,但我当时认为没有本质的不同,甚至性能和性价比上也不相上下。更重要的是,...

AHK 中全局变量、局部变量和静态变量的用法和区别

2016-05-12
阅读 2 分钟
8.3k
这是两个完全不同的概念,虽然很多时候相互关联。作用域是作用在空间上的,比如一个变量在代码的哪些行能访问,哪些行不能访问。而生存期是作用在时间上的,比如一个变量的值在函数返回后是否失效。

AHK 中标签和函数的用法

2016-05-11
阅读 2 分钟
4.9k
Test 就是一个标签。标签可以用 Gosub 调用,Gosub 执行完后会继续执行下一行。也可以用 Goto 调用,但 Goto 调用完就不会回来了。

AHK 中读写文件的方法

2016-05-10
阅读 3 分钟
6.9k
这个命令用起来很方便,Text 即要写入的内容,如果 Text 为空,那么如果文件不存在,会创建空文件,如果文件已经存在,则只更新文件的修改时间。Filename 为文件名,如果 Filename 不包含绝对路径,那么就是在 A_WorkingDir 目录下。Encoding 是文件的编码,默认是 FileEncoding 命令指定的编码。

AHK 中关联数组、列表、栈和队列的用法

2016-05-08
阅读 2 分钟
5.4k
关联数组就像字典一样,我们可以通过一个键访问它对应的值。比如我可以往一本空字典里添加两个单词,a:一个,good:好,然后我就可以通过 a 访问它对应的解释“一个”,通过 good 访问它对应的解释“好”。普通数组是关联数组的一个子集,它的键是从 1 开始的连续数字。

AHK 中的字符串处理函数

2016-05-07
阅读 4 分钟
8.8k
上一篇文章我介绍了AHK 中的字符串拼接和遍历操作,但除此之外还有很多其他类型的字符串操作。本文会罗列 AHK 中多数用于字符串操作的函数,但也正因为此,我不会对每一个函数都详细讲解和举例,大家可以直接去帮助文档查询感兴趣的函数,里边有详细的讲解和举例。另外有一些高级内容,我只在文中提及,后续会专门写文章...