

只干一件事,干好一件事
KISS (Keep It Simple, Stupid) 是 Unix 玄学的养殖。检朴胜过复杂: 要是能用浅薄的要领处罚,就不要用复杂的架构。透明性: 软件的行动应该是可量度的,不应该有荫藏的“黑盒”逻辑。
Unix 管谈的发明者谈格·麦克罗伊 (Doug McIlroy) 的四条准则:
• 让每个法子只作念好一件事。 要作念一件新责任,宁可加多一个新“法子”,也不要向旧法子中添加新“功能”。
• 假设每个法子的输出都会成为另一个法子的输入。不要让输出中充斥无关遑急的信息(比如过剩的迎接词或讳饰)。
• 不要使用二进制输入,尽可能使用纯文本。 文本是法子的通用接口。
• 计算和构建软件(甚而操作系统)时,要尽早尝试,不要指望一次告成。
本文先容两大神器nnn和croc,躬行感受下Unix计算玄学,使用者无不清沁肺腑,快意纵脱。
第一神器 nnn文献照应神器
被誉为“最轻量、最快”的选手,它的玄学是“只作念文献照应,其余的交给插件和重定向”。
nnn厚爱浏览目次、履行文献操作(复制、出动、掀开),ripgrep (rg) (引擎):天下上最快的文本搜索器具。它厚爱在千千万万个文献中寻找包含某个字符串的文献。fzf (界面):敷衍查找过滤器。它厚爱把 rg 搜出来的前仰后合的效果造成一个不错落魄选拔的交互列表。

至强组合:在 nnn 中按下快捷键调用以下功能
• fzf 进行全局文献搜索,一霎定位。
• fd 文献查找比 find 快得多
• ripgrep (rg) 文本搜索无敌
{jz:field.toptypename/}• bat 预览代码高亮
• chafa 梗概在结尾里高保真表示图片
• atool 让 nnn 梗概像解压软件同样预览压缩包
装置基本组合要领:
sudo apt install nnn fzf ripgrep
快速启用这些搭配
nnn 的插件其实便是存放在 ~/.config/nnn/plugins/ 下的剧本,
在文献.bashrc中加入这行,开启“插件花式”:
export NNN_PLUG='p:preview-tui;f:fzcd;d:diffs;g:fzgrep;v:imgview'
在 nnn 里按下 ;p 就能开启预览,按下 ;f 就能敷衍找文献。
Tips: 让 fzf 默许使用 ripgrep,这么搜索时会忽略 .git 文献夹,速率极快
export FZ_DEFAULT_COMMAND='rg --files --hidden --glob "!.git/*"'
保存.bashrc文献实质并履行source ~/.bashrc让它即时收效。
操作场景
1. 通过“实质”找文献 (fzgrep)
掀开 nnn。按下 ; (插足插件快捷键) 然后按 g (咱们界说的 fzgrep)。
输入你思查找的字符串(比如 function_name)。
rg 会一霎扫过通盘文献,fzf 会把包含这个词的文献列出来。
落魄出动选拔,按下回车,nnn 就会自动跳转并定位到阿谁文献。
2. 快速查找“文献名” (fzopen)
在 nnn 中按下 ;f。
输入文献名的一部分。
fzf 会及时过滤效果,选中后回车顺利在剪辑器中掀开。
3. 带预览的搜索
装置了 bat (扶助语法高亮的 cat),不错修改 fzgrep 剧本,已矣左边选文献,右边及时表示文献里匹配到的代码行。这么当你落魄震动搜索效果时,右侧会自动高亮表示那一瞥代码,终点丝滑。
在 ~/.config/nnn/plugins/fzgrep 剧本中:
rg --column --line-number --no-heading --color=always --smart-case "$1" | fzf --ansi --preview 'bat --style=numbers --color=always --highlight-line {2} {1}'
{1} 是文献名,{2} 是行号。
第二神器 croc文献传输神器
croc 天生便是为了跨网段、跨互联网传输而计算的。天然我一直用LanDrop跨平台土产货传输器具有图形界面,但当我把nnn和croc绑定后,发现还是不需要LanDrop了。
croc 凭啥牛B
• 同 WiFi/同网段: 速率最快,受限于网卡和路由器带宽(通常是 30MB/s - 100MB/s+)
• 跨网段但能“打洞”告成: 速率取决于两地之间的公网带宽
• 彻底走中继转发: 速率会受到中继干事器带宽的结尾
• croc 自动检测上头3种传输情形,通过PAKE 契约让两边通过“口令”进行加密持手。中继干事器只厚爱“穿针引线”,并不剖析口令实质,也无法解密你的文献。
装置croc
croc和landrop全跨平台扶助,
# 在MacOs上装置croc
brew install croc
# 在Linux上使用官方一键剧本装置
curl https://getcroc.schollz.com | bash
# 在Android手机上装置
pkg install croc
# Windows上装置
scoop install croc
与nnn搭配使用
土产货传输与跨网传输
一般传输分为两种情况,土产货局域网传输,跨网传输,在nnn均折柳对应两种情况设定好成就:
export NNN_PLUG='c:!croc sned $nnn;C:!croc --relay "中继:9009" send $nnn'
成就施展:
按 ; 然后按 c进行并吞 WiFi 和局域网极速传输
按 ; 然后按 C (即 Shift+C),进行跨网段、跨地域传输,前纲领设定中继,中继不错是域名,也不错是公网IP。
这么以来,掀开nnn后按空格键选汉文献或目次,按下相应快捷键调用不同剧本,文献将土产货发送,或跨网中继发送。
跨网文献传输交给croc
当两台开发被复杂的防火墙离隔,或者一台在单元、一台在家里时,通过你我方在 Debian 上运转的 croc relay,不错湮灭官方干事器的拥堵,取得更相识的上传和下载带宽。
持手阶段,发送方和给与方都会主动流畅到一个全球的干事器(默许是官方提供的 croc.schollz.com,要是我方运转croc relay不错开发私东谈主中继,天然,这个中继需要两边都能看得到,一般会在公网上。
要是croc发现两边跨了网段或在不同城市,它会尝试通过缺乏打洞 (UDP Hole Punching) 开发点对点流畅。打洞失败时(比如防火墙极其严格),它和会过中继干事器转发流量。
土产货跨网传输交给croc
复杂的内网环境中,不同网段(比如办公网和坐褥网、VLAN 10 和 VLAN 20)之间通常不容顺利通讯。不错在一个两个网段都能探望到的中间干事器上启动中继。
# 启动中继干事器
croc relay
内网部署的上风
• 不走公网:数据彻底在土产货局域网流动,速率极快(受限于网卡带宽),且无须顾忌数据表露到互联网。
• 穿透网段:只有中继干事器是“双宿主”或是网关路由可达的,就能松驰处罚休止网段传输贫寒。
• 无需成就防火墙打洞:客户端只需要主动探望中继,不需要中继反向探望客户端。
小贴士: nnn王人集croc不错一次传输通盘文献夹


备案号: