ls after every cd

20150109 update:

因为有时候主目录下东西特别多, cd 进去很慌, 会 ls 出一大堆东西, 所以想法子做了限制, 只有文件数量少于 100 的时候 ls, 数量太多就默认不 ls 了.所以 改正如下:

builtin cd “$*” && (( $(ls -l | wc -l) < 100 )) && ls


想了想标题实在不知所云,需求很简单,在 cd 之后自动打个 ls, 仅此而已

function cd()
{
     builtin cd "$*" && (( $(ls -l | wc -l) < 100 ))  && ls
}

是比较好的解法。

之前想着 hook 每一个命令,根据这个这个有如下做法:

preexec () { :; }
preexec_invoke_exec () {
    cmd=$(echo $BASH_COMMAND | cut -f 1 -d ' ');
    if [ "$cmd" == "cd" ]; then
        ls
    fi
}
trap 'preexec_invoke_exec' DEBUG

但会发现 ls 在 cd 实际发生前发生,所以等于白搭。要继续 hack 的话嫌麻烦。想想 cd 后 ls 应该不是什么很奇怪的需求,所以在 这里 找到了解法。

anyway, 貌似把 bashrc 里的某个系统自动加的表达式去了以后 sftp 突然能用了,所以 mobaXterm 现在会主动列出文件列表,真是一个莫名的惊喜。

但是事实上,这样就剥夺了 cd 后 ls 的惯性带来的乐趣,使人难以适应。不过大约过几天会好~

Leave a Reply

Your email address will not be published. Required fields are marked *