elvish 初体验

我有个小工具,工作在命令行,用 Bash 写的。 在工具重构的过程中,为了保持心情愉快,必须甩开 Bash 语言 :) 上一回已经说过了,在一众脚本语言中,最后选择了 abs。 几周下来,最大的感受是,八阿哥(#462, #464)。 是那种隐秘的也就算了,以咱的水平,一般遇不到。 在我这既阳春又白雪的简单脚本里,居...

2022-01-05 Â· wuan

关于 zsh 自动补全系统

习惯了 VIM 的 neocomplcache 插件,寻思着这么霸气的功能,要是 ZSH 也有就好了,结果还真有。精简版和升级版。 ZSH 的牛逼不是吹的,不信你看: [ -f ~/.ssh/config ] && : ${(A)ssh_config_hosts:=${${${${(@M)${(f)"$(<~/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}} 这 A,这圈M,这小 f,特别是这傻逼冒号加井号再他么空格还带个星号,还不结束,他妈的还有大括号,还有那么多星星,搞毛啊搞,有完没完啊,神马鸟玩意啊啊啊...

2012-12-16 Â· wuan

获取指定时间相对当前时间的时间差的文字描述

#!/bin/sh rt() { time=$(date -d "${1}" +%s) curr=$(date +%s) shift=$(($curr - $time)); if [ $shift -lt 45 ]; then diff="$shift" term="second" # 45 秒前 elif [ $shift -lt 2700 ]; then diff="$(($shift / 60))" term="minute" # 45 分钟前 elif [ $shift -lt 64800 ]; then diff="$(($shift / 60 / 60))" term="hour" # 18 小时前 elif [ $shift -lt 518400 ]; then diff="$(($shift / 60 / 60 / 24))" term="day" # 6 天前 elif [ $shift -lt 1814400 ]; then diff="$(($shift / 60 / 60 / 24))" term="week" # 3 周前 (21 天前) fi if [ $diff -gt 1 ]; then term=$term"s"; else diff="1"; fi echo "$diff$termago"; }

2010-12-10 Â· wuan

about &

RT @http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在 “()” 中就 能让这些命令在子 shell中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是 其中之一。当我们将 “&” 也放入 “()” 内之后,我们就会发现所提交的作业并不在作业列 表中,也就是说,是无法通过 jobs 来查看的。让我们来看看为什么...

2009-08-19 Â· wuan

超酷的 zsh-prompt

RT @http://www.miek.nl/blog/archives/2008/02/20/my_zsh_prompt_setup/index.html 不仅美观而且实用的 shell 提示符,除了常见的主机名、用户名、路径名等标识符,它还能 jobs 提醒 非0的 exit code 提示 路径名右对齐

2009-05-04 Â· wuan