bash 命令的选项无法加在句尾是怎么回事?

2016-07-20 08:50:23 +08:00
 HanningWu

比如以前我可以用 rm dirname -r 或 rm -r dirname 来删除目录 dirname 但是突然变成只能用 rm -r dirname 了,把-r 放在句尾无法执行

有人说需要安装 coreutil ,这个东西我已经通过 brew 安装了

3132 次点击
所在节点    Linux
19 条回复
fcicq
2016-07-20 08:55:56 +08:00
GNU 的 utils 通常能接受选项在最后, BSD 系的基本不行.
jarlyyn
2016-07-20 09:12:26 +08:00
Brew 什么鬼
HanningWu
2016-07-20 09:22:35 +08:00
@jarlyyn 我是 mac os ,用 brew ,而不是 apt-get
araraloren
2016-07-20 09:24:23 +08:00
~~那就不要放在后面呗,这种事情在于命令行解析是如何实现的吧,比如有些命令的有些参数就是不能放在某个位置,或者特定的参数一定要放在最后之类的。。
jarlyyn
2016-07-20 09:30:43 +08:00
@HanningWu

Mac OS X 和 Linux 没什么关系,你发错区了
yangtukun1412
2016-07-20 09:44:53 +08:00
你需要修改 $PATH, 把 coreutils 的 bin 目录放到 /bin 前面.
SErHo
2016-07-20 09:45:25 +08:00
brew 装的 coreutil ,命令行需要使用 g 前缀,比如 grm, gawk 等等。

"All commands have been installed with the prefix 'g'."
shalk
2016-07-20 10:38:18 +08:00
要不要重新包装一下 rm
morefreeze
2016-07-20 11:25:30 +08:00
感觉最好还是按命令的--help 来吧,而且一般命令参数都要放在最后操作对象的前面,放在最后好难受(虽然我也经常写了一半发现忘了加参数了)。
另外 rm dir -r 这样写不会理解成我想删 dir 和一个叫"-r"的文件吗?

usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
abscon
2016-07-20 12:02:50 +08:00
答主确定 rm 是 bash 命令?
lnkisi
2016-07-20 14:23:44 +08:00
这与具体的可执行文件有关吧,例如 macOS 下 curl 可以接受句尾选项。
skydiver
2016-07-20 14:24:08 +08:00
which rm
BlueMeow
2016-07-20 14:50:13 +08:00
就因为这个所以全部完成 GNU 版( gmv 、 grm 、 gcp )了。临时想起来一个参数必须退到前面,感觉很不爽。另外如果 sudo 可以加到后面就更好了
holyghost
2016-07-20 14:56:30 +08:00
@BlueMeow sudo !!
BlueMeow
2016-07-20 15:06:12 +08:00
@holyghost 嗯这个是可以,不过要先回车执行一次。对于有的不 sudo 也可以执行(但不是预期的目的)的命令,比如 passwd ,还是比较麻烦。不过发现了 oh-my-zsh 的 sudo 插件,两个 Esc 就可以添加 sudo 了
ooxxcc
2016-07-20 15:09:59 +08:00
brew list coreutils

以及 which rm

你就知道为什么了

你输入的 rm 调用的还是 mac 的 rm
holyghost
2016-07-20 15:52:27 +08:00
@BlueMeow 哈哈哈哈哈哈哈哈不回车根本不知道这玩意要 sudo
Tink
2016-07-20 17:34:09 +08:00
这个和用的 shell 有关吧
cxbig
2016-07-20 18:05:14 +08:00
养成习惯,命令»参数»对象。
另外在 Terminal 里无论是 emacs 模式还是 vim 模式都有前后位置跳转的快捷键,用好了回去补也不难。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293620

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX