4 ways to be more productive, using RStudio’s terminal

[This article was first published on Jozef's Rblog, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Introduction

RStudio version 1.1 introduced the Terminal functionality, which does not seem to be getting enough deserved attention and love even though it is very well integrated with the rest of the IDE and can be extremely useful for several daily use-cases.

In this post we will try to cover 4 very common scenarios where the Terminal can be very useful and productive, and how to get the most of it.

RStudio Terminal Fun

RStudio Terminal Fun

In short, the RStudio Terminal provides access to the system shell directly from the RStudio IDE, supporting xterm emulation, full-screen terminal applications, command line operations and more. It also has useful customizable keyboard shortcut bindings to make frequent usage more efficient and enables usage of multiple such Terminals simultaneously.

The experience may vary based on each user’s setup, this experience comes mostly from using RStudio server on a Linux-based system.

Four common use-cases

1. Execute resource-heavy R code in the Terminal quickly

A very common use case where the Terminal makes my life a lot easier is when I need to execute a longer running or resource-heavy tasks in R. Using the RStudio IDE’s session for such tasks can be challenging because running them can slow the entire IDE down, sometimes even so much that it is barely usable. We can easily prevent this by running such tasks in a separate R process within the Terminal. We could of course do this using putty or other software, however doing it within RStudio brings

  1. seamless keyboard shortcut integration between the editor window and the Terminal
  2. ability to use multiple Terminals easily
  3. no need to use other software

To run commands in the terminal, we simply press:

  • Shift + Alt + R to open a new terminal
  • launch R in the Terminal
  • Ctrl + 1 to focus back to the editor window
  • Ctrl + Alt + Enter to send commands to be executed directly to the Terminal

We can also do this with multiple Terminals if we need to run multiple such “jobs”, and easily switch between Terminal windows using keyboard shortcuts

  • Ctrl + Alt + F11 – Previous terminal
  • Ctrl + Alt + F12 – Next terminal

Note the shortcuts mentioned above are default and more than likely not Mac-relevant, but you can easily find those as well in case you are a Mac user, and change them to your liking as well.

2. Advanced version control directly within RStudio

RStudio has a neat version control integration which is a very nice addition to the IDE, however there are some advanced version control operations that are not possible to handle there directly, git rebase and git push --force being just a couple of examples. Thanks to the Terminal, you can very easily do all those operations without ever leaving your RStudio IDE.

3. Serving your Shiny app/Blogdown site without blocking or slowdown

My favourite use of the Terminal when writing this blog is to serve the site via the Terminal and see the changes I make live, without the IDE being slowed down and laggy, which often happens when serving the site directly from RStudio’s R session. A very similar point also applies when running a Shiny app from within RStudio. This simple use of the Terminal makes things more convenient for me.

Running a Shiny app. We can use a pre-selected port to make viewing later easier:

# Send to the terminal with Ctrl + Alt + Enter:
R -e 'library(shiny); runApp("appdir", port = 9999, launch.browser = FALSE)'
# Then show in the viewer with Ctrl + Enter
rstudioapi::viewer("http://127.0.0.1:9999")

Similarly, serving a Blogdown site:

# Send to the terminal with Ctrl + Alt + Enter:
R -e 'library(blogdown); blogdown::serve_site(port = 9999, browser = FALSE)'
# Then show in the viewer with Ctrl + Enter
rstudioapi::viewer("http://127.0.0.1:9999")

Alternatively, we can also use rstudioapi to send commands to the Terminal:

termId <- rstudioapi::terminalExecute("R -e 'getwd(); library(shiny); runApp(\"appdir\", port = 9999, launch.browser = FALSE)'")
# Then show in the viewer with Ctrl + Enter
rstudioapi::viewer("http://127.0.0.1:9999")
# When done, we can kill that terminal
rstudioapi::terminalKill(termId)

4. Test your bash, python and much more conveniently

Since the Terminal is really just system shell access, you can get very creative with its use. To me, the key here is the keyboard shortcut integration between the editor and the terminal.

Very basic example using the Terminal to run python code. Note that this (somewhat obviously) works around R and the need for an R to Python interface package:

# Ctrl + Alt + Enter to send to the Terminal
# Launch python
python
# Run some python code
1 + 1
# When done with python, exit
exit()

Testing a random bash script

# Ctrl + Alt + Enter to send to the Terminal
echo "Run tmux, split window and run top"
tmux new -s "Fun"
tmux switch -t "Fun"
tmux split-window -h
tmux select-pane -t 0
top

Quick notes

  • By default, the processes in Terminal run as child processes of the main rsession process, therefore restarting R session will kill those. We can workaround this fact using tools like screen or tmux
  • You can specify what the Terminal sessions are open with under Tools -> Global Options... -> Terminal
  • The Terminal can be interfaced with using the rstudioapi package functionality. Read the Interacting with Terminals vignette to learn more.
  • If the default keyboard shortcuts are not the most convenient for you, they can be updated and more added under the Tools -> Modify Keyboard Shortcuts... menu in RStudio

Resources

Coat of arms of SlovakiaThe last Saturday of September 20 years ago a key parliamentary election was held in Slovakia, resulting in the end of the reign of Vladimír Mečiar’s government and Slovakia being able to conduct crucial reforms and become a member of the EU and NATO.

Did you find the article helpful or interesting? Help others find it by sharing

To leave a comment for the author, please follow the link and comment on their blog: Jozef's Rblog.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)