【发布时间】:2021-09-08 01:21:31
【问题描述】:
每次我输入cd folder 或cd .. 时,我都希望它在之后立即运行ls。
有没有办法做到这一点?
【问题讨论】:
-
我建议使用一个函数。
-
@airbornesnow:正如你所写的,这个问题没有意义。别名不绑定到终端,而是绑定到shell。此外,您不清楚您使用的是哪个 shell,因为您将问题标记为 zsh 和 bash。
每次我输入cd folder 或cd .. 时,我都希望它在之后立即运行ls。
有没有办法做到这一点?
【问题讨论】:
我强烈建议不要覆盖 cd 本身,但基本上你想做的是:
alias cdl='cd $*; ls'
这里cdl 是您的新命令的名称(如果您真的坚持,也可以是cd)然后您将其分配给另一个命令,该命令本身就是两个命令的序列:
cd $* 其中$* 是指您传递给cdl 的所有参数
ls
您可以将ls 的执行作为cd 成功的条件,即仅在cd 被赋予有效文件夹时运行它,否则什么也不做:alias cdl='cd $* && ls'
更新
@Cyrus,你是对的,这在别名中不起作用(尽管如果你直接从命令行运行它就起作用)。这虽然有效:
alias cdl='ls $*; cd $*'
【讨论】:
~,然后列出$*。
转发another post的答案
把这个放在 .zshrc 中为 cl 创建别名:
#print contents after moving to given directory
cl()
{
cd $@
ls
}
要覆盖 cd(不推荐),请将其放入 .zshrc:
#print contents after moving to given directory
cd()
{
builtin cd $@
ls
}
【讨论】: