Table of Contents
IT tricks
Various tips how to increase your productivity (esp. in Linux).
Editors
Who uses which editor and is willing to provide a mini-training for new users (show config, favorite macros, highlighters etc.).
Feel free to add your name and editor.
- vim: Ondřej Bojar, Ruda Rosa, Milan Straka (C++ completion, Python completion, asynchronous make), …
- to start learning vim, run the
vimtutor
command
- emacs: ?
- nano:
- atom: Martin Popel
- IntelliJ IDEA: Jonáš Vidra
- Kate: Jonáš Vidra
- Kile (offline TeX editing): Anša Vernerová
- PyCharm: Petr Bělohlávek
- VS Code (remote access, IDE - Python, C++, etc. completion, terminals): Peter Polák
Bash
- Use Bash auto-completion (
source /etc/bash_completion
). Some tools have plugins, e.g. many Perl tools. export HISTCONTROL=ignoreboth
results in bash history ignoring duplicate entries and entries starting with a space.
Directory-local Bash history
- Ondřej Bojar prefers to store the history in each directory in
.history-bojar
. See/home/bojar/diplomka/granty/cracker-2015/mtm-2016-organization/accounts-mtm16/bash-profile-for-ufal-accounts
- Note that this creates the “.history-your-name” wherever you have write access and some ÚFALers are not happy with this. In addition everyone sees what you did (this may be useful, but be careful).
- Ondřej Dušek (
/home/odusek/.bashrc
) uses a variant more friendly to others, which saves the histories in his home (but does not handle renamed directories):if [ -z "$USER" ]; then export USER=`whoami` fi # Store all history with times and directories function store_history () { history 1 | awk '($2 !~ "^[mr]?cd[0-9a-z]?$") {$1="_T="strftime("%Y%m%d_%H:%M:%S_") PROCINFO["ppid"] "_PWD=" ENVIRON["PWD"] "\t"; $2=gensub("^_T=[-_0-9:]*[ \t]* *", "", 1, $2); $2=gensub("^_P=[^ \t]* *", "", 1, $2); print;}' >> ~/.history-all-$USER } export PROMPT_COMMAND="store_history" # Grep history function dhist (){ DIR=`pwd` command grep "_PWD=$DIR"$'\t'".*$@" ~/.history-all-$USER | tail -n 30 } function hist (){ if [ "$#" -eq 0 ]; then tail -n 30 ~/.history-all-$USER else command grep "$@" ~/.history-all-$USER | tail -n 30 fi }
Colorful manpages
Add this to your .bashrc (tested on .zshrc). Colors can be easily customized.
man () { env LESS_TERMCAP_mb=$'\E[01;31m' \ LESS_TERMCAP_md=$'\E[01;38;5;74m' \ LESS_TERMCAP_me=$'\E[0m' \ LESS_TERMCAP_se=$'\E[0m' \ LESS_TERMCAP_so=$'\E[38;5;246m' \ LESS_TERMCAP_ue=$'\E[0m' \ LESS_TERMCAP_us=$'\E[04;38;5;146m' \ man "$@" }
Git
- bash-git-prompt shows e.g. the current branch and status. Martin Popel prefers to configure it (in bashrc) with
export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWSTASHSTATE=1 export PS1='[\t]\[\033[2;31m\]\h:\W\[\033[01;95m\]$(__git_ps1 "(%s)")\[\033[2;31m\]>\[\033[0m\] '
- tig text-mode gitk but better
- learn GitHub keyboard shortcuts, esp. “y” for permalink to a given line (line range) in source codes
Plots, vector graphic
- seaborn based on matplotlib (Python)
- inkscape manually draw vector graphic (or poster)
- TikZ great for LaTeX/Beamer, offers many “plugins”
- tikz-dependency dependency trees (in one line)
- tikz-qtree classical trees (constituency, but with some hacks even dependency)
LaTeX, pdf
- see also triky
- pdftk for merging and splitting pdf files (and much more) from the command line
- use pdffonts to check if all fonts in your pdf are embedded (only the used subset).
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=CompressedWithEmbeddedFonts.pdf Original.pdf
- http://ufal.mff.cuni.cz/~popel/latex.pdf other hints (mostly for newbies) in Czech
- Beamer is a LaTeX package for creating presentations.
- You can use it with pdfpc to show slides on the overhead projector while reading your notes on your laptop's screen. Create the dual-screen PDF with
\usepackage{pgfpages} \setbeameroption{show notes} \setbeameroption{show notes on second screen=left}
and add notes using\note{Hello!}
. Then display your presentation withpdfpc –notes=left presentation.pdf
.
- If you need a pdf-a validator (e.g. for your thesis), you can use `/lnet/ms/projects/verapdf/checkpdf` in the ufal internal network, which is a wrapper for the verapdf tool. New versions of the specification of exact requirements for submitting theses at the Charles university (called a “profile”) appear regularly at https://cuni.cz/UK-7987.html; by default, the tool uses version UK-7987-version1-custom8.xml .
TAR archive mounting
If you work with data consisting of many small files, you should store them in tar archives to save inodes. There is a way to mount a tar archive to a specific directory in the simmilar way you mount ISO image. You can use the following wrapper script to mount (read-only) ARCHIVE to DIRECTORY:
/opt/bin/tarmount -a ARCHIVE DIRECTORY
and umount when you finish your work:
/opt/bin/tarmount DIRECTORY
You can also use the original tool called ratarmount directly through the link:
/opt/bin/tarmounter
Other
- When using Perl at ÚFAL, we recommend using Perlbrew with shared perl interpreters (different versions) and shared Perl modules (which otherwise take several hours to install and 6GB).
- See Python for using Python at ÚFAL.
- See remote access, esp. for byobu and mosh.
- You should not turn off Linux workstations at ÚFAL, unless really needed (or agreed with it@ufal). In that case, try the standard ways, and if they do not work, try Ctrl+Alt+SysRq+[R,E,I,S,U,B] rather than plug out power cable. Mnemonics: “Reboot Even If System Utterly Broken”, see http://en.wikipedia.org/wiki/Magic_SysRq_key#Uses
- SysRq has also other interesting uses: For example, if you manage to launch a program that exhausts all RAM, the system starts swapping and becomes unresponsive, you can recover by invoking the OOM-killer by pressing Ctrl+Alt+SysRq+F.
- Ondřej Bojar has implemented many Text utils, which he likes to use in his scripts and advises his students to do so as well.
- The web versions of the text utils are often older than the ones in
/home/bojar/tools/vimtext
and/home/bojar/tools/shell
- shuf shuffle lines randomly (or in a given order with
–random-source
)