【问题标题】:Linux alias questionLinux别名问题
【发布时间】:2011-04-08 21:20:17
【问题描述】:

我想为这个命令“rmi”创建一个别名,这样如果我执行了

rmi File.txt

它会实际执行

ls * | grep -v File.txt | xargs rm -rf

基本上我想重新排序参数。

【问题讨论】:

  • 您没有提及您使用的是哪个 UNIX shell...sh、csh、tcsh、bash、zsh、...?

标签: linux alias arguments


【解决方案1】:

脚本:

#!/usr/bin/env bash
ls * | grep -v $1 | xargs rm -rf

-将其保存为 rmi。

-做:chmod a+x rmi

-然后添加到路径。

【讨论】:

    【解决方案2】:

    你不能用别名来做到这一点。您需要编写一个脚本。

    【讨论】:

    • +1 请注意,这并非不可能,只是无法使用别名。这对于 OP 来说可能是一个糟糕的术语,因为别名具有特定的含义。
    • 你不需要脚本,你可以写一个shell函数,就像写一个别名一样简单。
    【解决方案3】:

    您不需要脚本。你可以写一个shell函数来代替别名:

    myfunc() {
      ls * | grep -v $1 | xargs rm -rf
    }
    
    # usage: myfunc <filename>
    

    将其存储在 ~/.bashrc 或 ~/.zshrc 或单独的别名文件中,例如。使用成语

    test -f ~/.zaliases && source ~/.zaliases
    

    在您的 dotrc 文件中。

    【讨论】:

      【解决方案4】:

      感谢您澄清这一点。在 tcsh 中很简单:

      alias rmi 'ls * | grep -v \! | xargs rm -rf'
      

      应该这样做...

      \! 
      

      扩展“rmi”之后的所有参数

      您也可以使用“查找”来执行此操作..

      find . -type f | grep -v \! | xargs rm -rf'
      

      ...小心那把斧头! (rm -rf)

      【讨论】:

        猜你喜欢
        • 2011-04-30
        • 2016-06-05
        • 2023-03-18
        • 2010-12-11
        • 1970-01-01
        • 2010-10-16
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多