V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Jirajine  ›  全部回复第 73 页 / 共 213 页
回复总数  4259
1 ... 69  70  71  72  73  74  75  76  77  78 ... 213  
@wxf666 parser 太随意,一部分传给 python ,一部分传给 bash ,语义严重不一致。

还是因为缺乏结构化数据类型,只能一边 parse 字符串,一边拼接出特定的字符串给别的程序 parse 。

go/rust 的正则库大差不差,功能完全够了吧,其他“高级特性”实现的话就做不到线性时间复杂度了,而且考虑可读性也不适合用单条正则写。

关键是它标准库有常用字符串和正则函数,这些 bash 根本实现不了。

一堆不同语言的转义,考虑的太多,glob 和正则共用不少符号但语义又不一样,增加心智负担。

elvish 的 glob 简单很多,从文档的长度上就能体现出来。

bash 几乎总是需要 quoting ,如果处理含空格字符串的话,空格有时候作为分隔符,有时候又不是,还有 IFS ,处理起来难写难用且易错。

bash 的数组和 map 那是在 posix sh 上后来加的,二等公民,而且不能表达结构化数据(数组存 map 、map 存数组),也避免不了 word splitting 的糟粕。

你那个命令 elvish 是兼容的,直接
apt purge (dpkg -l | grep '^rc' | awk '{ print $2}')
效果是一样的。
因为 elvish 兼容传统 byte pipe ,期望 chan string 作为输入类型的命令 也会接受字节流输入,并把字节流按换行符 split 。output capture 也会默认做这种转换。 如果不希望这种转换可以用 slurp ,slurp 接受读取 byte pipe 输入原样存入一个 string 里返回。
@aloxaf sed 的那个 script language 难道不是 dsl 吗?
@wxf666 这里说的是脚本,因为 Python 不是 shell ,调用命令即使使用 sh 这样库也不如 shell 直接。xonsh 就是个玩具,oil/osh 倒是一个类 Python 的 shell ,但 UI 比 elvish 差太多,而且是用一套自制工具链写的。

像你那个 rename ,用$1 $2 来引用 capture group 就是个自己的语言,这玩意不是 shell 变量,elvish 及其他高级编程语言都不需要多此一举,一致性更好。

用 shell 构建另一个语言的字符串,你得考虑 shell 的转义(单引号或$符号)、dsl 的转义( /符号)、正则特殊字符的转义,glob 又是一套类似正则,但又不同的匹配语言,太多不一致性和心智负担了。

word splitting 是因为 POSIX sh 一切皆 string ,缺乏 list 类型,导致 IFS 的 trick 和引用变量总是需要 quoting 。用 shell 处理包含空格的字符串简直是 nightmare 。

elvish 是支持结构化数据类型的,string 永远是 string ,不会被自动 split 也不需要 quoting 。你要传多个参数,直接用 list 就行了,subshell ( elvish 里是 output capture )可以像 golang 一样多返回值,只要输出多个值自然就是多个参数。
var a b = (put 1; put 2)
echo $a $b c 等价于 echo (put 1; put 2) c

bash 和 zsh 一样,也有一大堆晦涩的 expansion 语法,难记难写,不过 zsh 是最“强大”的,支持的功能最多,从 sh 到 bash 到 csh 再到 zsh 原创的,也是最混乱的。

elvish 也是崇尚简短的,你看内置函数的命名,一个单词或一个单词加一个介词,命名风格也没有需要 Shift 才能输入的符号,如 to-json 对比 PowerShell 里 ConvertTo-Json 。
2022-09-05 03:01:31 +08:00
回复了 systemcall 创建的主题 宽带症候群 ipv6 似乎被运营商收回了,有办法再要回来吗?
自己的配置问题吧,openwrt 直接用自动模式 option ipv6 'auto' 就行。
@wxf666 那个示例这样写便于阅读和复制粘贴,交互式输入把变量 inline 一下也只有一行。use re 是导入包,相当于 import 。
@wxf666 你上面的那种长正则,可读性很差的,不常写正则的人不用 regex101.com 这样的工具都看不懂。
rename 自己又发明了一种 dsl 语言,不熟悉的人用起来有额外的心智负担。而且你还得同时处理 shell/rename 自己的语言 /regex 的转义,再配上 glob 。

word splitting 可不是简短,是历史包袱,导致所有变量引用都得用引号括起来。
特殊语法如 man zshexpn 看一看,正常编程语言简单的字符串处理有多麻烦。

elvish 也是为交互式设计的,完全符合简短快捷易输入,PowerShell 才是故意搞得冗长、难以输入并美其名曰“可读性”的。
@wxf666 语法现代、没有 shell 那么多乱七八糟 word splitting 之类的糟粕,支持 namespace 。
支持 list/map 结构化数据类型,同时完美兼容传统的*nix 命令行工具和 byte pipe 。
顺不顺手,你直接看我上面写的,还有官网 elv.sh 上的示例,可读性比长串正则+特殊语法好的多,同时也不像 pwsh 那么冗长命名。
pwsh 就是个 dotnet script ,当 shell 实在是无比糟糕,命名冗长、过度 OOP ,外部命令是二等公民,管道完全不能用,只让你用 cmdlet 。
带 X 换成 '[^0-9X]'
用 elvish ,比 bash 顺手,也比 Python 方便:
put **.jpg | peach {|name|
use re
var number = (re:replace '[^0-9]' '' $name)
mv $name $number.jpg
}
peach 并发执行,换成 each 顺序执行。
2022-09-04 19:41:18 +08:00
回复了 nmap 创建的主题 程序员 现在招聘灰产开发都这么赤裸裸了?
@ch2 这些最多算违反协议、不正当竞争,企业被起诉罚款,怎么也轮不到吃牢饭
2022-09-04 19:27:30 +08:00
回复了 wwwtarzan 创建的主题 问与答 b 站账号被永封,是不是就没办法解封了?
@locoz 有这种想法说明你还没有训练完成,等你以后习惯了,你就会认为“审核人员的判断是绝对正确的” 或“审核人员既使偶尔有错误也是必要的、不可避免的、必须尊敬的、不应抱怨和诋毁的”,并感到自己以前觉得审核人员水平低的想法愚昧且无知.
2022-09-04 18:59:27 +08:00
回复了 ZhiyuanLin 创建的主题 程序员 知乎喜迎全平台隐写水印
上面说拍照的,就不怕国产相机应用 /firmware 甚至国内厂商生产的相机硬件都会在图像输出中添加盲水印包含硬件 ID 等可溯源信息?
2022-09-04 18:54:06 +08:00
回复了 wwwtarzan 创建的主题 问与答 b 站账号被永封,是不是就没办法解封了?
@locoz 审核标准本来就是主观的啊,审核判断你有问题那你就是有问题,不存在“客观上没有问题但审核的人主观判断你有问题”这种现象.“有没有问题”本身就是个主观标准,“客观上有没有问题” make no sense.
2022-09-04 17:59:57 +08:00
回复了 0o0O0o0O0o 创建的主题 宽带症候群 场景化宽带可以当作隧道吗?
就算能,估计也得先提交申请审核后才行.你可以自己搭一个镜像源类的合法网站,能通过的话就可以开 tIs 隧道了.
2022-09-04 17:39:30 +08:00
回复了 ZhiyuanLin 创建的主题 程序员 知乎喜迎全平台隐写水印
@bigbyto 反过来说,通过替换别人 id 嫁祸的方式可以有效破坏这种水印的效力,当然推动取消的可能性不大.
2022-09-03 22:39:22 +08:00
回复了 wbzd 创建的主题 问与答 为什么全局代理后, CMD 依然 Ping 不通 Google?
@bigbyto 协议是否有特征与是否是 vpn 没有关系,只是主流的无特征 /混淆特征的协议多是作为代理协议实现的罢了。常用的分流、规则等功能 vpn 实现起来比较复杂,甚至需要用户态网络栈,WG 等正经 vpn 肯定不需要考虑这种问题。再就是正经 VPN 也不用担心 UDP qos 和 容易被 DDOS 等问题,而用 TCP 实现 vpn 性能损失就不是一点半点了。
2022-09-03 22:23:23 +08:00
回复了 Cagliostro 创建的主题 问与答 要求下班关电脑的公司是不是很 low?
要是重启一下就起不来了,那这个系统的稳定性实在很有问题。
不愿意关机可以用 hibernate, 关机前把内存压缩保存到硬盘 swap/pagefile 里,下次开机自动恢复状态。
1 ... 69  70  71  72  73  74  75  76  77  78 ... 213  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1233 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 46ms · UTC 23:18 · PVG 07:18 · LAX 15:18 · JFK 18:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.