什么相当于 [ alias cs='cd;ls' ],但 cs 的参数是发送给 cd 而不是 ls?

什么相当于 [ alias cs='cd;ls' ],但 cs 的参数是发送给 cd 而不是 ls?

例如我想要:

/tmp: $ cs /home

执行“cd /home; ls”并给出:

user1 user2 user3 egfile.txt
/home: $

答案1

您不能将参数传递给别名,但可以传递给函数。

cs() {
cd "$@"
ls
}

答案2

结合@garyjohn 和@Gilles 的回答进行interactive?检查并详细说明ls输出格式。

现在您可以安全地将其添加到您的~/.bashrc/etc/bash.bashrc

基本版本

#
# Replace every cd with cd+ls
#
if [[ $- == *i* ]]; then  # if running interactively
  cd() {
    builtin cd "$@" && ls
  }
fi

可爱的版本

过滤输出ls以便仅显示大小、修改时间和名称。

if [[ $- == *i* ]]; then  # if running interactively
  cd() {
    builtin cd "$@" &&
    ls --color=always -lh | 
    awk '{ for(i=5; i<=NF; i++) {printf("%s ", $i)}; print ""} '  | 
    column -t  && echo
  }
fi

相关内容