如何让IPython为Bash多行调用的输出着色,并使用带有coreutils的Mac OS X上的.bashrc或.B



我的配置可能有一些奇怪之处,只是需要注意。我在Mac OS X Mountain Lion上,但使用通过Homebrew:安装的coreutils

我的.bash_profile中有一些函数用于通过Python程序进行grepping。

function greppy() { find . -name '*.py' -exec grep -nHr --color "$1" {} ; ; }
function grepcy() { find . -name '*.pyx' -exec grep -nHr --color "$1" {} ; ; }

为了从IPython调用它们,我调用了多行bash:

In [6]: %%bash
   ...: . ~/.bash_profile
   ...: greppy triangle
   ...:

这将正确运行函数,但不会为grep搜索项着色。我也注意到了:

In [10]: %%bash
   ....: source ~/.bash_profile
   ....: ls --color
   ....: 

颜色输出正确,但调用:

In [11]: %%bash
   ....: source ~/.bash_profile
   ....: la

它被别名为在我的.bash_profile中始终使用ls-a-color,而不是。

另外一个可能有用的注意事项是,我的.bash_profile还调用dircolors来读取.dir_colors配置,该配置调整了ls的目录颜色(使py和pyx的颜色不同,并使.pyc的颜色相对为灰色,这样它们就不那么显眼了)。我不确定是否还有其他互动。

我在一台颜色正确的工作机器上的一个旧的(.ipysonrc别名)配置中设置了一个.bashsrc和IPython别名。我正试图让同样的东西在我的MacBook Air上运行,供家庭使用。这并不是我整个ipython/bash/vim Python开发圈子中非常重要的一部分,但我对环境中的一些小细节非常挑剔,如果可以的话,我希望它能发挥作用。

有点难看,但如果你像我一样,真的想给输出上色,下面是你对bash和zsh(奖金)的最佳选择:

In [10]: !bash -c 'source ~/.bash_profile; greppy searchterm'

zsh:

In [10]: !zsh -c 'source ~/.zshrc; greppy searchterm'

你可以定义一个别名:

%alias greppy zsh -c 'source ~/.zshrc && greppy %s'

希望这能对其他人有所帮助!

最新更新