轻松从一个目录(CommandPath)调用命令
CommandPath 是一个对象,你可以创建它来表示包含可执行文件的目录。然后,你可以使用该对象获取命令对象,然后运行这些对象。
此功能的创建是为了能够创建引用其 bin 目录的“postgres”或“node”或“virtualenv”CommandPath 对象。这些 bin 目录中的命令(例如 postgres / psql)可以运行,并且能够直接调用该目录中的其他命令,而无需引用绝对路径。
从 CommandPath 对象创建的命令对象将自动在 PATH 的开头添加该目录后运行。这意味着它们可以相互直接运行,无需指定目录。
bin_directory/ls
#!/bin/bash
echo hello $1 > output
#!/bin/bash
ls $1
#!/bin/bash
echo hello $1 > output
#!/bin/bash
command1 tom
#!/bin/bash
echo hello dots > output
from commandlib import CommandPath
command_path = CommandPath("./bin_directory")
从 CommandPath 运行命令
command_path.command1("harry").run()
'output' 文件将包含
hello harry
命令可以在 CommandPath 中调用其他命令,而无需指定其路径
command_path.command_calling_command_in_path("tom").run()
'output' 文件将包含
hello tom
命令路径中带有点的命令将转换为下划线
command_path.command_with_dots("tom").run()
'output' 文件将包含
hello dots
引用不存在的命令会引发异常
command_path.non_existent_command
commandlib.exceptions.CommandError:
'non_existent_command' not found in '/path/to/bin_directory'