【问题标题】:shell script to call ls command every time i change directories每次更改目录时调用 ls 命令的 shell 脚本
【发布时间】:2014-05-05 14:01:18
【问题描述】:

我想知道是否有任何方法可以制作一个脚本,它会在后台运行,并且每次我在 Linux 中更改目录(“cd”)时都会调用“ls”命令。

我知道,为了将进程置于后台,您需要在运行时添加一个“&”。

提前致谢!

【问题讨论】:

    标签: linux shell ls cd


    【解决方案1】:

    您可以像这样在.bashrc 中定义一个函数来实现:

    cdlist(){
            cd "$1" && ls
    }
    

    【讨论】:

    • 然后,你可以alias cd=cdlist
    • 您可以简单地将函数命名为 cd 并避免递归,而不是创建一个函数然后使用别名:cd() { command cd "$@" && ls; }
    【解决方案2】:

    您可以在~/.bashrc 或类似的启动脚本中将cd 替换为shell 函数:

    function cd {
        builtin cd "$@"
        RET=$?
        ls
        return $RET
    }
    

    这也将返回cd 的退出代码,以防万一......

    builtin 是一个 shell 内置函数,用于执行 shell 内置函数 cd 而不是 cd 函数,以避免陷入递归循环 - 至少在 bash 中 - 但也应该与其他 shell 一起使用...

    【讨论】:

    • 谢谢,它工作得很好,但前提是我把代码 ~/.bashrc
    • 是的,你是对的,这在~/.profile 中不起作用,因为它只在登录时提供。删除它。
    • 投票:正是我想要的!学到了一些关于 builtin 函数的新知识,我希望我知道这一点,因为我认为在编写脚本时它是非常有价值的项目。谢谢!
    • builtin cd "$@"command cd "$@" 之间的区别是什么?
    • @AlexanderMills 都绕过同名的 shell 函数,builtin 显式调用内置 shell,command 还考虑路径上的可执行文件。有关更详细的说明,请参阅manual
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多