什么是login shell和interactive shell,什么是.bash_profile和.bashrc?
MongoDB有类似.bash_history文件的东西吗?
我最近键入了一个长命令,关闭并重新打开shell,并想要检索它.
按下按钮不起作用,因为似乎在新shell中无法访问最后一个shell的历史记录.
我用Homebrew安装了1.8.1.我应该设置一个配置变量来打开MongoDB交互式shell历史记录吗?
这是我的mongod.conf档案:
# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb
# Only accept local connections
bind_ip = 127.0.0.1
# Enable Write Ahead Logging (not enabled by default in production deployments)
journal = true
Run Code Online (Sandbox Code Playgroud) 可能重复:
Go是否提供REPL?
有没有人知道是否有可用的REPL(交互式shell,类似于irb)允许用户使用import语句?我希望能够做到这样的事情:
$igo import (
"log"
"mypackage/pkg"
)
log.Print("hello, world!")
pkg.Print("Hello")
...
Run Code Online (Sandbox Code Playgroud)
我试过igo,但似乎还不支持这个.
注意:这有点是对问题的跟进:Tkinter - 我什么时候需要调用mainloop?
通常在使用Tkinter时,您调用Tk.mainloop来运行事件循环并确保正确处理事件并且窗口保持交互而不会阻塞.
在交互式shell中使用Tkinter时,似乎不需要运行主循环.举个例子:
>>> import tkinter
>>> t = tkinter.Tk()
Run Code Online (Sandbox Code Playgroud)
将出现一个窗口,它不会阻止:您可以与它进行交互,拖动它并关闭它.
因此,交互式shell中的某些内容似乎确实创建了一个窗口并在后台运行事件循环.
现在为有趣的事情.再次从上面举例,但是在下一个提示中(不关闭窗口),输入任何内容 - 而不是实际执行它(即不要按回车键).例如:
>>> t = tkinter.Tk()
>>> print('Not pressing enter now.') # not executing this
Run Code Online (Sandbox Code Playgroud)
如果您现在尝试与Tk窗口进行交互,您将看到它完全阻止.因此,当我们向交互式shell输入命令时,我们认为将在后台运行的事件循环停止.如果我们发送输入的命令,您将看到事件循环继续,我们在阻塞期间所做的任何操作都将继续处理.
所以最大的问题是:交互式shell中发生的这种魔力是什么?当我们没有明确地执行它时,什么运行主循环?为什么我们输入命令时需要停止(而不是在执行命令时停止)?
注意:以上在命令行解释器中的工作方式与此类似,而不是IDLE.对于IDLE,我假设GUI实际上并不会告诉底层解释器已经输入了某些内容,而只是将输入保存在本地,直到它被执行.
我正在使用Ubuntu 12.04 64位,我想使用PHP交互式shell:
php -a
Run Code Online (Sandbox Code Playgroud)
但它似乎不能很好地工作,很多语法都被错误地解释了.
当我运行php -a它时显示:
interactive mode enabled
Run Code Online (Sandbox Code Playgroud)
只是一个光标闪烁.
我正在使用:PHP 5.4.13-2~precision + 1(cli)(内置:2013年3月21日12:17:18)
我如何使用PHP交互式shell?
我一直在使用Wing IDE进行python编程,我正在尝试切换到Eclipse,PyDev.
当我在Wing IDE中运行我的代码时,在完成执行后,控制台会立即回到交互式shell,我可以继续测试,但我不知道如何在Eclipse中执行此操作.我不确定我是否正确描述了我的问题,所以我将使用一个例子:
假设我有一个看起来像这样的简单源代码(例如test.py):
print("hello")
Run Code Online (Sandbox Code Playgroud)
当我通过单击绿色箭头在Wing IDE中运行它时,控制台在执行后将如下所示:
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
Type "help", "copyright", "credits" or "license" for more information.
[evaluate untitled-1.py]
hello
>>>>
Run Code Online (Sandbox Code Playgroud)
我可以继续在shell上做任何事情,它会知道我的代码(定义函数等).但是当我在Eclipse中做同样的事情时,控制台看起来就像这样:
hello
Run Code Online (Sandbox Code Playgroud)
然后我必须单击"删除所有已终止的启动"按钮返回到shell.
这可以在Eclipse中完成吗?
我编写了一个异常处理程序,用于在调用普通的python异常挂钩之前记录代码中所有未捕获的异常.Python和iPython的实现方式略有不同.我发现iPython这样做的方式只有在交互式会话中运行时才有效,或者当使用".ipy"文件扩展名时,尽管我不相信我使用的是任何"魔术".即使脚本名为.py并且是'Pure python',常规的python方式也无法在ipython中运行.
我想要一种方法能够在脚本中为iPython设置我自己的异常挂钩,即使它是从命令行调用为".py"文件.
示例代码testcase.py:
import sys
def my_exc(exc_type, exc_value, exc_traceback):
"""Regular Python exception handler with inputs mirroring sys.excepthook"""
print('\nDoing Custom Stuff (Python exc handler)\n')
# Call the old sys.excepthook as well
sys.__excepthook__(exc_type, exc_value, exc_traceback)
def imy_exc(shell, exc_type, exc_value, exc_tb, tb_offset=None):
"""IPythonic exception handler, following instructions in
set_custom_exc here:
http://ipython.org/ipython-doc/stable/api/generated/IPython.core.interactiveshell.html"""
print('\nDoing Custom Stuff (iPython exc handler)\n')
# Do regular IPython stuff as well
shell.showtraceback((exc_type, exc_value, exc_tb), tb_offset=tb_offset)
try:
__IPYTHON__
from IPython import get_ipython
shell = get_ipython()
if shell:
print('Shell Active')
# …Run Code Online (Sandbox Code Playgroud) python exception-handling ipython python-2.7 interactive-shell
我的任务是创建一个嵌入在python中的交互式shell,这样当从命令行调用它时,它将被放入该shell中.任何人都可以推荐我这样做的图书馆吗?
我需要能够创建自定义单词"actions",所以当用户输入这些单词时,我的程序可以执行我创建的正确函数.我还想在我创建的自定义单词上完成自动完成/标签的功能.
例:
$ python myapplication.py
$ myapp>
$ myapp> help
... prints the help menu
$ myapp> run service blah
.. service blah runs ...
$ myapp> exit
$
Run Code Online (Sandbox Code Playgroud) 如何在bash交互式shell中轻松获取前一个命令的倒数第二个(倒数第二个)单词/参数?我经常在后台运行命令,我想获取之前指定的文件&,例如,
% echo foo > /tmp/foo &
% cat !$
% &
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,!$给出最后一个单词,&.但我想要倒数第二个论点,/tmp/foo
请注意,可以使用类似范围的单词指示符!-1:3,但这对于具有大量单词的命令来说是不切实际的,其中不太明显有多少单词,例如,
% (set -x; date; pwd; git status; git diff; git log | tail -30; date; args=--verbose time make test; date) >& /tmp/log/make.test.20150122-Thu-0834 &
% echo !-1:30
/tmp/log/make.test.20150122-Thu-0834
Run Code Online (Sandbox Code Playgroud)
上面的示例有效,但您必须计算并知道您想要的单词是第30个单词,这非常耗时且容易出错.
有一个简单的方法来获得倒数第二个(倒数第二个)单词吗?
(请注意,此问题是指交互式shell中前一个命令的参数,而不是指从命令行传递给shell脚本的参数,因为这里的一些答案和注释是指.)
bash shell command-line command-line-arguments interactive-shell
我在 Windows 上有一个交互式 shell 应用程序。我想编写一个 python 脚本,它将向该 shell 应用程序发送命令并读回响应。不过,我想以交互方式执行此操作,即我希望 shell 应用程序随着 python 脚本的运行而继续运行。
我努力了
self.m_process subprocess.Popen(path_to_shell_app,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True)
Run Code Online (Sandbox Code Playgroud)
然后使用 stdin 和 stdout 发送和接收数据。似乎外壳应用程序正在打开,但我无法与其通信。
我究竟做错了什么?