1
clf 2021-11-23 10:34:27 +08:00
后面整个放在引号里是不是就可以了。
|
2
yolee599 2021-11-23 10:34:54 +08:00 11
定一个规定,忘记一次就给 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 1
时刻提醒自己要加引号,看下面这两条命令的区别就知道了
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 2021-11-23 16:13:38 +08:00
用 zsh 会自动加
|
29
SingeeKing 2021-11-23 16:13:58 +08:00
抱歉说错了,不是自动加引号,是会自动转义
|
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 的
|