加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 我怎么能在xargs中使用别名

发布时间:2020-12-15 16:59:56 所属栏目:安全 来源:网络整理
导读:Ubuntu使用zsh,现在有一个别名 alias | grep sayhisayhi='echo hi'sayhi foohi foo 但是,我不能在xargs或bash中使用此别名,请参阅下文 ? ~ echo foo | xargs -i sayhi {}xargs: sayhi: No such file or directory? ~ echo foo | awk '{print "sayhi "$0}'say
Ubuntu使用zsh,现在有一个别名
alias | grep sayhi
sayhi='echo hi'

sayhi foo
hi foo

但是,我不能在xargs或bash中使用此别名,请参阅下文

?  ~  echo foo | xargs -i sayhi {}
xargs: sayhi: No such file or directory
?  ~  echo foo | awk '{print "sayhi "$0}'
sayhi foo
?  ~  echo foo | awk '{print "sayhi "$0}'|bash
bash: line 1: sayhi: command not found

看来我不能在命令行中间接使用别名.

那么我怎么能在这种情况下使用别名呢?

暂且不谈你正在处理两种不同的贝壳:

> xargs只能调用外部实用程序(可执行文件),因此根据定义它不能直接调用别名(直接).
>管道到bash将在子进程中运行,该进程不知道您当前的shell的别名(并且非交互式Bash实例既不会读取通常的配置文件/初始化文件,也不会默认扩展别名).

虽然你可以使它适用于许多使调用复杂化的扭曲,但最好的办法是将你的别名转换为脚本并让xargs / bash调用它.

要获得与别名相同的单字调用体验:

>创建脚本sayhi(没有文件名后缀);示例内容,取自您的后续问题:

#!/bin/bash
echo hi $@

>使其直接可执行:chmod x sayhi – 这样您就不必涉及shell可执行文件来调用它.
>将其放在$PATH变量中列出的目录中.

然后,您将能够像路径中的任何其他可执行文件一样调用您的脚本 – 仅通过文件名 – 并且您的问题中的示例命令应该有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读