之前零零散散写过一些经验分享的文章,不系统,对读者也不友好。现在整理到一块,随时更新,如果值得深入还可以单独写文章。主要针对自由/开源软件,也可能涉及科学软件、商业软件。

目标:今年整理50条在中文圈里稀罕的小技巧。

一句话系列的另外两篇:我的一句话经验——Emacs Lisp篇一句话系列——冷知识篇

  1. Grep可以用--include="*.md"指定搜索的文件类型,比如grep Chris -r . --include="*.md",在当前目录递归的检索*.md文件中的“Chris”。

  2. 对于大规模的搜索,简单的把grep命令换成ag (当然前提是安装了这个软件),可以大幅加速搜索速度。还有一个最新的软件ripgrep,据称比ag (The Silver Searcher)更快。

  3. Fontconfig的配置文件推荐放在~/.config/fontconfig/fonts.conf里,放在别处是废弃的用法,可能导致出错。

  4. Cron脚本不执行的一个可能的原因:Cron脚本不能包含后缀名,如果你不确定写的对不对,可以用run-parts --test /etc/cron.monthly/测试一下。askubuntu上的解答

  5. 7-Zip的-r会递归的在目录里搜索指定的路径,而不是我们期望的在指定目录中递归,所以不要用。详解

  6. Markdown中,用#.代表编号只在pandoc中支持,不要期望它在其他地方获得支持,对于非pandoc的情况用传统的1.是正道。

  7. 为了移动端友好没有必要在robots.txt中禁止抓取CSS等文件。详解

  8. Shadowsocks在服务端打开一次性认证的方法是在配置文件中加入"auth":true详解

  9. 对于MIUI 8,开启开发者模式后,选择不使用锁屏界面,就不用看锁屏画报了。我之前写过

  10. 除非有好的设备并且非常认真听,320 Kbps的音质已经足够好了。我的经验

  11. 在MS Word中,=rand(8, 10)可以生成随机的文字,=lorem(8, 10)生成的是Lorem ipsum。详解

  12. ORCA计算金属配合物遇到SCF不收敛的情况,可以使用! SlowConv,如果不行可以试试! KDIIS更多信息

  13. 多进程使用下载工具wget的方法:cat /tmp/url.txt | xargs -n 1 -P 8 wget -c;url.txt里一行一个地址,-P 8表示最多同时运行8个进程,相比加&后台运行的方法可以指定进程数。

  14. MS Word里用Ctrl + *(实际是Ctrl + Shift + 8)可以显示额外的格式符号,比如空格用·表示,对于一些编辑工作可能有用。(Emacs里等价的功能是M-x whitespace-mode)。

  15. Bash中如果要实现某条指令成功后再并行运行几条命令,可以这样写:echo && { sleep 12 & sleep 12 & }; wait; echo && { sleep 12 & sleep 12 &};

  16. 同一个域名下混合使用HTTP和HTTPS会导致很多问题,不要这样。一个我的折腾实例

  17. MPV如果要批量播放视频,可以在视频所在目录里运行mpv *

  18. 可以用ffmpeg合并视频,一个例子是:

1
ffmpeg -i "Cloud.Atlas.2012.RUS.Blu-Ray.1080p.AC3.x264.mkv" -i "Cloud.Atlas.2012.English.Audio.AC3.DD5.1.448K.Angrybirdy@CHD.ac3" -c copy -map 0:0 -map 1:0 out.mkv
  1. *NIX世界的cut命令很好用,有时候比正则好用,而且可以写一些比较“dirty”的代码。

  2. grep -o可以只显示匹配的部分。

  3. Octave里在向量最后增加一个元素的写法是a(end + 1) = 5;,删除最后一个元素的写法是a(end) = [];手册里的解释

  4. Shadowsocks的“ss-stunnel”是用来进行转发的,数据走的是Shadowsocks的协议,用法类似ss-tunnel.exe -u -c "C:/msys64/etc/shadowsocks/config.json" -L "8.8.8.8:53" -l 53,实现在本地的53端口起一个DNS服务器,而DNS的解析被转发到谷歌的DNS。

  5. 永久性的将Word的宏转为文字:Ctrl+Shift+F9出处

  6. 批量复制URL的Firefox扩展Copy Link URL

  7. 将URL保存到文件后用wget的-i参数批量下载,比如wget -i ./list.txt

  8. 对于v1.06以上版本的GNU bc,设置BC_LINE_LENGTH可以控制自动断行的特性,例子

1
BC_LINE_LENGTH=0 bc -l <<< "scale = 100; a(1) * 4
  1. 开启mpv硬件加速的方法:在配置文件里写入hwdec=auto。对于Windows,配置文件是%appdata%/mpv/mpv.conf

  2. 用Shadowsocks时,如果想把代理分享给局域网的其他电脑,可以在配置文件中加入"local_address":"0.0.0.0",这样代理的本地端口就暴露给局域网的其他电脑了。注意这里可能会弹出防火墙的窗口。

  3. Wifi常见的协议按从旧到新的顺序是:802.11b < 802.11g < 802.11n < 802.11ac,目前802.11ac就是比较新协议了。

  4. 一些无线网卡,比如我用的比较坑的Intel的N 2230,会出现使用802.11n不稳定的情况,这种时候可以在网卡的设置里面禁用802.11n协议,这样速度会慢一些(理论最大速度下载速度从37 M/s降低到6 M/s),稳定性会有很大的提升,而且大多数时候出口带宽没有那么高(也就是说你的下载速度根本就不会大于6 M/s),就算协议能支持也对你没有用。这条经验比较啰嗦,希望看的人能明白。

  5. 文档转换的瑞士军刀pandoc的每夜版(nightly)下载地址,每夜版会修复一些现有版本的Bug。

  6. Windows下小巧好用的PDF阅读器SumatraPDF的抢鲜版(prelease)下载地址新版标记功能的介绍

  7. Pandoc的reference-docxreference-odt参数归到reference-doc参数上了。

  8. Acrobat XI的11.0.1以上版才能和Word 2013兼容,直接安装的11.0.0是不行的,必须先升级。各版本的兼容情况

  9. Linux平台下,54.x版本以上的Firefox必须安装PulseAudio才能听到声音,命令是sudo pacman -S pulseaudio pulseaudio-alsa

  10. MacType的最新版(v1.2017.628.0)中,如果使用了DirectWrite支持(即DirectWrite=1),那么,[DirectWrite]中最好RenderingMode=6,否则用DirectWrite的软件,比如Word 2013,效果会非常差。

  11. 要想在Windows下使用UTF-8的,要么用Emacs等软件,通过管道传递,要么就在命令提示符里用chcp改代码页(chcp 65001),直接用使用命令,包括API调用,肯定会失败。在MS-Windows平台下使用UTF-8编码

  12. 好奇的你可以用objdump -d emacs来反汇编某个程序看里面的秘密,如果你喜欢Intel的汇编语法,可以用objdump -M intel -d emacs

  13. 用GCC的时候在CFLAGS加上-ftree-vectorize自动向量化代码。想知道哪些代码被自动优化了?再加上-fopt-info优化的指示就会输出到stderr,用2> /tmp/err.log把它们输出到文件仔细研究吧。

  14. curl是比较容易使用Socks5代理的,用--socks5-hostname参数就可以,示例

1
curl https://chriszheng.science/index.html --socks5-hostname localhost:65500 -O
  1. Word的选项里面,显示-打印选项里面,有“打印文档属性”一项,如果选上了,打印的时候会多一页,一定不要选。这个毛病非常难以排查,设置的位置又非常隐秘。

  2. Linux里有一个/usr/bin/timeout命令可以让程序超时退出,用法是/usr/bin/timeout 1m ts,就是执行1分钟后就kill掉,在写cron命令时很方便。如果没有这个命令,对于Debian系列的系统可以安装名为timeout的包。来源