【问题标题】:Bash Alias HelpBash 别名帮助
【发布时间】:2011-03-07 21:04:11
【问题描述】:

我正在为一个项目编写 4 个别名,目前其中两个正在工作。 e 和 ll 别名有效,但 cx 别名给了我一个错误 cx: command not found。另外,我的 rm 别名只是删除了指定的文件,但没有给出任何确认。

这就是我要从这两个别名中寻找的东西..

  1. 一个名为“cx”的别名,它接受一个或多个文件/目录 并添加对指定文件/目录的执行权限。

  2. 一个名为“rm”的别名,每次删除文件时都会显示一条确认消息。

这是我的别名...

alias e="exit"
alias ll="ls $1 -l"
alias cx="chmod a+x $1"
alias rm="rm -i"

【问题讨论】:

    标签: bash unix permissions alias


    【解决方案1】:

    当你想使用传入的参数时,你不需要别名,你需要一个函数

    cx(){ chmod a+x $1; }
    ll(){ ls $1 -l; }
    

    在这些特殊情况下,您可以完全不使用位置参数,因为该参数位于最后,并且别名基本上被内联替换为它们的定义。

    alias ll='ls -l'
    alias cx='chmod a+x'
    

    所以cx ./foo 现在是chmod a+x ./fooll ./foo 现在是ls -l ./foo

    概念证明

    $ touch foo && ls -l ./foo
    -rw-rw-r-- 1 siegex siegex 0 Mar  7 12:14 ./foo
    $ alias cx='chmod a+x'
    $ alias ll='ls -l'
    $ cx ./foo
    $ ll ./foo
    -rwxrwxr-x 1 siegex siegex 0 Mar  7 12:14 ./foo
    

    【讨论】:

    • 任务是使用别名。我在没有参数的情况下尝试了这个,但仍然得到 cx: command not found.
    • @bluetickk 那么你做错了什么,请参阅我的“概念证明”
    • alias cx='chmod a+x" 是我的别名。调用时我仍然得到 cx: command not found。另外,别名 rm='rm -i' 仍然没有给我确认
    • @bluetickk cx='chmod a+x" 我不确定这是否是一个错字,但是您将单引号与双引号混合在一起,这是您无法做到的。要么只使用单引号,要么只使用双引号来包围你的别名。
    • @bluetickk then 1) 你确定你使用bash作为你的shell吗? 2) 如果是这样,那么在你输入alias cx='chmod a+x' 之后,你应该可以只输入alias cx 并且它应该确认它被设置为chmod a+x。报告结果
    【解决方案2】:

    试试这个,应该会更好:)

    alias e='exit'
    alias ll='ls $1 -l'
    alias cx='chmod a+x $1'
    alias rm='rm -i'
    

    魔法是'而不是"

    【讨论】:

    • 别名不应包含位置参数
    • 我仍然收到 cx:调用 cx 时找不到命令。当我调用 rm 时,我也没有得到确认。
    • “insead”有助于考虑 $1,这在这里没用...我认为用法是这里的关键。您应该使用 source 命令加载这些别名
    • 我假设上面的评论是给我的。如何在函数之外设置$1
    【解决方案3】:

    shopt -s expand_aliases 命令将允许在非交互式 Bash shell 中进行别名扩展。 (在命令行中不需要它,因为那将是一个交互式 shell。)

    如果您在脚本中测试别名,那可能是您的问题的一部分。 在尝试运行任何别名命令之前,尝试将 shoptcommand 添加到您的脚本中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2021-04-17
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多