# About the UNIX system

## UNIX system knowledge

* I/O (Input/Output, IMPORTANT): what is stdin, stdout, stderr. What does "`|`" (pipe) do.&#x20;
* Job control (IMPORTANT): `top`, `kill`, `jobs`, `bg`, `fg`, use "&" to put job in bg, `nohup`
* What is process, what is thread?
* What is [local variable](https://www.tutorialspoint.com/unix/unix-using-variables.htm), especially, what is the (most useful) `PATH` variable and [how to change the PATH variable in \~/.bashrc](https://opensource.com/article/17/6/set-path-linux).&#x20;
* Basic navigation: `pwd`, `cd`, `ls` (`ls -l`, `ls -hl`, `ls -hal`, understand output of `ls -l`)
* Read files: `cat`, `less`, `file`(tell you whether a file is binary or is compressed), `head`, `tail`, `grep`, `sort`
* Manipulate files:`cp`, `mv`, `rm`, `mkdir`, `ln -s`
* Working with commands: `type`, `which`, `help`, `man`
* Permissions: `chmod`

{% hint style="info" %}
For quick introduction, I really recommend [**this short book**](http://linuxcommand.org/lc3_lts0010.php). The "[Learning the Shell](http://linuxcommand.org/lc3_learning_the_shell.php)" chapter is about all the must-know of using UNIX systems (Linux, Mac OS), fairly enough for a beginning. The above list is actually based on this chapter.
{% endhint %}

