Version 12 (modified by 2 weeks ago) (diff) | ,
---|
How to Code in a Terminal Window
When you want to develop programs, e.g. in Python, on a server, the easiest connection option usually is via ssh
access and the command line mode in a terminal window.
In case, you are not used to working in a terminal, we have gathered a small set of recommendations and tutorial links. The examples will be using the NLP lab server aurora as an example.
- for the primary access, see the information for various OSes directly at https://aurora.fi.muni.cz
- for basic navigation once you are logged in, see the Ubuntu tutorial for working in terminal.
- for easy repeated access, you should setup a SSH key authorization, see the simple aurora SSH keys tutorial.
- choose and learn (at least) one in-terminal text editor. An easy
option is the nano editor - just run
nano source.py
and start editing, save withCtrl+S
, exit withCtrl+X
. An advanced option is the vim editor - we suggest e.g. the MIT course VIM intro for an initial engagement withvim
. When you startvim source.py
, you should pressi
to edit the text andEsc
,:w<Enter>
to save changes or:q!<Enter>
to discard changes. - when developing a program, e.g. in Python, we suggest to work in
multiple terminal windows. For each window start a separate
terminal connection to the server (SSH key authorization comes very
handy here), change to the same directory on the server and use
for example:
- one window for source code editing. Do not exit the editor, just save changes and test in another window.
- one window for running the code and inspecting the results.
- one window for running a debug (e.g. via
python -mpbd source.py
). - one window for working with auxiliary files, e.g. edit testing data.
- for easy data+code sharing consider using an independent Git
repository, e.g. https://gitlab.fi.muni.cz/. In that case, you shall
store all your source codes and data files in Gitlab
and just
git clone
the repository to the server. Usegit add
, `git commit -aand
git push` to promote changes that you make on the server back to Gitlab. Usegit pull
to update the previously cloned repository in the server directory with changes made elsewhere. See e.g. the MIT Git info for other details about working with Git. - how to discover and fix errors - we suggest two standard options:
logging
andpdb
debugging:- logging is based on standard Python logging library. It allows to supplement your program with messages of various levels of verbosity which can be turned on and off. A simple program may look like {{{#!python import logging
logging.basicConfig( level=logging.DEBUG, format="%(message)s")
logging.info("Program starting") a = 2 b = 2 logging.debug(f"About to sum {a} and {b}") logging.info(f"The result is {a+b}") }}}
- pdb debugging is run from the command line with include specific
pdb
module. Start the debugging viapython -mpdb source.py
, then use line-based commands as described in the MIT code page. Commandq
quits the debugger.
- if you are curious enough to get to a terminal pro level, we suggest to go through the full MIT course The Missing Semester of Your CS Education.