
1 clf 2021-11-23 10:34:27 +08:00 后面整个放在引号里是不是就可以了。 |
2 yolee599 2021-11-23 10:34:54 +08:00 定一个规定,忘记一次就给 curl 项目捐 1 美元 |
4 kidonng 2021-11-23 10:44:34 +08:00 via Android 尚未发布的 fish shell 3.4 可以开启 ampersand-nobg-in-token 支持直接输入这类命令 ( PR #7991 ) |
5 weixiangzhe 2021-11-23 10:44:35 +08:00 没有啥子问题,再来一遍不就好,建议快捷键 ctrl+p 上次的输入,ctrl+a 行首 ctrl+e 行首 ctrl+b ctrl+f 移动光标,只要我操作 够快,再来一遍无所谓吧 |
6 kidonng 2021-11-23 10:53:28 +08:00 via Android 补充一下,ampersand-nobg-in-token 是解决 &符号的问题,还需要开 qmark-noglob 解决 ? 符号的问题 |
7 jaredyam 2021-11-23 11:02:25 +08:00 所以要保持加引号的好习惯,甚至于什么时候用双引号什么时候用单引号,shell 脚本写多了大概会被动养成。 |
8 josexy 2021-11-23 11:15:32 +08:00 时刻提醒自己要加引号,看下面这两条命令的区别就知道了 rm -rf /home/ubuntu/ temp rm -rf "/home/ubuntu/ temp" |
9 laoyur 2021-11-23 11:17:03 +08:00 不是该说忘记加引号吗? |
10 herojaxy 2021-11-23 11:22:32 +08:00 每次成对敲,再回退一格不就行了,""()[]{} 这样肯定忘记 |
11 ChrisFreeMan 2021-11-23 11:45:16 +08:00 记得以前看到一个 star 很高的 python 写的命令行工具,只要输错指令,敲出 fuck 就会帮你纠正 |
12 zoharSoul 2021-11-23 12:07:38 +08:00 @weixiangzhe #5 ctrl+a 也太难按了吧? 小拇指按 ctrl 无名指按 a? mac 键盘上模拟了下感觉手要断了 |
14 bowser1701 2021-11-23 12:29:55 +08:00 via iPhone @zoharSoul ctrl 映射到大小写键 |
15 learningman 2021-11-23 12:31:49 +08:00 @josephxrays #8 还可以是 rm -rf / home/ubuntu/temp |
16 julyclyde 2021-11-23 12:48:01 +08:00 嘿嘿,这应该是加引号啊不是括号啊 和 lz 同样的 curl 问题,我以前出过 100 万 usd 的事故 |
18 kidonng 2021-11-23 13:06:29 +08:00 via Android |
19 sprite82 2021-11-23 13:33:13 +08:00 忘记一次,就敲 100 遍带引号的命令,来过一次就不会忘了 |
20 pkookp8 2021-11-23 14:15:38 +08:00 via Android 只要看到&就加引号 |
21 2i2Re2PLMaDnghL 2021-11-23 14:39:15 +08:00 @kidonng 貌似 the fuck 没这条规则? |
23 yidinghe 2021-11-23 14:49:17 +08:00 via Android 1 、先打两个引号; 2 、然后按一下左方向键使光标回到两个引号之间; 3 、然后再输入参数内容。 |
24 goosegugu 2021-11-23 14:52:11 +08:00 猫猫头大军不请自来 |
25 kidonng 2021-11-23 14:59:40 +08:00 via Android @2i2Re2PLMaDnghL 粗略翻了下貌似是没有,估计因为涉及 shell 的解析规则做不到 |
26 2i2Re2PLMaDnghL 2021-11-23 15:12:46 +08:00 @kidonng 但是有未闭合的引号,sh 解析肯定是可以做的,都是纯字符串丢给 python 处理 问题大概只是没人写( |
27 julyclyde 2021-11-23 16:09:04 +08:00 @Xusually 就是因为&符号被 shell 解释,导致缺了一个参数,这个参数没有明确指定的时候,默认值是另一个,然后就执行了一个本来已经不打算再用的模块,把内存撑爆了,一个机房所有同类服务器进程全都爆了 |
28 SingeeKing PRO 用 zsh 会自动加 |
29 SingeeKing PRO 抱歉说错了,不是自动加引号,是会自动转义 |
30 wangyzj 2021-11-23 16:14:17 +08:00 这个猫我见过 |
31 Ritr 2021-11-23 16:49:12 +08:00 1.curl "" 2.光标回退 3.输入地址 写其他代码也是,先 xx(){}再往里填 |
32 kidonng 2021-11-23 18:11:09 +08:00 @SingeeKing 万能的 zsh 又来了,又把哪个插件当原生了? ``` kid@Pavilion ~ % curl localhost/?a=1&b=2 [1] 22401 zsh: no matches found: localhost/?a=1 kid@Pavilion ~ % [1] + exit 1 curl localhost/?a=1 ``` |
33 kidonng 2021-11-23 18:15:05 +08:00 @2i2Re2PLMaDnghL 确实和 shell 解析有关,因为这类命令的运行过程是这样的 (以 curl localhost/?a=1&b=2 为例) 1. Shell 起一个后台进程运行 curl localhost/?a=1 ,这个命令本身还有一个 ? 的 glob 问题 2. Shell 运行 b=2 ,然后报 command not found thefuck 应该只会看上一条命令,而不能综合考虑整个上下文。 |
34 rrfeng 2021-11-23 18:17:06 +08:00 oh my zsh 会自动转义,你按 & 它自动输入 \&,粘贴的时候也有效。 |
35 rrfeng 2021-11-23 18:17:34 +08:00 但是最好还是习惯性打引号,不能依赖工具。 |
37 oeagut 2021-11-23 18:39:00 +08:00 头像这个猫是不是 B 站发视频的啊 |
38 2i2Re2PLMaDnghL 2021-11-23 18:40:23 +08:00 @kidonng thefuck 看的是 fc -ln -10 ,你可以从 thefuck --alias 里看到。 |
39 Huelse 2021-11-23 18:56:50 +08:00 对于这种常用的,要不自己写个 alias ?变量放引号中 |
40 newsj 2021-11-24 08:40:57 +08:00 多错几次就记得了 |
41 p1gd0g 2021-11-24 09:18:52 +08:00 这就是我为什么讨厌写脚本,很没安全感。 |
42 weixiangzhe 2021-11-24 23:52:05 +08:00 @zoharSoul 默认确实是的,我也是 caps 映射成 长按 ctrl, 短按 esc 的 |