我知道我可以调用!ls
向外壳发出ls
命令。
但是我想要历史记录或制表符补全之类的功能。
在Google Colab中可以这样做吗?
答案 0 :(得分:8)
只需键入以下内容。它将产生一个bash会话。
!bash
答案 1 :(得分:6)
最好尝试一下-
!curl https://www.teleconsole.com/get.sh | sh
import subprocess as sp
process = sp.Popen("teleconsole",shell=True,stdin=sp.PIPE,stdout=sp.PIPE,stderr=sp.PIPE)
for i in range(6):
print(process.stdout.readline().decode())
您应该得到类似以下的输出:
Starting local SSH server on localhost...
Requesting a disposable SSH proxy on eu.teleconsole.com for root...
Checking status of the SSH tunnel...
Your Teleconsole ID: eu88d75d24084905shgdjhjhfgd1934e55c3786438a3
WebUI for this session:
https://eu.teleconsole.com/s/88d75d24084905shgdjhjhfgd1934e55c3786438a3
curl https://www.teleconsole.com/get.sh | sh
然后使用下面的代码通过步骤2中获得的Teleconsole ID加入终端。
teleconsole join <Teleconsole ID>
此方法还可以通过一些其他步骤通过ssh进行隧道传输。
答案 2 :(得分:0)
您可以使用以google.colab.kernel.invokeFunction
为后盾的jQuery Terminal Emulator
这里是example notebook。
关键部分在这里,您可以使用shell函数对其进行支持。
def shell(command):
return JSON([getoutput(command)])
output.register_callback('shell', shell)
这是invokeFunction
的使用方式:
try {
let res = await google.colab.kernel.invokeFunction('shell', [command])
let out = res.data['application/json'][0]
this.echo(new String(out))
} catch(e) {
this.error(new String(e));
}
这是屏幕截图。