在IPython中,每个shell命令都是通过在其前面加上“quot;”来运行的&引用;但是很少有命令没有它就运行,这背后的原因是什么?

在IPython中,每个shell命令都是通过在其前面加上“quot;”来运行的&引用;但是很少有命令没有它就运行,这背后的原因是什么?,ipython,ipython-notebook,Ipython,Ipython Notebook,在“ls”命令的情况下,它在有前缀“!”和无前缀“!”的情况下运行。在“猫文件名”的情况下是一样的,但是当你考虑“WC-L文件名”时,它只使用“!”前缀。 当您将cat和wc组合使用时,命令“cat fileName | wc-l”在没有“!”前缀的情况下成功执行 我不明白ipython中前缀“!”背后的逻辑 先谢谢你 (我是python编程新手,如果这个问题听起来很傻,请原谅。)IPython试图让交互式编程尽可能舒适。一些shell内置命令(如ls、cd或cat)是在unixshell中导航

在“ls”命令的情况下,它在有前缀“!”和无前缀“!”的情况下运行。在“猫文件名”的情况下是一样的,但是当你考虑“WC-L文件名”时,它只使用“!”前缀。

当您将cat和wc组合使用时,命令“cat fileName | wc-l”在没有“!”前缀的情况下成功执行

我不明白ipython中前缀“!”背后的逻辑

先谢谢你
(我是python编程新手,如果这个问题听起来很傻,请原谅。)

IPython试图让交互式编程尽可能舒适。一些shell内置命令(如ls、cd或cat)是在unixshell中导航的基本命令。IPython作为一个“pythonshell”,为方便起见提供了相同的功能。以及彩色输出等功能

!命令
用于执行任意shell代码,功能更强大。它可以用来运行您可以在普通shell中键入的任何命令,还可以捕获其输出

ls
进行比较!ls
。前者将以漂亮的颜色打印当前目录中的内容。后者将打印相同的列表,但仅打印纯文本

但是请注意,你可以用
做非常酷的事情!命令

files = !ls
for f in files:
    print("I like this file:", f)
它将
ls
的输出读入python数组
文件
,您可以像其他数组一样在代码中使用该数组

总而言之:如果您只想导航,通常使用标准命令(如果可用)。如果需要捕获输出或运行程序,则必须使用
!命令
语法