使用python cli工具更改当前终端的目录

问题描述 投票:-1回答:1

我正在使用一个简单的cli工具来更改当前终端窗口的项目目录。 cli工具是使用click包以python编写的。从我所看到的情况来看,我认为不可能更改目录,但也许有人对此有深刻的见识,将有所帮助。

对于示例工作流程

$ pwd
/home/username
$ grab open projectA
$ pwd
/home/username/projects/projectA
$ grab open projectB
$ pwd
/home/username/projects/different/location/projectB

我确实知道的事情。

  • 使用python os.chdir(path)仅在当前脚本旁边运行,一旦执行对终端没有任何影响。
  • 尝试python subprocess.run(['cd', 'path'])将抛出FileNotFoundError: [Errno 2] No such file or directory: 'cd'
  • 正在运行$ source change_dir.sh将在命令行上运行,但是尝试在subprocess中将产生相同的FileNotFoundError。注意,change_dir.sh是一个简单的脚本,它使用cd来更改路径。

我真的是在寻找解决此问题的方法,或者被告知这是不可能的。我可能要尝试的下一件事是在终端中为bash shell午餐,类似于使用python启动虚拟环境时发生的情况。马上就觉得这对我来说是错误的方式。

任何建议都会有所帮助。

python bash command-line-interface
1个回答
0
投票

您可以创建函数

grab() {
    case "$1" in
        open)
            cd $(command grab open "$2");;

        *)
            command grab "$@";;
    esac
}

将其加载到bash中

$ . grab.sh

然后,当您跑步时

$ grab open projA

将更改目录,以及其他任何子命令

$ grab other whatever

它将运行grab

© www.soinside.com 2019 - 2024. All rights reserved.