我pip install -U
别名为pi
. 我想运行:
zargs ~/scripts/python/**/requirements.txt -- pi -r
有没有办法做到这一点?
我也试过这个丑陋的选择:
zargs ~/scripts/python/**/requirements.txt -- ${aliases[pi]} -r
但它说(eval):2: command not found: pip install -U
。
我想 zargs 应该能够做这些事情,因为它是一个 zsh 内置的。
别名是
csh
穷人的功能。别名并不是真正的命令,它们更多的是文本替换。alias
es 在具有函数的更高级的 shell 中使用,作为黑客工具用于无法使用函数的情况,例如:或者
这不适用于函数。但在这里,它不是那些情况之一。
不定义
pi
命令,它定义pi
别名。在这里,碰巧在扩展时,它最终变成了一个简单命令的开始,但在所有需要命令的情况下,别名都不会扩展。特别是,它们不会像zargs
此处那样在函数内扩展(好吧,它们是,但在函数定义时,而不是调用时,上面的 ourforever
或fail
别名可能很有用)。并且它们在某些不合适的上下文中被扩展(例如在pi() { ...; }
)。全局别名不是解决方案,全局别名仍然不是命令,它们仍然是文本替换,但在更多情况下会扩展。
之后
现在,一个
pi
词无论出现在哪里都会被扩展。因此,例如,echo pi
将输出pip install -U
.在这里,如果你想定义一个
pi
命令,你会使用一个函数:那个将被调用
zargs
。使用
pi
简单的别名,您仍然可以:也就是说,
$IFS
在别名的定义上调用 -splitting。或者更进一步:z
在考虑引用的同时拆分在哪里(例如echo "foo bar"
拆分成echo
and"foo bar"
而不是echo
,"foo
andbar"
),e
以执行扩展(例如echo $(uname)
扩展到echo Linux
),Q
以删除引号,这将在更多情况下提供更好的近似值.