Tips, tricks and tools for Linux/Unix
[I completely updated this article in early 2014.
In particular, I included links directly to blog posts
and books that discuss each tool.]
Unix is a different way -- a different philosophy -- of computing.
This is a compendium of all the useful Unix tools I've used over the years:
If you're new to Unix/Linux,
you should check out my related posts:
Text, word and document processing
- emacs: An instance of the text-editor-as-operating-system thesis.
-
vim: A text editor that brutally minimizes the number of keystrokes.
- TeX and LaTeX: High-quality scientific and technical publishing tools.
- qtree: A package for drawing parse trees.
- Active-DVI: A feature-rich DVI viewer.
- ArabTeX: Write arabic script in LaTeX.
- Xy-pic: A graph-rendering language for LaTeX.
- Bibtex: Effortless bibliography and citation management.
- pstricks: Graphics in LaTeX.
- TikZ: Beautiful diagrams in LaTeX.
- eepic: Graphics in LaTeX.
- HeVeA: A powerful LaTeX-to-HTML converter.
-
Related books:
Guide to LaTeX.
For low-level TeX-hacking, Knuth's original is the only guide
that helped me write programs in raw TeX:
The TeXbook
- gnuplot: Graph data of all kinds; import them into LaTeX.
- Xfig: GUI tool for drawing diagrams for LaTeX. Old, but still useful.
-
DOT: For rendering large graphs/networks/charts automatically.
- GraphViz: An excellent OS X interface for DOT files.
-
gnumeric +
OpenOffice +
catdoc and xls2csv:
For dealing with Microsoft Office documents.
-
Google Docs/Drive: Makes cross-platform, multi-user documents easy; it has some support for Microsoft Office documents
Networking, security and system administration
Window managers
- ion:
The only innovative window manager ever.
Web browsing and web development
- Firefox: Great for browsing, great for development.
- lynx |
links:
Browse the web from the command line.
- wget |
curl: Scrape the web from the command line.
-
nodejs: A non-blocking implementation of JavaScript geared toward writing daemons.
- Ruby on Rails | Perl | PHP: For dynamic pages.
- GD: Dynamic image generation.
- CGI: For web devolpment in Perl.
- MySQL | PostgreSQL: Relational database servers.
- CouchDB: A NoSQL database server
based in JavaScript.
Mail and messaging
Command-line control
- bash: An ugly but useful shell-scripting language.
- zsh: A better bash.
- screen | tmux: Leave a console process running; re-connect to it later.
- bc: A command-line calculation language.
- sudo: Delegate partial super-user privileges.
- safe-rm: Eliminate the risk of an accidental rm -rf /.
- ducks: Hunt down space hogs.
- autojump / j:
Automatically track/jump to frequent directories.
Programming languages and software development
- Scheme Shell +
Racket:
Robust, hacker-friendly
Scheme environments, interpreters and compilers.
- SXML:
A nifty encoding of XML into S-Expressions.
-
A guide to learning Racket, motivated by video games:
Realm of Racket
- (MLton +
SML/NJ) |
OCaml: High-performance, high-reliability functional programming.
- Scala: A strictly superior replacement for Java.
-
haskell: A lazy, purely functional programming language.
- Java SDK: Beause it runs everywhere.
- javadoc: Source-code documentation management.
-
ANTLR |
(JLex +
CUP): Lexer/parser generators for Java.
- gnu toolchain: Because C is still around.
-
lex +
yacc: Lexer/parser generators for C.
- make: Project compilation management.
- subversion:
Centralized source-code version control. (Works great with LaTeX too.)
-
git |
mercurial:
Decentralized source-code version control.
- SDL + OpenGL:
A mature cross-platform 2D and 3D graphics libraries.
-
WebGL:
A JavaScript API for 3D graphics.
- Squeak: An instance of the programming-language-as-operating-system thesis.
Text manipulation
- m4 +
awk +
sed: Macros and regular expressions.
-
diff +
patch: Study file changes; make patches.
Digital media viewing and manipulation
Dealing with Windows
- Wine: Run Windows programs under Linux.
- Parallels: Run Windows (or Linux) on Mac OS X.
Good books
Related pages
Twitter: @mattmight
Instagram: @mattmight
LinkedIn: matthewmight
Mastodon: @mattmight@mathstodon.xyz
Sub-reddit: /r/mattmight