> For the complete documentation index, see [llms.txt](https://irosyadi.gitbook.io/irosyadi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://irosyadi.gitbook.io/irosyadi/awesome/linux-resource.md).

# Linux Resources

## Linux

* [The Linux Command Handbook](https://www.freecodecamp.org/news/the-linux-commands-handbook/)

## Basic Linux

Note that these suggestions are *off the top of my head* and surely biased by my own needs.

1. `bash` shell basics
   1. Navigating the shell.
   2. Using one of the common editors, such as `vim`, `emacs`, or `nano`. My personal favorite is `vim`, but that's probably because I've been using it (or its predecessor, `vi`) longer than most redditors have been alive.
   3. Listing (`ls`) and deleting (`rm`) files.
   4. Changing file permissions (`chmod`).
2. Using the `find` command.
3. Using basic Linux tools in pipelines, such as `tr`, `wc`, `basename`, `dirname`, etc.
4. Using `awk`/`gawk`. This tool is so incredibly powerful. I use it almost daily.
5. Using `apt`. Note that `apt-get` is the older package manager, and although it's largely compatible with `apt`, there are some differences.
6. Programming
   1. Learn the basics of `bash` shell programming, including conditional statements, looping structures, variables, etc.
   2. Definitely learn `python`, with a focus on `python3`.
   3. php: see Web Dev below.
   4. Learning C and/or C++ are desirable too, but you don't need this skill immediately. However, knowing these languages will give you better knowledge for compiling packages and eventually writing your own.
7. Web servers
   1. You won't go wrong with `apache2`, but these days, I'm using `nginx` more often.
   2. Installing SSL/TLS certs.
8. Networking
   1. Using `iptables` to configure firewall rules.
   2. Using `ip route` to configure routes.
