Jupyter Notebook 如何判断您输入的命令是终端命令还是 python 命令?

How does Jupyter notebook tell is a command you typed is a terminal command or python command?

我只是发现不用输入“!”您仍然可以 运行 在 Jupyter notebook 中使用一些终端命令。例如,“ls”、“pwd”、“cd”等。 但是当我尝试 运行 一些其他终端命令时,例如“tree”,它告诉我“NameError:名称 'tree' 未定义”。这意味着 Jupyter notebook 将该命令解释为 Python 命令。

问题:当您不输入“!”时,Jupyter 如何判断命令是终端命令还是 Python 命令?在终端命令之前?

Jupyter 有一组类似 shell 的命令,无论您是否在它们前面添加 !,它都能识别这些命令(假定您的 automagic 设置为on,否则你必须在它们前面加上 !)。一些最常见的包括 cdcatcpmanrmpwd。完整列表是 available here.

不幸的是 tree 不是这些命令之一,因此您最好在专用的 shell.

中执行它