Using a terminal¶
As described in the VS Code introduction, any Python code that you write can be run within VS Code. However, it use also useful to know how run code and navigate a file system using a terminal (sometimes referred to as a Command Prompt window, console or shell). Indeed, a Python code interpreter can be run interactively via a terminal as will be described in another tutorial.
A terminal is a text-based window that allows you to type and run commands. There are different terminal programs for different operating systems, the most common being:
Note
If you have installed Anaconda you should access the
PowerShell using the "Anaconda PowerShell Prompt", which automatically starts the terminal
with the ability to run conda
commands and within virtual environments, instead of the
standard Windows PowerShell.
Open this by either:
- clicking the Windows start button and scrolling to find "Anaconda Powershell Prompt (anaconda3)" within the "Anaconda3 (64-bit)" menu;
- or, searching for "PowerShell" in the search bar and selecting "Anaconda Powershell Prompt".
The "Anaconda Powershell Prompt" can also be launched from within the Anaconda Navigator.
Open this by either:
- clicking the Launchpad icon, type "Terminal" in the search bar and then clicking on Terminal;
- or, in Finder, opening the "Applications/Utilities" folder and double clicking on Terminal.
There are a wide variety of terminal applications that come with different Linux distributions and desktop environments.
In most distributions a terminal can be opened using the key combination Ctrl+Alt+T, although there may also be an icon in a launcher panel, or it can be found through the desktop environment's search functionality.
Within a terminal, the line you input commands onto is called the command line and it starts with some characters called the command prompt:
The PowerShell command prompt will generally end in a >
character and contain the path of
the current directory.
The command prompt will often end with a $
or #
character.
If you have installed Anaconda, the command prompt should start with the name of the Anaconda
environment in brackets, e.g., (base)
for the default environment.
A terminal might sometimes be referred to as a "shell"; the shell is a program that runs within the terminal and is what you actually interact with when running commands. Another common term used to describe a terminal is a "console". Despite subtly different meanings terminal, console and shell are often used interchangeably.
Note
In a Mac OS/Linux terminal there are a variety of different shells that you can use with slightly different syntaxes and abilities (shells are themselves coding languages), but on most distributions the default shell is called bash.
Terminal "cheat sheet"¶
Below we will go through a few of the basic commands, with examples, to help navigate using a terminal. If there is a different syntax between Windows, Mac OS, or Linux these will be given. For Windows these commands assume you are using the PowerShell and not a different terminal program.
Two useful features (among others) of a terminal are:
- command history: the ability to toggle back (and then forward) through previous commands you have typed using arrow keys Up and Down;
- tab completion: the ability to autocomplete a known command or filename using the tab Tab key.
Note
The examples shown below start with a command prompt character, in these cases either >
or
$
, which does not need to be typed.
Show the current directory path¶
pwd
When you open a terminal there will be a default directory that the command prompt will be based in. To find out what this directory is, if not known, you can run, e.g.:
> pwd
Path
----
C:\Users\username
$ pwd
/home/username
Change between directories¶
chdir
or cd
cd
You can change to a new directory using either its path relative to the current directory you are in, or using the absolute path, i.e., the full path from the drive or base directory name, e.g.,
# move to a directory called level1 within the current directory using its relative path
$ cd level1
# move to a directory called level2 specifying its full path
$ cd C:\Users\username\level2
To move down one directory level use two dots, e.g.,:
$ cd ..
List the contents of a directory¶
dir
or ls
To list the contents of the current directory (in alphabetical order) use:
> dir
Directory: C:\Users\username
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 04/09/2020 16:03 .conda
d----- 04/09/2020 19:33 anaconda3
-a---- 09/09/2020 12:34 10 test.txt
The "Mode" shows "d-----
" for a directory and "-a----
" for "archive", i.e., a file.
To list the contents of a particular directory supply either the relative or absolute path, e.g.,:
> dir C:\Users\username
ls
To list the contents of the current directory (in alphabetical order) use:
$ ls
alphabet.txt
Bookmarks
notes.pdf
To also list the attributes (e.g., accessibility, file creator, file size, date of last change)
of files and directories use the -l
flag, e.g.,:
$ ls -l
-rw-r--r-- 1 username username 4096 Aug 10 22:06 alphabet.txt
drwxr-xr-x 2 username username 4096 Jan 12 2018 Bookmarks
-rw-r--r-- 1 username username
A d
at the start of the attributes indicates a directory, while a -
is a file. The other
letters (r
, w
, and x
) represent whether, and by whom, the files are readable, writable
and executable, respectively.
To colourise the output, i.e., give files and directories different colours depending on their
types the --color=auto
flag can be used.
To list the contents of a particular directory supply either the relative or absolute path, e.g.,:
$ ls /home/username
Make a new directory¶
mkdir
E.g., make a directory called Project
in the current directory:
$ mkdir Project
Or, make new directory based on an absolute of relative path, e.g.,:
> mkdir C:\Users\username\Project
$ mkdir /home/username/Project
Show the content of a text file¶
more
or type
more
, less
, or cat
For short files, that can be displayed fully within the terminal window the more
and cat
commands are essentially equivalent (note that cat
can actually be used to concatenate the
content of many files). For longer files cat
will output the whole content in one go while
more
will output just what fits on the screen and the content can be scrolled through with
the Enter key.
E.g., to show the contents of a text file called numbers.txt
in the current directory, which
contains a column of numbers, use:
$ more numbers.txt
1
2
3
4
Relative or absolute file paths can be used for files not in the current directory.
Run a Python script¶
To run a Python script, e.g., one called myscript.py
, that is in you current directory, use:
python myscript.py
The full or relative path to the script could also be used.
Open an Python terminal session¶
To open a Python terminal session (see the Python terminal tutorial) type:
python
Open an interactive Python terminal session¶
To open an "Interactive Python" session (see the IPython tutorial) type:
ipython