V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
HanningWu
V2EX  ›  Linux

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

  •  
  •   HanningWu · 2016-07-20 08:50:23 +08:00 · 3135 次点击
    这是一个创建于 3079 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    以及 which rm

    你就知道为什么了

    你输入的 rm 调用的还是 mac 的 rm
    holyghost
        17
    holyghost  
       2016-07-20 15:52:27 +08:00
    @BlueMeow 哈哈哈哈哈哈哈哈不回车根本不知道这玩意要 sudo
    Tink
        18
    Tink  
       2016-07-20 17:34:09 +08:00 via iPhone
    这个和用的 shell 有关吧
    cxbig
        19
    cxbig  
       2016-07-20 18:05:14 +08:00
    养成习惯,命令»参数»对象。
    另外在 Terminal 里无论是 emacs 模式还是 vim 模式都有前后位置跳转的快捷键,用好了回去补也不难。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:08 · PVG 01:08 · LAX 09:08 · JFK 12:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.