## Basic to Advance Linux Commands


The Linux command is a utility of the Linux operating system. All basic and advanced tasks can be done by executing commands. The commands are executed on the Linux terminal. The terminal is a command-line interface to interact with the system, which is similar to the command prompt in the Windows OS. 

![e87e53557a3feb72d3a0993fdb12fdf5.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1662298081790/8MYRnUXmb.gif align="left")

Commands in Linux are case-sensitive. The terminal can be used to accomplish all Administrative tasks. This includes package installation, file manipulation, and user management. Linux terminal is user-interactive.  All the basic to advance linux commands are shown below:


- <mark> cd </mark> refer to as change directory that change directory command.


- To make a new directory use the command <mark> mkdir </mark>

```
cd

mkdir

```

![001.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920375344/8benS31JA.png align="left")


- <mark> cd.. </mark> refer to as back to the current directory


```
cd..

```

![002.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920396597/auK9Q1mBH.png align="left")

- <mark> ls -a </mark> will list all files including hidden files

```
ls -a
```

![003.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920407256/AwdEyS0m0.png align="left")

- we can create any file using <mark> touch </mark> command on a specific directory

```
touch
```

![004.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920460572/TDA0FB2qq.png align="left")

- <mark> cat </mark> command print the content of a file onto the standard output stream

- The <mark> vi </mark> always starts in command mode. To enter text, you must be in insert mode  by press <mark> i </mark> from the keyboard ⌨.

```
cat 

vi 
```

![005.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920544139/XlDSEK0Gp.png align="left")


![006.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920716050/ppdxYDzPF.png align="left")


![007.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661920876892/_rTDe6b28.png align="left")


![008.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661921056645/ELSumC90r.png align="left")

- The <mark> ls -l </mark> command Show hidden function

-  The <mark> ls -al </mark> command Show every hidden files

- The <mark> ls </mark> command lists the files inside a folder

```
ls -l

ls -al

ls
```

![009.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661921253854/xUAIsnBUW.png align="left")

- The <mark> ls -R </mark> command show all the path of the sub directory 

```
ls -R
```

![0010.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661921320559/f6qkeaM9W.png align="left")

- make myfile.txt file  and add content on the file

```
cat > myfile.txt
```

![0011.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963834699/iCrbnJSe7.png align="left")

- The Linux <mark> tar </mark> stands for tape archive, is used to create Archive and extract the Archive files. Here we just convert small character to capital character of a perticular string 

```
cat file.txt | tr a-z A-Z > upper.txt

cat upper.txt
```

![0012.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963844203/gp0aiVsb6.png align="left")

- create a new middle directory

```
mkdir -P randor/mid/hello
```

![0013.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963857225/ruMPWaSe0.png align="left")

- make a google.txt file in home directory 

- Make a home.txt file in linuxtest directory


```
touch google.txt

touch test/home.txt
```

![0014.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963880968/UeH46j-iU.png align="left")

- Copy the content of file.txt and paste it to copy_myfile.txt

```
cp file.txt copy_myfile.txt
```

![0015.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963899394/bfj0m89kb.png align="left")

- Add content on file.txt by <mark> echo </mark> command

```
echo linuxtest > file.txt
```

![0016.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963917820/4EkCOm_A8.png align="left")

- Move the file one directory to another by using <mark> mv </mark> command

```
mv copy_myfile.txt linuxtest
```

![0017.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963934295/ttEZ98L__.png align="left")

- Move the content of myfile.txt to file.txt

```
mv myfile.txt file.txt
```

![0018.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963948932/fyaBDe6sC.png align="left")

- Move a copy of content one file to another. Here both operation should run copy and move.

```
mv copy_file.txt ../file.txt
```

![0019.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963962929/k5pTWKsr7.png align="left")

- Copy directory by using <mark> cp -R </mark> command.

```
cp -R linuxtest copy_linuxtest
```

![0020.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661963978136/NjRMw5fSW.png align="left")

- Remove a specific directory by using <mark> rm -R </mark> command.

```
rm -R copy_linuxtest
```

![0021.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662001579276/jy_CQjf6N.png align="left")

- Move a particular directory to another directory using <mark> mv </mark> command. 

```
mv copy_linuxtest test
```

![0022.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662001602167/NdlXGQTzh.png align="left")

- Sudo refres to as superuser do or substitute user do. <mark> Sudo </mark> allows a system administrator to delegate authority to give certain users (or groups of users) the ability to run some (or all) commands.

```
sudo echo hello world
```

![0023.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662001708817/mXbadjCyy.png align="left")

- The <mark> df </mark> command displays the amount of disk space available on the file system with each file name's argument.

- The <mark> df -m </mark> command displays the amount of disk space available on the file system in megabyte unit.

- The <mark> df -hg </mark> command displays the amount of disk space available on the file system in gigabyte unit.

```
df
df -m
df -hg
```

![0024.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662001750898/1Zj2KaPQ3.png align="left")

- The <mark> du </mark> command  allows a user to gain disk usage information 

- 

```
du
du -l
du -h
```

![0025.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662001947029/5qZL3onLb.png align="left")

- <mark> head </mark> command display total number of lines in a file

- <mark> head -n4 </mark> display first 4 lines in a  specific file

- <mark> tail  </mark> command display last ten lines in a specific file

- <mark> tail -n2 </mark> command display last 2 lines of a  specific file

```
head file.txt

head -n4 file.txt

tail file.txt

tail -n2 file.txt
```

![0026.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662002028116/O_owgoJXk.png align="left")

- <mark> diff </mark> is a command-line utility that allows you to compare two files line by line.

```
diff file.txt hello.txt
```

![0027.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662002180199/1jOkztlw5.png align="left")

<mark> locate </mark> command use to find the path of a specific file 

```
locate "file.txt"
```

![0028.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662002257247/vFTdaqkY5.png align="left")

The <mark> find </mark> command use to show all the files in a specific directory even hidden files

```
find.

find..
```

![0029.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662002287250/jT7KLjoCo.png align="left")

- The <mark> find . -type d </mark> command use to show all the directory in a specific location even hidden directory

- The <mark> find . -type f </mark> command use to show all the files in a specific directory even hidden files
 

```
find . -type d

find . -type f

```

![0030.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662002302897/J_PsIvWsC.png align="left")

- <mark> find . -type f -name </mark> command use to find a specific file in a particular directory, also use to find similar file format. 


```
find . -type f -name "file.txt"

find . -type f -name "file*"

find . -type f -name "*.txt"

```

![0031.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018015076/gMlC5hRYn.png align="left")

- <mark> find . -type f -iname </mark> command use to find a specific file in a particular directory without any case sensitivity

```
find . -type f -iname "*.txt"

```

![0032.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018106225/jRK4hRpgX.png align="left")

-  <mark> find . -type f -mmin </mark> use to find a specific file on after timeline or before timeline 

```
find . -type f -mmin +20

find . -type f -mmin +20 -mmin -10

```

![0033.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018312372/vBjNE0LIX.png align="left")

```
find . -type f -mmin -20

find . -type d -mmin -20 

find . -type f -mmin -10

find . -type f -mmin +2 -mmin -10

find . -type f -mtime -10
```

![0034.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018330566/l0be6eKV7.png align="left")

- <mark> find . type f -maxdepth </mark> command find those files that consist of  1 megabyte

- <mark> find . -size +1k </mark> command find those files that consist of  more than 1 kilobyte

```
find . type f -maxdepth 1

find . -size +1k

```

![0035.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018355375/m1EP7uWwO.png align="left")

<mark> find . -empty </mark> find those files which are empty in a specific directory

```
find . -empty
```

![0036.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018379410/70I_Jylnv.png align="left")

- <mark> prem </mark> refer to as linux permissions 

here we can calculate the permission by using this method 

4 ---->Read permission
2 ---->Write permission
1 ---->Execute permission
0 ---->No permission

chmod +rwx filename to add permissions.
chmod -rwx directoryname to remove permissions.
chmod +x filename to allow executable permissions.
chmod -wx filename to take out write and executable permissions.

777 means makes every single file on the system under / (root) have rwxrwxrwx permissions.


```
find . -perm 777

find . -perm 770

find . -perm 440

chmod u=rwx,g=rx,o=r file.txt

chmod 777 file.txt

chmod 577 file.txt

chmod 500 file.txt

chmod 777 upper.txt

```

![0037.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018401649/aqkgWWSUD.png align="left")

- <mark> chown </mark> command is used to change the file Owner or group. That is when ever we make some changes it want a root password. Because we can't read, write or execute operation of owner without admin.  

```
chown root file.txt

sudo chown root file.txt

cat file.txt

sudo cat file.txt

```

![0038.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018453475/7bOtJiMc9.png align="left")

- remove all the .txt files by using remove and add a place holder where all the files are goes into it incremen order and remove. 

```
find . -type f -name "*.txt" -exec rm -rf {} + 
```

![0039.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018476106/PWOj0-9Qt.png align="left")

- <mark> grep </mark> basically something from a particular file and display it.

```
grep "aditya" names.txt

grep -w "das" names.txt

grep -i "ADITYA DAS" names.txt

grep -n "aditya" names.txt

grep -B 3 "sumit" names.txt
```

![0040.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662018656693/-qZ51XLVt.png align="left")

```
grep -win "aditya" names.txt

grep -rwin "adity".
```

![0041.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035340549/ymzxvLrMW.png align="left")

```
grep -win "aditya" ./*.txt

grep -rwin "adity"./*.txt
```

![0042.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035523258/uTlnmQn6Q.png align="left")

- print all the command that we have been using like list.

```
history | grep "ls"
```

![0043.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035557208/Ukljg-qkx.png align="left")

- print all the command that we have been using like <mark> ls -l </mark> .

```
history | grep "ls -l"
```

![0044.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035579422/uRgDnA-EQ.png align="left")

- display the regular expression or a match a particular pattern using <mark> grep -P </mark> command

```
grep -P "\w" company.txt

grep -P "\d{3}-\d{3} -d{4}" company.txt
```


![0045.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035600199/mOroP13G_.png align="left")

- list all the history of commands that we have been use and run the previous command by using a unique command id. 

```
history | grep "ls -l"

! 1155
```

![0046.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035615834/ii-CKbSSq.png align="left")

- all the content of a particular file print on a reverse sorted order by using <mark> sort -r </mark> command

- all the content of a particular file print on a sorted order by using <mark> sort</mark> command

- all the content of a particular file print on a numeric order by using <mark> sort -n </mark> command

```
sort -r company.txt

sort company.txt

sort -n company.txt
```


![0047.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035632531/UrEODZL_P.png align="left")
- <mark> hostname </mark> command in Linux is used to obtain the DNS(Domain Name System) name and set the system's hostname or NIS(Network Information System) domain name.

- The uname command writes to standard output the name of the operating system that you are using. 

```
hostname

hostname -i

uname -o

uname -m

uname -r

lscpu

```

![0048.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035658141/AZsrnjr2R.png align="left")

- The <mark> vmstat </mark>  command (short for virtual memory statistics) is a built-in monitoring utility in Linux. The command is used to obtain information about memory, system processes, paging, interrupts, block I/O, disk, and CPU scheduling. 

```
vmstat

vmstat -S m
```

![0049.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035683116/kftv1OqA6.png align="left")

- zip and unzip a particular file using <mark> zip </mark> & <mark> unzip </mark> command

```
zip files.zip company.txt

zip files2.zip company.txt file.txt

unzipfiles files2.zip
```

![0050.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035707827/-leJXWmAJ.png align="left")

```
cut -c 1-2 company.txt
```

![0051.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035805247/xwcrBZ96w.png align="left")

- <mark> ifconfig </mark> basically display internet configuration related information in your local system 

- The <mark> sed </mark> program is a stream editor that receives its input from standard input, changes that input as directed by commands in a command file, and writes the resulting stream to standard output.

```
ifconfig

sed
```

![0052.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035936477/lxMw48osA.png align="left")

- <mark> echo command print the first content then the second content

- By using or the compiler execute only one of the content so the first content should print


```
echo "first" && echo "second"

echo "first" || echo "second"

xyz || echo "second"

```

![0053.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035957713/3lsJql_79.png align="left")

- write something on a particular file using <mark> echo </mark>  command

```
echo "Hey" >> names.txt 
```

![0054.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662035978501/O80-sOLRy.png align="left")



