# Must know basic Linux commands

Linux is an open-source operating system with a huge number of distributions, some of them:

* Ubuntu
    
* Linux Mint
    
* CentOS
    
* Fedora
    
* Debian
    

Most of these operating systems have a graphical interface that provides a wealth of features, but the greatest power of Linux comes with the use of a command-line interface (CLI)

For this reason, it is useful to know some of the most common Linux CLI commands.

## Commands for working with files

### `cd` command

Many times, we can change the active directory we are currently working with. This is done with the `cd` command.

```bash
cd /home/user/folder1
# Current directory will be /home/user/folder1
```

### `ls` command

The `ls` command is used to display the contents of the current directory.

```bash
ls

# Output example
Desktop Documents Downloads Music Public
Temp .gitconfig

ls -R # list all the files in the sub-directories
ls -a # show hidden files
ls -al # list all info's about a file (size, owner ...)
```

### `pwd` command

The command tells us which is the currently active directory.

```bash
pwd # return the current directory
# output example
/home/user/folder1
```

### `cat` command

Perhaps the most commonly used command in Linux, as it allows you to create, combine files.

```bash
cat > file # create file with name file in current directory
cat file1 file2 > file3 # joins file1 and file2 and create output file3 in current directory
```

### `cp` command

`cp` command disables copying a file from the current directory to another.

```bash
cp document.txt /home/user/Documents # copy document.txt from current directory to folder called Documents
```

### `mv` command

`mv` allows you to move files.

```bash
mv document.txt / home / username / Documents # move document.txt from current directory to folder called Documents
```

You can also rename files with this command.

```bash
mv oldname.txt newname.txt # rename file from oldname.txt to newname.txt in the current directory
```

### `mkdir` command

This command creates new folders.

```bash
mkdir Archive / Documents # create folder called Documents from current directory 
mkdir -p Archive / 2021 / Documents # create folder 2021 between folders Archive and Documents
```

### `rmdir` and `rm` command

Commands can be used to delete folders.

With rmdir we can only delete **empty folders**.

With rm, you can delete the entire folder (check before use because it is not possible to restore the deletion).

```bash
rmdir NotusefulFolder # remove NotusefullFolder (it is empty) from the current directory
rm Folders / NotInUse # remove all files and folders in folder NotInUse from the current directory

rm -r NotUsefulFolder # command equal to rmdir
```

### `touch` command

The command allows you to create new files.

```bash
touch file.txt # create a file in the current directory
```

### `find` command

Used to search for a specific file.

```bash
find
```

### `cat` command

This command allows us to print the contents of a file.

```bash
cat
```

### `head` command

Display us the first 10 lines of the file.

```bash
head file.txt
```

### `tree` command

Return filesystem directory tree.

```bash
tree
```

## Setup commands

### `sudo` command

Abbreviation for "SuperUser Do", with this command we can execute commands that require administrative authority.

```bash
sudo <SOME_ACTION> # In the next step you must input the password for the root/admin user
```

### `df` command

Shows us disk usage in KB and percent.

```bash
df # Return disk usage in KB
df -m # Return disk usage in MB
```

### `kill` command

The Kill command allows you to stop a specific process.

```bash
ps # return list of active processes

kill 11111 #kill process with PID 11111
```

### `zip` and `unzip` commands

They allow us to create compressed zip files and expand zip files.

```bash
unzip zipped_file.zip # command unzip zipped_file.zip file

```

## `ping` command

The command is used in most cases when we want to check if a device is active on the network

```bash
ping hashnode.com
```

### `hostname` command

The command tells us the name of the device

```bash
hostname # return hostname of the device
# example output
server
```

### `useradd` and `passwd` command

`useradd` allows us to create a new user. Passwd allows us to change or set a password.

```bash
useradd NewUserName # create new user
userdel UserName # delete user

passwd UserName # can set a password if doesn't exist or change if exists
```

### `wget` command

A very useful command to download files.

```bash
wget DownloadFileURL # download file in current directory
```

### `free` command

After giving us the amount of memory used.

```bash
free -h # return usage of memory - RAM (human-friendly numbers and units)
```

### `shutdown` and `reboot` command

Simple commands - the sessions already name what they learn.

```bash
shutdown # shutdown computer
reboot # reboot computer
```

Maybe if you have read in detail and gotten to know the Windows terminal, then you have noticed some commands are the same.

Of course, there are even more of these commands, but I mentioned the most commonly used ones. If I forgot any, and you find it important to use in Linux, mention them in the comments 😊.
