Bash别名帮助

Bash别名帮助,bash,unix,permissions,alias,Bash,Unix,Permissions,Alias,我正在为一个项目编写4个别名,目前其中两个正在工作。e和ll别名可以工作,但cx别名给了我一个错误cx:找不到命令。此外,我的rm alias只删除指定的文件,但不提供任何形式的确认 以下是我从这两个别名中寻找的内容 名为“cx”的别名,它接受一个或多个文件/目录 并在指定的文件/目录上添加执行权限 名为“rm”的别名,每次删除文件时都会显示确认消息 这是我的化名 alias e="exit" alias ll="ls $1 -l" alias cx="chmod a+x $1" alias r

我正在为一个项目编写4个别名,目前其中两个正在工作。e和ll别名可以工作,但cx别名给了我一个错误cx:找不到命令。此外,我的rm alias只删除指定的文件,但不提供任何形式的确认

以下是我从这两个别名中寻找的内容

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

  • 名为“rm”的别名,每次删除文件时都会显示确认消息

  • 这是我的化名

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

    试试这个,应该更好:)


    神奇的是“而不是”

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


    神奇的是“而不是”

    当您想要使用传入的参数时,您不需要别名,而是需要函数

    cx(){ chmod a+x $1; }
    ll(){ ls $1 -l; }
    
    在这些特定情况下,您可以完全不使用位置参数,因为参数位于最末端,别名基本上由其定义内联替换

    alias ll='ls -l'
    alias cx='chmod a+x'
    
    所以
    cx./foo
    现在是
    chmoda+x./foo
    ll./foo
    现在是
    ls-l./foo

    概念证明
    如果要使用传入的参数,则不需要别名,而需要函数

    cx(){ chmod a+x $1; }
    ll(){ ls $1 -l; }
    
    在这些特定情况下,您可以完全不使用位置参数,因为参数位于最末端,别名基本上由其定义内联替换

    alias ll='ls -l'
    alias cx='chmod a+x'
    
    所以
    cx./foo
    现在是
    chmoda+x./foo
    ll./foo
    现在是
    ls-l./foo

    概念证明
    命令shopt-s expand_alias将允许在非交互式Bash shell中扩展别名。(在命令行中不需要它,因为这将是一个交互式shell。)

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

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

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

    别名不应包含位置参数调用cx时,我仍在获取cx:command未找到。当我调用rm时,我也没有得到确认“有助于考虑1美元,这在这里是没有用的…我认为用法是这里的关键。你应该使用源命令加载这些Alise我假设上面的评论是我写的。如何在函数外部设置
    $1
    ?别名不应包含位置参数我调用cx时仍在获取cx:command未找到。当我调用rm时,我也没有得到确认“有助于考虑1美元,这在这里是没有用的…我认为用法是这里的关键。你应该使用源命令加载这些Alise我假设上面的评论是我写的。如何在函数外部设置
    $1
    ?任务是使用别名。我在没有参数的情况下尝试了此操作,但仍然找不到cx:command。@Bluetick如果您做错了什么,请参阅我的“概念证明”别名cx='chmod a+x“是我的别名。调用时,我仍然找不到cx:command。此外,别名rm='rm-i'仍然没有给我一个confirmation@bluetickk
    cx='chmoda+x'
    我不确定这是否是打字错误,但你把单引号和双引号混在一起,这是你做不到的。请仅使用单引号或双引号将别名括起来。@bluetick then 1)您确定要使用
    bash
    作为shell吗?2) 如果是这样,那么在键入
    alias cx='chmod a+x'
    后,您应该能够只键入
    alias cx
    ,并且它应该确认已将其设置为
    chmod a+x
    。使用结果返回报告任务是使用别名。我在没有参数的情况下尝试了此操作,但仍然找不到cx:command。@Bluetick如果您做错了什么,请参阅我的“概念证明”别名cx='chmod a+x“是我的别名。调用时,我仍然找不到cx:command。此外,别名rm='rm-i'仍然没有给我一个confirmation@bluetickk
    cx='chmoda+x'
    我不确定这是否是打字错误,但你把单引号和双引号混在一起,这是你做不到的。请仅使用单引号或双引号将别名括起来。@bluetick then 1)您确定要使用
    bash
    作为shell吗?2) 如果是这样,那么在键入
    alias cx='chmod a+x'
    后,您应该能够只键入
    alias cx
    ,并且它应该确认已将其设置为
    chmod a+x
    。汇报结果