面料:为什么我不能在本地(“历史”)打印任何东西?

时间:2017-01-12 20:59:48

标签: python-2.7 fabric macos-sierra

这是我的fabfile

from fabric.api import local, task

@task
def tracking(suffix=""):

    buffer_ = "*" * 40
    print (buffer_)
    local("whoami")
    print (buffer_)
    local("env | grep dn")

    #this one comes out empty...
    print (buffer_)
    out = local("history")
    print (buffer_)

除了历史记录

之外,所有内容都按预期打印出来
****************************************
[localhost] local: whoami
jluc
****************************************
[localhost] local: env | grep dn
dn_cb=/Users/jluc/.berkshelf/cookbooks
dn_cc=/Users/jluc/kds2/chef/chef-repo/cookbooks
dn_khtmldump=/Users/jluc/kds2/out/tests/dump2static
dn_cv=/Users/jluc/kds2/chef/vagrant/ubuntu2
****************************************
[localhost] local: history
****************************************

但命令行上的历史没有错......

history | tail -5

  613  history
  614  fab -f fabfile2.py tracking
  615  history | tail -5
  616  cls
  617  history | tail -5

是什么给出的?添加shell="/bin/bash"也无济于事。

MacOs Sierra

1 个答案:

答案 0 :(得分:1)

根据docs

  

local当前不能同时打印和捕获输出,就像run / sudo那样。捕获kwarg允许您根据需要在打印和捕获之间切换,默认为False。

我将此解释为含义如果您希望history命令起作用,则需要先捕获输出。尝试更改所有local命令,以包含shell="/bin/bash"capture=True