我在bash中有一个很长的命令,我不想一直打字,所以我在我的.profile中添加了一个别名
alias foo='...'
Run Code Online (Sandbox Code Playgroud)
现在我想使用find -exec来执行这个别名
find . -exec foo '{}' \;
Run Code Online (Sandbox Code Playgroud)
但找不到foo:
find:foo:没有这样的文件或目录
是否可以在find中使用别名?
Jon*_*len 11
find
本身对别名一无所知,但你的shell确实如此.如果您使用的是最新版本bash
(我认为4.0添加了此功能),您可以使用find . -exec ${BASH_ALIASES[foo]} {} \;
在命令行中的该点插入别名的文字内容.
不,发现对你的别名一无所知.别名与环境变量不同,因为它们不是由子进程"继承"的.
您可以使用相同的命令创建shell脚本,设置+ x权限并将其放在路径中.这将与find一起使用.
在处理 find 结果时调用别名的另一种方法是使用类似这样的答案
所以以下应该有效:
alias ll="ls -al"
find . -type d | while read folder; do ll $folder; done
Run Code Online (Sandbox Code Playgroud)