How can I run shell (terminal) in Google Colab?
I know that I can call !ls
to issue ls
command to shell.
But I want features like history or tab-completion.
Is it possible to do so in Google Colab?
You can use jQuery Terminal Emulator backed with google.colab.kernel.invokeFunction
Here's an example notebook.
The key part is here, where you back it with shell function.
def shell(command):
return JSON([getoutput(command)])
output.register_callback('shell', shell)
And here's how you use 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));
}
Here's a screenshot.
Update (7/2020)
I have taken @Anant's answer and add it into my library. Now you can run console easily with just
!pip install kora
from kora import console
console.start() # and click link
Update (12/2020)
If you subscribe to Colab Pro, terminal is now available. Just click the 'Terminal' icon on the left pane.
Just type the following. It will spawn a bash session.
!bash
It displays commands in a password format. If you change the input type from password
to text
using browser dev tools, it will be really helpful.
Better try this -
- Install Teleconsole on Colab, its a package to use terminal over internet -
!curl https://www.teleconsole.com/get.sh | sh
- Run below code on colab notebook to use Teleconsole -
You should get output something like -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
- Either open the web interface by following the link for accessing the terminal or open a local shell terminal and install Teleconsole using the command -
Then use the below code to join the terminal using Teleconsole Id you got in step No. 2-curl https://www.teleconsole.com/get.sh | sh
teleconsole join <Teleconsole ID>
This method can also be tunneled through ssh with some additional steps.
Google Colab Shell
Free Terminals for everyoneDisplays a terminal for Google Colab
https://github.com/singhsidhukuldeep/Google-Colab-Shell
Setup
pip install google-colab-shell
Usage
# import the module once
from google_colab_shell import getshell
## Anytime you want to open a terminal
getshell()
getshell(height=400) # custom height of the terminal
IMPORTANT: Make sure getshell
is the last command in the cell.
Documentation
Displays a terminal for Google Colab. <3 Google
Make sure this is the last command in the cell.
Parameters
----------
height : int, default 400
height of the rendered terminal
Returns
-------
IPython.display.HTML
Displays the terminal
Examples
--------
>>> getshell()
>>> getshell(height=400)
Please Contribute: https://github.com/singhsidhukuldeep/Google-Colab-Shell#todo-want-to-contribute 🙌