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

2016 年 7 月 20 日
 HanningWu

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

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

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

Mac OS X 和 Linux 没什么关系,你发错区了
yangtukun1412
2016 年 7 月 20 日
你需要修改 $PATH, 把 coreutils 的 bin 目录放到 /bin 前面.
SErHo
2016 年 7 月 20 日
brew 装的 coreutil ,命令行需要使用 g 前缀,比如 grm, gawk 等等。

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

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

以及 which rm

你就知道为什么了

你输入的 rm 调用的还是 mac 的 rm
holyghost
2016 年 7 月 20 日
@BlueMeow 哈哈哈哈哈哈哈哈不回车根本不知道这玩意要 sudo
Tink
2016 年 7 月 20 日
这个和用的 shell 有关吧
cxbig
2016 年 7 月 20 日
养成习惯,命令»参数»对象。
另外在 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