shellcommand-lineterminalgoogle-colaboratory

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?


Solution

  • 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.

    enter image description here

    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.

    Terminal Icon