Bash别名帮助
我正在为一个项目编写4个别名,目前其中两个正在工作。e和ll别名可以工作,但cx别名给了我一个错误cx:找不到命令。此外,我的rm alias只删除指定的文件,但不提供任何形式的确认 以下是我从这两个别名中寻找的内容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
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@bluetickkcx='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@bluetickkcx='chmoda+x'
我不确定这是否是打字错误,但你把单引号和双引号混在一起,这是你做不到的。请仅使用单引号或双引号将别名括起来。@bluetick then 1)您确定要使用bash
作为shell吗?2) 如果是这样,那么在键入alias cx='chmod a+x'
后,您应该能够只键入alias cx
,并且它应该确认已将其设置为chmod a+x
。汇报结果