Ipython 在谷歌Colab上的Jupyter笔记本中,什么';这就是使用%和!运行shell命令?

Ipython 在谷歌Colab上的Jupyter笔记本中,什么';这就是使用%和!运行shell命令?,ipython,jupyter,google-colaboratory,Ipython,Jupyter,Google Colaboratory,问题在标题中 我知道,%在IPython中通常表示“神奇变量”。这不是一个我非常熟悉的概念,但我已经读过了 然而,今天我看到了一个教程,其中有人使用它来运行shell命令。通常我都看过并使用过 有区别吗?当我尝试它们时,它们似乎都在做相同的事情。区别在于: 使用运行命令时,它直接在子shell中执行bash命令 当您使用%运行命令时,它将执行IPython中定义的一个 IPython定义的一些神奇命令故意镜像bash命令,但它们在实现细节上有所不同 例如,运行!cdbash命令不会持续更改目

问题在标题中

我知道,
%
在IPython中通常表示“神奇变量”。这不是一个我非常熟悉的概念,但我已经读过了

然而,今天我看到了一个教程,其中有人使用它来运行shell命令。通常我都看过并使用过


有区别吗?当我尝试它们时,它们似乎都在做相同的事情。

区别在于:

  • 使用
    运行命令时,它直接在子shell中执行bash命令

  • 当您使用
    %
    运行命令时,它将执行IPython中定义的一个

IPython定义的一些神奇命令故意镜像bash命令,但它们在实现细节上有所不同

例如,运行
!cd
bash命令不会持续更改目录,因为它在临时子shell中运行。但是,运行magic命令将持续更改您的目录:

!pwd
# /content

!cd sample_data/
!pwd
# /content

%cd sample_data/
!pwd
# /content/sample_data

阅读更多信息。

完美。我刚刚注意到
!就在您回答之前,cd实际上并没有更改我的目录。现在我知道为什么了!