automated terminal push

This commit is contained in:
Software Shinobi
2025-03-14 15:46:26 -04:00
parent 2772fd8950
commit ba551064a7
284 changed files with 15015 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
# The `cal` Command
The `cal` command displays a formatted calendar in the terminal. If no options are specified, cal displays the current month, with the current day highlighted.
### Syntax:
```
cal [general options] [-jy] [[month] year]
```
### Options:
|**Option**|**Description**|
|:--|:--|
|`-h`|Don't highlight today's date.|
|`-m month`|Specify a month to display. The month specifier is a full month name (e.g., February), a month abbreviation of at least three letters (e.g., Feb), or a number (e.g., 2). If you specify a number, followed by the letter "f" or "p", the month of the following or previous year, respectively, display. For instance, `-m 2f` displays February of next year.|
|`-y year`|Specify a year to display. For example, `-y 1970` displays the entire calendar of the year 1970.|
|`-3`|Display last month, this month, and next month.|
|`-1`|Display only this month. This is the default.|
|`-A num`|Display num months occurring after any months already specified. For example, `-3 -A 3` displays last month, this month, and four months after this one; and `-y 1970 -A 2` displays every month in 1970, and the first two months of 1971.|
|`-B num`|Display num months occurring before any months already specified. For example, `-3 -B 2` displays the previous three months, this month, and next month.|
|`-d YYYY-MM`|Operate as if the current month is number MM of year YYYY.|
### Examples:
1. Display the calendar for this month, with today highlighted.
```
cal
```
2. Same as the previous command, but do not highlight today.
```
cal -h
```
3. Display last month, this month, and next month.
```
cal -3
```
4. Display this entire year's calendar.
```
cal -y
```
5. Display the entire year 2000 calendar.
```
cal -y 2000
```
6. Same as the previous command.
```
cal 2000
```
7. Display the calendar for December of this year.
```
cal -m [December, Dec, or 12]
```
10. Display the calendar for December 2000.
```
cal 12 2000
```

View File

@@ -0,0 +1,94 @@
# The `bc` command
The `bc` command provides the functionality of being able to perform mathematical calculations through the command line.
### Examples:
1 . Arithmetic:
```
Input : $ echo "11+5" | bc
Output : 16
```
2 . Increment:
- var ++ : Post increment operator, the result of the variable is used first and then the variable is incremented.
- ++var : Pre increment operator, the variable is increased first and then the result of the variable is stored.
```
Input: $ echo "var=3;++var" | bc
Output: 4
```
3 . Decrement:
- var : Post decrement operator, the result of the variable is used first and then the variable is decremented.
- var : Pre decrement operator, the variable is decreased first and then the result of the variable is stored.
```
Input: $ echo "var=3;--var" | bc
Output: 2
```
4 . Assignment:
- var = value : Assign the value to the variable
- var += value : similar to var = var + value
- var -= value : similar to var = var value
- var *= value : similar to var = var * value
- var /= value : similar to var = var / value
- var ^= value : similar to var = var ^ value
- var %= value : similar to var = var % value
```
Input: $ echo "var=4;var" | bc
Output: 4
```
5 . Comparison or Relational:
- If the comparison is true, then the result is 1. Otherwise,(false), returns 0
- expr1<expr2 : Result is 1, if expr1 is strictly less than expr2.
- expr1<=expr2 : Result is 1, if expr1 is less than or equal to expr2.
- expr1>expr2 : Result is 1, if expr1 is strictly greater than expr2.
- expr1>=expr2 : Result is 1, if expr1 is greater than or equal to expr2.
- expr1==expr2 : Result is 1, if expr1 is equal to expr2.
- expr1!=expr2 : Result is 1, if expr1 is not equal to expr2.
```
Input: $ echo "6<4" | bc
Output: 0
```
```
Input: $ echo "2==2" | bc
Output: 1
```
6 . Logical or Boolean:
- expr1 && expr2 : Result is 1, if both expressions are non-zero.
- expr1 || expr2 : Result is 1, if either expression is non-zero.
- ! expr : Result is 1, if expr is 0.
```
Input: $ echo "! 1" | bc
Output: 0
Input: $ echo "10 && 5" | bc
Output: 1
```
### Syntax:
```
bc [ -hlwsqv ] [long-options] [ file ... ]
```
### Additional Flags and their Functionalities:
*Note: This does not include an exhaustive list of options.*
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-i`|`--interactive`|Force interactive mode|
|`-l`|`--mathlib`|Use the predefined math routines|
|`-q`|`--quiet`|Opens the interactive mode for bc without printing the header|
|`-s`|`--standard`|Treat non-standard bc constructs as errors|
|`-w`|`--warn`|Provides a warning if non-standard bc constructs are used|
### Notes:
1. The capabilities of `bc` can be further appreciated if used within a script. Aside from basic arithmetic operations, `bc` supports increments/decrements, complex calculations, logical comparisons, etc.
2. Two of the flags in `bc` refer to non-standard constructs. If you evaluate `100>50 | bc` for example, you will get a strange warning. According to the POSIX page for bc, relational operators are only valid if used within an `if`, `while`, or `for` statement.

View File

@@ -0,0 +1,31 @@
# The `help` command
The `help` command displays information about builtin commands.
Display information about builtin commands.
If a `PATTERN` is specified, this command gives detailed help on all commands matching the `PATTERN`, otherwise the list of available help topics is printed.
## Syntax
```bash
$ help [-dms] [PATTERN ...]
```
## Options
|**Option**|**Description**|
|:--|:--|
|`-d`|Output short description for each topic.|
|`-m`|Display usage in pseudo-manpage format.|
|`-s`|Output only a short usage synopsis for each topic matching the provided `PATTERN`.|
## Examples of uses:
1. We get the complete information about the `cd` command
```bash
$ help cd
```
2. We get a short description about the `pwd` command
```bash
$ help -d pwd
```
3. We get the syntax of the `cd` command
```bash
$ help -s cd
```

View File

@@ -0,0 +1,29 @@
# The `factor` command
The `factor` command prints the prime factors of each specified integer `NUMBER`. If none are specified on the command line, it will read them from the standard input.
## Syntax
```bash
$ factor [NUMBER]...
```
OR:
```bash
$ factor OPTION
```
## Options
|**Option**|**Description**|
|:--|:--|
|`--help`|Display this a help message and exit.|
|`--version`|Output version information and exit.|
## Examples
1. Print prime factors of a prime number.
```bash
$ factor 50
```
2. Print prime factors of a non-prime number.
```bash
$ factor 75
```

View File

@@ -0,0 +1,32 @@
# The `whatis` command
The `whatis` command is used to display one-line manual page descriptions for commands.
It can be used to get a basic understanding of what a (unknown) command is used for.
### Examples of uses:
1. To display what `ls` is used for:
```
whatis ls
```
2. To display the use of all commands which start with `make`, execute the following:
```
whatis -w make*
```
### Syntax:
```
whatis [-OPTION] [KEYWORD]
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-d`|`--debug`|Show debugging messages|
|`-r`|`--regex`|Interpret each keyword as a regex|
|`-w`|`--wildcard`|The keyword(s) contain wildcards|

View File

@@ -0,0 +1,33 @@
# The `who` command
The `who` command lets you print out a list of logged-in users, the current run level of the system and the time of last system boot.
### Examples
1. Print out all details of currently logged-in users
```
who -a
```
2. Print out the list of all dead processes
```
who -d -H
```
### Syntax:
```
who [options] [filename]
```
### Additional Flags and their Functionalities
|**Short Flag** |**Description** |
|---|---|
| `-r` |prints all the current runlevel |
| `-d` |print all the dead processes |
|`-q`|print all the login names and total number of logged on users |
|`-h`|print the heading of the columns displayed |
|`-b`|print the time of last system boot |

View File

@@ -0,0 +1,33 @@
018-the-free-command.md
# The `free` command
The `free` command in Linux/Unix is used to show memory (RAM/SWAP) information.
# Usage
## Show memory usage
**Action:**
--- Output the memory usage - available and used, as well as swap
**Details:**
--- Outputted values are not human-readable (are in bytes)
**Command:**
```
free
```
## Show memory usage in human-readable form
**Action:**
--- Output the memory usage - available and used, as well as swap
**Details:**
--- Outputted values ARE human-readable (are in GB / MB)
**Command:**
```
free -h
```

View File

@@ -0,0 +1,19 @@
# The `sl` command
The `sl` command in Linux is a humorous program that runs a steam locomotive(sl) across your terminal.
![image](https://i.imgur.com/CInBHak.png)
## Installation
Install the package before running.
```
sudo apt install sl
```
## Syntax
```
sl
```

View File

@@ -0,0 +1,76 @@
# The `finger` command
The `finger` displays information about the system users.
### Examples:
1. View detail about a particular user.
```
finger abc
```
*Output*
```
Login: abc Name: (null)
Directory: /home/abc Shell: /bin/bash
On since Mon Nov 1 18:45 (IST) on :0 (messages off)
On since Mon Nov 1 18:46 (IST) on pts/0 from :0.0
New mail received Fri May 7 10:33 2013 (IST)
Unread since Sat Jun 7 12:59 2003 (IST)
No Plan.
```
2. View login details and Idle status about an user
```
finger -s root
```
*Output*
```
Login Name Tty Idle Login Time Office Office Phone
root root *1 19d Wed 17:45
root root *2 3d Fri 16:53
root root *3 Mon 20:20
root root *ta 2 Tue 15:43
root root *tb 2 Tue 15:44
```
### Syntax:
```
finger [-l] [-m] [-p] [-s] [username]
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-l`|Force long output format.|
|`-m`|Match arguments only on user name (not first or last name).|
|`-p`|Suppress printing of the .plan file in a long format printout.|
|`-s`|Force short output format.|
### Additional Information
**Default Format**
The default format includes the following items:
Login name
Full username
Terminal name
Write status (an * (asterisk) before the terminal name indicates that write permission is denied)
For each user on the host, the default information list also includes, if known, the following items:
Idle time (Idle time is minutes if it is a single integer, hours and minutes if a : (colon) is present, or days and hours if a “d” is present.)
Login time
Site-specific information
**Longer Format**
A longer format is used by the finger command whenever a list of users names is given. (Account names as well as first and last names of users are accepted.) This format is multiline, and includes all the information described above along with the following:
Users $HOME directory
Users login shell
Contents of the .plan file in the users $HOME directory
Contents of the .project file in the users $HOME directory

View File

@@ -0,0 +1,56 @@
# The `w` command
The `w` command displays information about the users that are currently active on the machine and their [processes](https://www.computerhope.com/jargon/p/process.htm).
### Examples:
1. Running the `w` command without [arguments](https://www.computerhope.com/jargon/a/argument.htm) shows a list of logged on users and their processes.
```
w
```
2. Show information for the user named *hope*.
```
w hope
```
### Syntax:
```
finger [-l] [-m] [-p] [-s] [username]
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-h`|`--no-header`|Don't print the header.|
|`-u`|`--no-current`|Ignores the username while figuring out the current process and cpu times. *(To see an example of this, switch to the root user with `su` and then run both `w` and `w -u`.)*|
|`-s`|`--short`|Display abbreviated output *(don't print the login time, JCPU or PCPU times).*|
|`-f`|`--from`|Toggle printing the from *(remote hostname)* field. The default as released is for the from field to not be printed, although your system administrator or distribution maintainer may have compiled a version where the from field is shown by default.|
|`--help`|<center>-</center>|Display a help message, and exit.|
|`-V`|`--version`|Display version information, and exit.|
|`-o`|`--old-style`|Old style output *(prints blank space for idle times less than one minute)*.|
|*`user`*|<center>-</center>|Show information about the specified the user only.|
### Additional Information
The [header](https://www.computerhope.com/jargon/h/header.htm) of the output shows (in this order): the current time, how long the system has been running, how many users are currently logged on, and the system [load](https://www.computerhope.com/jargon/l/load.htm) averages for the past 1, 5, and 15 minutes.
The following entries are displayed for each user:
- login name the [tty](https://www.computerhope.com/jargon/t/tty.htm)
- name the [remote](https://www.computerhope.com/jargon/r/remote.htm)
- [host](https://www.computerhope.com/jargon/h/hostcomp.htm) they are
- logged in from the amount of time they are logged in their
- [idle](https://www.computerhope.com/jargon/i/idle.htm) time JCPU
- PCPU
- [command line](https://www.computerhope.com/jargon/c/commandi.htm) of their current process
The JCPU time is the time used by all processes attached to the tty. It does not include past background jobs, but does include currently running background jobs.
The PCPU time is the time used by the current process, named in the "what" field.

View File

@@ -0,0 +1,28 @@
# The `login` Command
The `login` command initiates a user session.
## Syntax
```bash
$ login [-p] [-h host] [-H] [-f username|username]
```
## Flags and their functionalities
|**Short Flag** |**Description** |
|---|---|
| `-f` |Used to skip a login authentication. This option is usually used by the getty(8) autologin feature. |
| `-h` | Used by other servers (such as telnetd(8) to pass the name of the remote host to login so that it can be placed in utmp and wtmp. Only the superuser is allowed use this option. |
|`-p`|Used by getty(8) to tell login to preserve the environment. |
|`-H`|Used by other servers (for example, telnetd(8)) to tell login that printing the hostname should be suppressed in the login: prompt. |
|`--help`|Display help text and exit.|
|`-v`|Display version information and exit.|
## Examples
To log in to the system as user abhishek, enter the following at the login prompt:
```bash
$ login: abhishek
```
If a password is defined, the password prompt appears. Enter your password at this prompt.

View File

@@ -0,0 +1,52 @@
# `lscpu` command
`lscpu` in Linux/Unix is used to display CPU Architecture info. `lscpu` gathers CPU architecture information from `sysfs` and `/proc/cpuinfo` files.
For example :
```
manish@godsmack:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Stepping: 9
CPU MHz: 700.024
CPU max MHz: 3100.0000
CPU min MHz: 400.0000
BogoMIPS: 5399.81
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
```
## Options
`-a, --all`
Include lines for online and offline CPUs in the output (default for -e). This option may only specified together with option -e or -p.
For example: `lsof -a`
`-b, --online`
Limit the output to online CPUs (default for -p). This option may only be specified together with option -e or -p.
For example: `lscpu -b`
`-c, --offline`
Limit the output to offline CPUs. This option may only be specified together with option -e or -p.
`-e, --extended [=list]`
Display the CPU information in human readable format.
For example: `lsof -e`
For more info: use `man lscpu` or `lscpu --help`

View File

@@ -0,0 +1,37 @@
# The `printenv` command
The `printenv` prints the values of the specified [environment _VARIABLE(s)_](https://www.computerhope.com/jargon/e/envivari.htm). If no [_VARIABLE_](https://www.computerhope.com/jargon/v/variable.htm) is specified, print name and value pairs for them all.
### Examples:
1. Display the values of all environment variables.
```
printenv
```
2. Display the location of the current user's [home directory](https://www.computerhope.com/jargon/h/homedir.htm).
```
printenv HOME
```
3. To use the `--null` command line option as the terminating character between output entries.
```
printenv --null SHELL HOME
```
*NOTE: By default, the* `printenv` *command uses newline as the terminating character between output entries.*
### Syntax:
```
printenv [OPTION]... PATTERN...
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-0`|`--null`|End each output line with **0** byte rather than [newline](https://www.computerhope.com/jargon/n/newline.htm).|
|`--help`|<center>-</center>|Display a help message, and exit.|

View File

@@ -0,0 +1,39 @@
# The `ip` command
The `ip` command is present in the net-tools which is used for performing several network administration tasks. IP stands for Internet Protocol. This command is used to show or manipulate routing, devices, and tunnels. It can perform tasks like configuring and modifying the default and static routing, setting up tunnel over IP, listing IP addresses and property information, modifying the status of the interface, assigning, deleting and setting up IP addresses and routes.
### Examples:
1. To assign an IP Address to a specific interface (eth1) :
```
ip addr add 192.168.50.5 dev eth1
```
2. To show detailed information about network interfaces like IP Address, MAC Address information etc. :
```
ip addr show
```
### Syntax:
```
ip [ OPTIONS ] OBJECT { COMMAND | help }
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-a`| Display and modify IP Addresses |
|`-l`|Display and modify network interfaces |
|`-r`|Display and alter the routing table|
|`-n`|Display and manipulate neighbor objects (ARP table) |
|`-ru`|Rule in routing policy database.|
|`-s`|Output more information. If the option appears twice or more, the amount of information increases |
|`-f`|Specifies the protocol family to use|
|`-r`|Use the system's name resolver to print DNS names instead of host addresses|
|`-c`|To configure color output |

View File

@@ -0,0 +1,23 @@
# The `last` command
This command shows you a list of all the users that have logged in and out since the creation of the `var/log/wtmp` file. There are also some parameters you can add which will show you for example when a certain user has logged in and how long he was logged in for.
If you want to see the last 5 logs, just add `-5` to the command like this:
```
last -5
```
And if you want to see the last 10, add `-10`.
Another cool thing you can do is if you add `-F` you can see the login and logout time including the dates.
```
last -F
```
There are quite a lot of stuff you can view with this command. If you need to find out more about this command you can run:
```
last --help
```

View File

@@ -0,0 +1,93 @@
# The `locate` command
The `locate` command searches the file system for files and directories whose name matches a given pattern through a database file that is generated by the `updatedb` command.
### Examples:
1. Running the `locate` command to search for a file named `.bashrc`.
```
locate .bashrc
```
*Output*
```
/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
```
The `/root/.bashrc` file will not be shown because we ran the command as a normal user that doesnt have access permissions to the `/root` directory.
If the result list is long, for better readability, you can pipe the output to the [`less`](https://linuxize.com/post/less-command-in-linux/) command:
```
locate .bashrc | less
```
2. To search for all `.md` files on the system
```
locate *.md
```
3. To search all `.py` files and display only 10 results
```
locate -n 10 *.py
```
4. To performs case-insensitive search.
```
locate -i readme.md
```
*Output*
```
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md
```
5. To return the number of all files containing `.bashrc` in their name.
```
locate -c .bashrc
```
*Output*
```
6
```
6. The following would return only the existing `.json` files on the file system.
```
locate -e *.json
```
7. To run a more complex search the `-r` (`--regexp`) option is used.
To search for all `.mp4` and `.avi` files on your system and ignore case.
```
locate --regex -i "(\.mp4|\.avi)"
```
### Syntax:
```
1. locate [OPTION]... PATTERN...
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-A`|`--all`|It is used to display only entries that match all PATTERNs instead of requiring only one of them to match.|
|`-b`|`--basename`|It is used to match only the base name against the specified patterns.|
|`-c`|`--count`|It is used for writing the number matching entries instead of writing file names on standard output.|
|`-d`|`--database DBPATH`|It is used to replace the default database with DBPATH.|
|`-e`|`--existing`|It is used to display only entries that refer to existing files during the command is executed.|
|`-L`|`--follow`|If the `--existing` option is specified, It is used for checking whether files exist and follow trailing symbolic links. It will omit the broken symbolic links to the output. This is the default behavior. The opposite behavior can be specified using the `--nofollow` option.|
|`-h`|`--help`|It is used to display the help documentation that contains a summary of the available options.|
|`-i`|`--ignore-case`|It is used to ignore case sensitivity of the specified patterns.|
|`-p`|`--ignore-spaces`|It is used to ignore punctuation and spaces when matching patterns.|
|`-t`|`--transliterate`|It is used to ignore accents using iconv transliteration when matching patterns.|
|`-l`|`--limit, -n LIMIT`|If this option is specified, the command exit successfully after finding LIMIT entries.|
|`-m`|`--mmap`|It is used to ignore the compatibility with BSD, and GNU locate.|
|`-0`|`--null`|It is used to separate the entries on output using the ASCII NUL character instead of writing each entry on a separate line.|
|`-S`|`--statistics`|It is used to write statistics about each read database to standard output instead of searching for files.|
|`-r`|`--regexp REGEXP`|It is used for searching a basic regexp REGEXP.|
|`--regex`|<center>-</center>|It is used to describe all PATTERNs as extended regular expressions.|
|`-V`|`--version`|It is used to display the version and license information.|
|`-w`|` --wholename`|It is used for matching only the whole path name in specified patterns.|

View File

@@ -0,0 +1,47 @@
# The `iostat` command
The `iostat` command in Linux is used for monitoring system input/output statistics for devices and partitions. It monitors system input/output by observing the time the devices are active in relation to their average transfer rates. The iostat produce reports may be used to change the system configuration to raised balance the input/output between the physical disks. iostat is being included in sysstat package. If you dont have it, you need to install first.
### Syntax:
```[linux]
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ]
[ -z ] [ [ [ -T ] -g group_name ] { device [...] | ALL } ]
[ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
```
### Examples:
1. Display a single history-since-boot report for all CPU and Devices:
```[linux]
iostat -d 2
```
2. Display a continuous device report at two-second intervals:
```[linux]
iostat -d 2 6
```
3.Display, for all devices, six reports at two-second intervals:
```[linux]
iostat -x sda sdb 2 6
```
4.Display, for devices sda and sdb, six extended reports at two-second intervals:
```[linux]
iostat -p sda 2 6
```
### Additional Flags and their Functionalities:
| **Short Flag** | **Description** |
| :------------------------------ | :--------------------------------------------------------- |
| `-x` | Show more details statistics information. |
| `-c` | Show only the cpu statistic. |
| `-d` | Display only the device report |
| `-xd | Show extended I/O statistic for device only. |
| `-k` | Capture the statistics in kilobytes or megabytes. |
| `-k23` | Display cpu and device statistics with delay. |
| `-j ID mmcbkl0 sda6 -x -m 2 2` | Display persistent device name statistics. |
| `-p ` | Display statistics for block devices. |
| `-N ` | Display lvm2 statistic information. |

View File

@@ -0,0 +1,77 @@
# The `sort` command
the `sort` command is used to sort a file, arranging the records in a particular order. By default, the sort command sorts a file assuming the contents are ASCII. Using options in the sort command can also be used to sort numerically.
### Examples:
Suppose you create a data file with name file.txt:
```
Command :
$ cat > file.txt
abhishek
chitransh
satish
rajan
naveen
divyam
harsh
```
Sorting a file: Now use the sort command
Syntax :
```
sort filename.txt
```
```
Command:
$ sort file.txt
Output :
abhishek
chitransh
divyam
harsh
naveen
rajan
satish
```
Note: This command does not actually change the input file, i.e. file.txt.
### The sort function on a file with mixed case content
i.e. uppercase and lower case: When we have a mix file with both uppercase and lowercase letters then first the upper case letters would be sorted following with the lower case letters.
Example:
Create a file mix.txt
```
Command :
$ cat > mix.txt
abc
apple
BALL
Abc
bat
```
Now use the sort command
```
Command :
$ sort mix.txt
Output :
Abc
BALL
abc
apple
bat
```

View File

@@ -0,0 +1,33 @@
# The `paste` command
The `paste` command writes lines of two or more files, sequentially and separated by TABs, to the standard output
### Syntax:
```[linux]
paste [OPTIONS]... [FILE]...
```
### Examples:
1. To paste two files
```[linux]
paste file1 file2
```
2. To paste two files using new line as delimiter
```[linux]
paste -d '\n' file1 file2
```
### Additional Flags and their Functionalities:
| **Short Flag** | **Long Flag** | **Description** |
| :----------------- | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |
| `-d` | `--delimiter` | use charater of TAB |
| `-s` | `--serial` | paste one file at a time instead of in parallel |
| `-z` | `--zero-terminated` | set line delimiter to NUL, not newline |
| | `--help` | print command help |
| | `--version` | print version information |

View File

@@ -0,0 +1,24 @@
# The `iptables` Command
The `iptables` command is used to set up and maintain tables for the Netfilter firewall for IPv4, included in the Linux kernel. The firewall matches packets with rules defined in these tables and then takes the specified action on a possible match.
### Syntax:
```
iptables --table TABLE -A/-C/-D... CHAIN rule --jump Target
```
### Example and Explanation:
*This command will append to the chain provided in parameters:*
```
iptables [-t table] --append [chain] [parameters]
```
*This command drops all the traffic coming on any port:*
```
iptables -t filter --append INPUT -j DROP
```
### Flags and their Functionalities:
|Flag|Description|
|:---|:---|
|`-C`|Check if a rule is present in the chain or not. It returns 0 if the rule exists and returns 1 if it does not.|
|`-A`|Append to the chain provided in parameters.|

View File

@@ -0,0 +1,50 @@
# The `lsof` command
The `lsof` command shows **file infomation** of all the files opened by a running process. It's name is also derived from the fact that, list open files > `lsof`
An open file may be a regular file, a directory, a block special file, a character special file, an executing text reference, a library , a stream or a network file (Internet socket, NFS file or UNIX domain socket). A specific file or all the files in a file system may be selected by path.
### Syntax:
```
lsof [-OPTION] [USER_NAME]
```
### Examples:
1. To show all the files opened by all active processes:
```
lsof
```
2. To show the files opened by a particular user:
```
lsof -u [USER_NAME]
```
3. To list the processes with opened files under a specified directory:
```
lsof +d [PATH_TO_DIR]
```
### Options and their Functionalities:
|**Option** |**Additional Options** |**Description** |
|:---|:---|:---|
|`-i`|`tcp`/ `udp`/ `:port`|List all network connections running, Additionally, on udp/tcp or on specified port.|
|`-i4`|<center>-</center>|List all processes with ipv4 connections.|
|`-i6`|<center>-</center>|List all processes with ipv6 connections.|
|`-c`|`[PROCESS_NAME]`|List all the files of a particular process with given name.|
|`-p`|`[PROCESS_ID]`|List all the files opened by a specified process id.|
|`-p`|`^[PROCESS_ID]`|List all the files that are not opened by a specified process id.|
|`+d`|`[PATH]`|List the processes with opened files under a specified directory|
|`+R`|<center>-</center>|List the files opened by parent process Id.|
### Help Command
Run below command to view the complete guide to `lsof` command.
```
man lsof
```

View File

@@ -0,0 +1,57 @@
# The `bzip2` command
The `bzip2` command lets you compress and decompress the files i.e. it helps in binding the files into a single file which takes less storage space as the original file use to take.
### Syntax:
```
bzip2 [OPTIONS] filenames ...
```
#### Note : Each file is replaced by a compressed version of itself, with the name original name of the file followed by extension bz2.
### Options and their Functionalities:
|**Option** |**Alias** |**Description** |
|:---|:---|:---|
|`-d`|`--decompress`|to decompress compressed file|
|`-f`|`--force`|to force overwrite an existing output file|
|`-h`|`--help`|to display the help message and exit|
|`-k`|`--keep`|to enable file compression, doesn't deletes the original input file|
|`-L`|`--license`|to display the license terms and conditions|
|`-q`|`--quiet`|to suppress non-essential warning messages|
|`-t`|`--test`|to check integrity of the specified .bz2 file, but don't want to decompress them|
|`-v`|`--erbose`|to display details for each compression operation|
|`-V`|`--version`|to display the software version|
|`-z`|`--compress`|to enable file compression, but deletes the original input file|
> #### By default, when bzip2 compresses a file, it deletes the original (or input) file. However, if you don't want that to happen, use the -k command line option.
### Examples:
1. To force compression:
```
bzip2 -z input.txt
```
**Note: This option deletes the original file also**
2. To force compression and also retain original input file:
```
bzip2 -k input.txt
```
3. To force decompression:
```
bzip2 -d input.txt.bz2
```
4. To test integrity of compressed file:
```
bzip2 -t input.txt.bz2
```
5. To show the compression ratio for each file processed:
```
bzip2 -v input.txt
```

View File

@@ -0,0 +1,30 @@
# The `service` command
Service runs a System V init script in as predictable environment as possible, removing most environment variables and with current working directory set to /.
The SCRIPT parameter specifies a System V init script, located in /etc/init.d/SCRIPT. The supported values of COMMAND depend on the invoked script, service passes COMMAND and OPTIONS it to the init script unmodified. All scripts should support at least the start and stop commands. As a special case, if COMMAND is --full-restart, the script is run twice, first with the stop command, then with the start command.
The COMMAND can be at least start, stop, status, and restart.
service --status-all runs all init scripts, in alphabetical order, with the `status` command
Examples :
1. To check the status of all the running services:
```
service --status-all
```
2. To run a script
```
service SCRIPT-Name start
```
3. A more generalized command:
```
service [SCRIPT] [COMMAND] [OPTIONS]
```

View File

@@ -0,0 +1,25 @@
# The `vmstat` command
The `vmstat` command lets you monitor the performance of your system. It shows you information about your memory, disk, processes, CPU scheduling, paging, and block IO. This command is also referred to as **virtual memory statistic report**.
The very first report that is produced shows you the average details since the last reboot and after that, other reports are made which report over time.
### `vmstat`
![vmstat](https://imgur.com/9HZgBRN.png)
As you can see it is a pretty useful little command. The most important things that we see above are the `free`, which shows us the free space that is not being used, `si` shows us how much memory is swapped in every second in kB, and `so` shows how much memory is swapped out each second in kB as well.
### `vmstat -a`
If we run `vmstat -a`, it will show us the active and inactive memory of the system running.
![vmstat -a](https://imgur.com/LjL4tRh.png)
### `vmstat -d`
The `vmstat -d` command shows us all the disk statistics.
![vmstat -d](https://imgur.com/y3L0pNN.png)
As you can see this is a pretty useful little command that shows you different statistics about your virtual memory

View File

@@ -0,0 +1,57 @@
# The `mpstat` command
The `mpstat` command is used to report processor related statistics. It accurately displays the statistics of the CPU usage of the system and information about CPU utilization and performance.
### Syntax:
```
mpstat [options] [<interval> [<count>]]
```
#### Note : It initializes the first processor with CPU 0, the second one with CPU 1, and so on.
### Options and their Functionalities:
|**Option** |**Description** |
|-------------|----------------------------------------------------------------------|
|`-A` |to display all the detailed statistics |
|`-h` |to display mpstat help |
|`-I` |to display detailed interrupts statistics |
|`-n` |to report summary CPU statistics based on NUMA node placement |
|`-N` |to indicate the NUMA nodes for which statistics are to be reported |
|`-P` |to indicate the processors for which statistics are to be reported |
|`-o` |to display the statistics in JSON (Javascript Object Notation) format |
|`-T` |to display topology elements in the CPU report |
|`-u` |to report CPU utilization |
|`-v` |to display utilization statistics at the virtual processor level |
|`-V` |to display mpstat version |
|`-ALL` |to display detailed statistics about all CPUs |
### Examples:
1. To display processor and CPU statistics:
```
mpstat
```
2. To display processor number of all CPUs:
```
mpstat -P ALL
```
3. To get all the information which the tool may collect:
```
mpstat -A
```
4. To display CPU utilization by a specific processor:
```
mpstat -P 0
```
5. To display CPU usage with a time interval:
```
mpstat 1 5
```
**Note: This command will print 5 reports with 1 second time interval**

View File

@@ -0,0 +1,36 @@
# The `ncdu` Command
`ncdu` (NCurses Disk Usage) is a curses-based version of the well-known `du` command. It provides a fast way to see what directories are using your disk space.
## Example
1. Quiet Mode
```
ncdu -q
```
2. Omit mounted directories
```
ncdu -q -x
```
## Syntax
```
ncdu [-hqvx] [--exclude PATTERN] [-X FILE] dir
```
## Additional Flags and their Functionalities:
|Short Flag | Long Flag | Description|
|---|---|---|
| `-h`| - |Print a small help message|
| `-q`| - |Quiet mode. While calculating disk space, ncdu will update the screen 10 times a second by default, this will be decreased to once every 2 seconds in quiet mode. Use this feature to save bandwidth over remote connections.|
| `-v`| - |Print version.|
| `-x`| - |Only count files and directories on the same filesystem as the specified dir.|
| - | `--exclude PATTERN`|Exclude files that match PATTERN. This argument can be added multiple times to add more patterns.|
| `-X FILE`| `--exclude-from FILE`| Exclude files that match any pattern in FILE. Patterns should be separated by a newline.|

View File

@@ -0,0 +1,69 @@
# The `uniq` command
The `uniq` command in Linux is a command line utility that reports or filters out the repeated lines in a file.
In simple words, `uniq` is the tool that helps you to detect the adjacent duplicate lines and also deletes the duplicate lines. It filters out the adjacent matching lines from the input file(that is required as an argument) and writes the filtered data to the output file .
### Examples:
In order to omit the repeated lines from a file, the syntax would be the following:
```
uniq kt.txt
```
In order to tell the number of times a line was repeated, the syntax would be the following:
```
uniq -c kt.txt
```
In order to print repeated lines, the syntax would be the following:
```
uniq -d kt.txt
```
In order to print unique lines, the syntax would be the following:
```
uniq -u kt.txt
```
In order to allows the N fields to be skipped while comparing uniqueness of the lines, the syntax would be the following:
```
uniq -f 2 kt.txt
```
In order to allows the N characters to be skipped while comparing uniqueness of the lines, the syntax would be the following:
```
uniq -s 5 kt.txt
```
In order to to make the comparison case-insensitive, the syntax would be the following:
```
uniq -i kt.txt
```
### Syntax:
```
uniq [OPTION] [INPUT[OUTPUT]]
```
### Possible options:
|**Flag** |**Description** |**Params** |
|:---|:---|:---|
|`-c`|It tells how many times a line was repeated by displaying a number as a prefix with the line.|-|
|`-d`|It only prints the repeated lines and not the lines which arent repeated.|-|
|`-i`|By default, comparisons done are case sensitive but with this option case insensitive comparisons can be made.|-|
|`-f`|It allows you to skip N fields(a field is a group of characters, delimited by whitespace) of a line before determining uniqueness of a line.|N|
|`-s`|It doesnt compares the first N characters of each line while determining uniqueness. This is like the -f option, but it skips individual characters rather than fields.|N|
|`-u`|It allows you to print only unique lines.|-|
|`-z`|It will make a line end with 0 byte(NULL), instead of a newline.|-|
|`-w`|It only compares N characters in a line.|N|
|`--help`|It displays a help message and exit.|-|
|`--version`|It displays version information and exit.|-|

View File

@@ -0,0 +1,103 @@
# The `RPM` command
`rpm` - RPM Package Manager
`rpm` is a powerful __Package Manager__, which can be used to build, install, query, verify, update, and erase individual software packages. A __package__ consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. Packages come in two varieties: binary packages, used to encapsulate software to be installed, and source packages, containing the source code and recipe necessary to produce binary packages.
One of the following basic modes must be selected: __Query, Verify, Signature Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration.__
**General Options**
These options can be used in all the different modes.
|Short Flag| Long Flag| Description|
|---|---|---|
| -? | --help| Print a longer usage message then normal.|
| - |--version |Print a single line containing the version number of rpm being used.|
| - | --quiet | Print as little as possible - normally only error messages will be displayed.|
| -v | - | Print verbose information - normally routine progress messages will be displayed.|
| -vv | - | Print lots of ugly debugging information.|
| - | --rcfile FILELIST | Each of the files in the colon separated FILELIST is read sequentially by rpm for configuration information. Only the first file in the list must exist, and tildes will be expanded to the value of $HOME. The default FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc. |
| - | --pipe CMD | Pipes the output of rpm to the command CMD. |
| - | --dbpath DIRECTORY | Use the database in DIRECTORY rather than the default path /var/lib/rpm |
| - | --root DIRECTORY | Use the file system tree rooted at DIRECTORY for all operations. Note that this means the database within DIRECTORY will be used for dependency checks and any scriptlet(s) (e.g. %post if installing, or %prep if building, a package) will be run after a chroot(2) to DIRECTORY. |
| -D | --define='MACRO EXPR' | Defines MACRO with value EXPR.|
| -E | --eval='EXPR' | Prints macro expansion of EXPR. |
# Synopsis
## Querying and Verifying Packages:
```
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
rpm --import PUBKEY ...
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...
```
## Installing, Upgrading, and Removing Packages:
```
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
```
## Miscellaneous:
```
rpm {--initdb|--rebuilddb}
rpm {--addsign|--resign} PACKAGE_FILE...
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME .
```
### query-options
```
[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--scripts] [-s,--state]
[--triggers,--triggerscripts]
```
### verify-options
```
[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nofiledigest] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
[--nocaps]
```
### install-options
```
[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--replacefiles] [--replacepkgs]
[--test]
```

View File

@@ -0,0 +1,69 @@
# The `scp` command
SCP (secure copy) is a command-line utility that allows you to securely copy files and directories between two locations.
Both the files and passwords are encrypted so that anyone snooping on the traffic doesn't get anything sensitive.
### Different ways to copy a file or directory:
- From local system to a remote system.
- From a remote system to a local system.
- Between two remote systems from the local system.
### Examples:
1. To copy the files from a local system to a remote system:
```
scp /home/documents/local-file root@{remote-ip-address}:/home/
```
2. To copy the files from a remote system to the local system:
```
scp root@{remote-ip-address}:/home/remote-file /home/documents/
```
3. To copy the files between two remote systems from the local system.
```
scp root@{remote1-ip-address}:/home/remote-file root@{remote2-ip-address}/home/
```
4. To copy file though a jump host server.
```
scp /home/documents/local-file -oProxyJump=<jump-host-ip> root@{remote-ip-address}/home/
```
On newer version of scp on some machines you can use the above command with a `-J` flag.
```
scp /home/documents/local-file -J <jump-host-ip> root@{remote-ip-address}/home/
```
### Syntax:
```
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
```
- `OPTION` - scp options such as cipher, ssh configuration, ssh port, limit, recursive copy …etc.
- `[user@]SRC_HOST:]file1` - Source file
- `[user@]DEST_HOST:]file2` - Destination file
Local files should be specified using an absolute or relative path, while remote file names should include a user and host specification.
scp provides several that control every aspect of its behaviour. The most widely used options are:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-P`|<center>-</center>|Specifies the remote host ssh port.|
|`-p`|<center>-</center>|Preserves files modification and access times.|
|`-q`|<center>-</center>|Use this option if you want to suppress the progress meter and non-error messages.|
|`-C`|<center>-</center>|This option forces scp to compresses the data as it is sent to the destination machine.|
|`-r`|<center>-</center>|This option tells scp to copy directories recursively.|
### Before you begin
The `scp` command relies on `ssh` for data transfer, so it requires an `ssh key` or `password` to authenticate on the remote systems.
The `colon (:)` is how scp distinguish between local and remote locations.
To be able to copy files, you must have at least read permissions on the source file and write permission on the target system.
Be careful when copying files that share the same name and location on both systems, `scp` will overwrite files without warning.
When transferring large files, it is recommended to run the scp command inside a `screen` or `tmux` session.

View File

@@ -0,0 +1,76 @@
# The `split` command
The `split` command in Linux is used to split a file into smaller files.
### Examples
1. Split a file into a smaller file using file name
```
split filename.txt
```
2. Split a file named filename into segments of 200 lines beginning with prefix file
```
split -l 200 filename file
```
This will create files of the name fileaa, fileab, fileac, filead, etc. of 200 lines.
3. Split a file named filename into segments of 40 bytes with prefix file
```
split -b 40 filename file
```
This will create files of the name fileaa, fileab, fileac, filead, etc. of 40 bytes.
4. Split a file using --verbose to see the files being created.
```
split filename.txt --verbose
```
### Syntax:
```
split [options] filename [prefix]
```
### Additional Flags and their Functionalities
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-a`|`--suffix-length=N`|Generate suffixes of length N (default 2)|
||`--additional-suffix=SUFFIX`|Append an additional SUFFIX to file names|
|`-b`|`--bytes=SIZE`|Put SIZE bytes per output file|
|`-C`|`--line-bytes=SIZE`|Put at most SIZE bytes of records per output file|
|`-d`| |Use numeric suffixes starting at 0, not alphabetic|
||`--numeric-suffixes[=FROM]`|Same as -d, but allow setting the start value|
|`-x`||Use hex suffixes starting at 0, not alphabetic|
||`--hex-suffixes[=FROM]`|Same as -x, but allow setting the start value|
|`-e`|`--elide-empty-files`|Do not generate empty output files with '-n'|
||`--filter=COMMAND`|Write to shell COMMAND;<br>file name is $FILE|
|`-l`|`--lines=NUMBER`|Put NUMBER lines/records per output file|
|`-n`|`--number=CHUNKS`|Generate CHUNKS output files;<br>see explanation below|
|`-t`|`--separator=SEP`|Use SEP instead of newline as the record separator;<br>'\0' (zero) specifies the NUL character|
|`-u`|`--unbuffered`|Immediately copy input to output with '-n r/...'|
||`--verbose`|Print a diagnostic just before each<br>output file is opened|
||`--help`|Display this help and exit|
||`--version`|Output version information and exit|
The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).
CHUNKS may be:
|**CHUNKS** |**Description** |
|:---|:---|
|`N`|Split into N files based on size of input|
|`K/N`|Output Kth of N to stdout|
|`l/N`|Split into N files without splitting lines/records|
|`l/K/N`|Output Kth of N to stdout without splitting lines/records|
|`r/N`|Like 'l' but use round robin distribution|
|`r/K/N`|Likewise but only output Kth of N to stdout|

View File

@@ -0,0 +1,61 @@
# The `stat` command
The `stat` command lets you display file or file system status. It gives you useful information about the file (or directory) on which you use it.
### Examples:
1. Basic command usage
```
stat file.txt
```
2. Use the `-c` (or `--format`) argument to only display information you want to see (here, the total size, in bytes)
```
stat file.txt -c %s
```
### Syntax:
```
stat [OPTION] [FILE]
```
### Additional Flags and their Functionalities:
| Short Flag | Long Flag | Description |
| ---------- | ----------------- | ----------------------------------------------------------------------------- |
| `-L` | `--dereference` | Follow links |
| `-f` | `--file-system` | Display file system status instead of file status |
| `-c` | `--format=FORMAT` | Specify the format (see below) |
| `-t` | `--terse` | Print the information in terse form |
| - | `--cached=MODE` | Specify how to use cached attributes. Can be: `always`, `never`, or `default` |
| - | `--printf=FORMAT` | Like `--format`, but interpret backslash escapes (`\n`, `\t`, ...) |
| - | `--help` | Display the help and exit |
| - | `--version` | Output version information and exit |
### Example of Valid Format Sequences for Files:
| Format | Description |
| ------ | ---------------------------------------------------- |
| `%a` | Permission bits in octal |
| `%A` | Permission bits and file type in human readable form |
| `%d` | Device number in decimal |
| `%D` | Device number in hex |
| `%F` | File type |
| `%g` | Group ID of owner |
| `%G` | Group name of owner |
| `%h` | Number of hard links |
| `%i` | Inode number |
| `%m` | Mount point |
| `%n` | File name |
| `%N` | Quoted file name with dereference if symbolic link |
| `%s` | Total size, in bytes |
| `%u` | User ID of owner |
| `%U` | User name of owner |
| `%w` | Time of file birth, human-readable; - if unknown |
| `%x` | Time of last access, human-readable |
| `%y` | Time of last data modification, human-readable |
| `%z` | Time of last status change, human-readable |

View File

@@ -0,0 +1,93 @@
# The `ionice` command
The `ionice` command is used to set or get process I/O scheduling class and priority.
If no arguments are given , `ionice` will query the current I/O scheduling class and priority for that process.
## Usage
```
ionice [options] -p <pid>
```
```
ionice [options] -P <pgid>
```
```
ionice [options] -u <uid>
```
```
ionice [options] <command>
```
## A process can be of three scheduling classes:
- ### Idle
A program with idle I/O priority will only get disk time when `no other program has asked for disk I/O for a defined grace period`.
The impact of idle processes on normal system actively should be `zero`.
This scheduling class `doesnt take priority` argument.
Presently this scheduling class is permitted for an `ordinary user (since kernel 2.6.25)`.
- ### Best Effort
This is `effective` scheduling class for any process that has `not asked for a specific I/O priority`.
This class `takes priority argument from 0-7`, with `lower` number being `higher priority`.
Programs running at the same best effort priority are served in `round- robbin fashion`.
Note that before kernel 2.6.26 a process that has not asked for an I/O priority formally uses “None” as scheduling class , but the io schedular will treat such processes as if it were in the best effort class.
The priority within best effort class will be dynamically derived form the CPU nice level of the process : io_priority = ( cpu_nice + 20 ) / 5/
for kernels after 2.6.26 with CFQ I/O schedular a process that has not asked for sn io priority inherits CPU scheduling class.
`The I/O priority is derived from the CPU nice level of the process` ( smr sd before kernel 2.6.26 ).
- ### Real Time
The real time schedular class is `given first access to disk, regardless of what else is going on in the system`.
Thus the real time class needs to be used with some care, as it cans tarve other processes .
As with the best effort class, `8 priority levels are defined denoting how big a time slice a given process will receive on each scheduling window`.
This scheduling class is `not permitted for an ordinary user(non-root)`.
## Options
| Options | Description |
|---|---|
| -c, --class <class> | name or number of scheduling class, 0: none, 1: realtime, 2: best-effort, 3: idle|
| -n, --classdata <num> | priority (0..7) in the specified scheduling class,only for the realtime and best-effort classes|
| -p, --pid <pid>... | act on these already running processes|
| -P, --pgid <pgrp>... | act on already running processes in these groups|
| -t, --ignore | ignore failures|
| -u, --uid <uid>... | act on already running processes owned by these users|
| -h, --help | display this help|
| -V, --version | display version|
For more details see ionice(1).
## Examples
| Command | O/P |Explanation|
|---|---|---|
|`$ ionice` |*none: prio 4*|Running alone `ionice` will give the class and priority of current process |
|`$ ionice -p 101`|*none : prio 4*|Give the details(*class : priority*) of the process specified by given process id|
|`$ ionice -p 2` |*none: prio 4*| Check the class and priority of process with pid 2 it is none and 4 resp.|
|`$ ionice -c2 -n0 -p2`|2 ( best-effort ) priority 0 process 2 | Now lets set process(pid) 2 as a best-effort program with highest priority|
|$ `ionice` -p 2|best-effort : prio 0| Now if I check details of Process 2 you can see the updated one|
|$ `ionice` /bin/ls||get priority and class info of bin/ls |
|$ `ionice` -n4 -p2||set priority 4 of process with pid 2 |
|$ `ionice` -p 2| best-effort: prio 4| Now observe the difference between the command ran above and this one we have changed priority from 0 to 4|
|$ `ionice` -c0 -n4 -p2|ionice: ignoring given class data for none class|(Note that before kernel 2.6.26 a process that has not asked for an I/O priority formally uses “None” as scheduling class , |
|||but the io schedular will treat such processes as if it were in the best effort class. )|
|||-t option : ignore failure|
|$ `ionice` -c0 -n4 -p2 -t| | For ignoring the warning shown above we can use -t option so it will ignore failure |
## Conclusion
Thus we have successfully learnt about `ionice` command.

View File

@@ -0,0 +1,85 @@
# The `rsync` command
The `rsync` command is probably one of the most used commands out there. It is used to securely copy files from one server to another over SSH.
Compared to the `scp` command, which does a similar thing, `rsync` makes the transfer a lot faster, and in case of an interruption, you could restore/resume the transfer process.
In this tutorial, I will show you how to use the `rsync` command and copy files from one server to another and also share a few useful tips!
Before you get started, you would need to have 2 Linux servers. I will be using DigitalOcean for the demo and deploy 2 Ubuntu servers.
You can use my referral link to get a free $100 credit that you could use to deploy your virtual machines and test the guide yourself on a few DigitalOcean servers:
**[DigitalOcean $100 Free Credit](https://m.do.co/c/2a9bba940f39)**
## Transfer Files from local server to remote
This is one of the most common causes. Essentially this is how you would copy the files from the server that you are currently on (the source server) to remote/destination server.
What you need to do is SSH to the server that is holding your files, cd to the directory that you would like to transfer over:
```
cd /var/www/html
```
And then run:
```
rsync -avz user@your-remote-server.com:/home/user/dir/
```
The above command would copy all the files and directories from the current folder on your server to your remote server.
Rundown of the command:
* `-a`: is used to specify that you want recursion and want to preserve the file permissions and etc.
* `-v`: is verbose mode, it increases the amount of information you are given during the transfer.
* `-z`: this option, rsync compresses the file data as it is sent to the destination machine, which reduces the amount of data being transmitted -- something that is useful over a slow connection.
I recommend having a look at the following website which explains the commands and the arguments very nicely:
[https://explainshell.com/explain?cmd=rsync+-avz](https://explainshell.com/explain?cmd=rsync+-avz)
In case that the SSH service on the remote server is not running on the standard `22` port, you could use `rsync` with a special SSH port:
```
rsync -avz -e 'ssh -p 1234' user@your-remote-server.com:/home/user/dir/
```
## Transfer Files remote server to local
In some cases you might want to transfer files from your remote server to your local server, in this case, you would need to use the following syntax:
```
rsync -avz your-user@your-remote-server.com:/home/user/dir/ /home/user/local-dir/
```
Again, in case that you have a non-standard SSH port, you can use the following command:
```
rsync -avz -e 'ssh -p 2510' your-user@your-remote-server.com:/home/user/dir/ /home/user/local-dir/
```
## Transfer only missing files
If you would like to transfer only the missing files you could use the `--ignore-existing` flag.
This is very useful for final sync in order to ensure that there are no missing files after a website or a server migration.
Basically the commands would be the same apart from the appended --ignore-existing flag:
```
rsync -avz --ignore-existing user@your-remote-server.com:/home/user/dir/
```
## Conclusion
Using `rsync` is a great way to quickly transfer some files from one machine over to another in a secure way over SSH.
For more cool Linux networking tools, I would recommend checking out this tutorial here:
[Top 15 Linux Networking tools that you should know!](https://devdojo.com/serverenthusiast/top-15-linux-networking-tools-that-you-should-know)
Hope that this helps!
Initially posted here: [How to Transfer Files from One Linux Server to Another Using rsync](https://devdojo.com/bobbyiliev/how-to-transfer-files-from-one-linux-server-to-another-using-rsync)

View File

@@ -0,0 +1,133 @@
# The `dig` command
dig - DNS lookup utility
The `dig` is a flexible tool for interrogating DNS name servers. It performs DNS lookups and displays the answers that are returned from the name server(s) that
were queried.
### Examples:
1. Dig is a network administration command-line tool for querying the Domain Name System.
```
dig google.com
```
2. The system will list all google.com DNS records that it finds, along with the IP addresses.
```
dig google.com ANY
```
### Syntax:
```
dig [server] [name] [type] [q-type] [q-class] {q-opt}
{global-d-opt} host [@local-server] {local-d-opt}
[ host [@local-server] {local-d-opt} [...]]
```
### Additional Flags and their Functionalities:
```bash
domain is in the Domain Name System
q-class is one of (in,hs,ch,...) [default: in]
q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]
(Use ixfr=version for type ixfr)
q-opt is one of:
-4 (use IPv4 query transport only)
-6 (use IPv6 query transport only)
-b address[#port] (bind to source address/port)
-c class (specify query class)
-f filename (batch mode)
-k keyfile (specify tsig key file)
-m (enable memory usage debugging)
-p port (specify port number)
-q name (specify query name)
-r (do not read ~/.digrc)
-t type (specify query type)
-u (display times in usec instead of msec)
-x dot-notation (shortcut for reverse lookups)
-y [hmac:]name:key (specify named base64 tsig key)
d-opt is of the form +keyword[=value], where keyword is:
+[no]aaflag (Set AA flag in query (+[no]aaflag))
+[no]aaonly (Set AA flag in query (+[no]aaflag))
+[no]additional (Control display of additional section)
+[no]adflag (Set AD flag in query (default on))
+[no]all (Set or clear all display flags)
+[no]answer (Control display of answer section)
+[no]authority (Control display of authority section)
+[no]badcookie (Retry BADCOOKIE responses)
+[no]besteffort (Try to parse even illegal messages)
+bufsize[=###] (Set EDNS0 Max UDP packet size)
+[no]cdflag (Set checking disabled flag in query)
+[no]class (Control display of class in records)
+[no]cmd (Control display of command line -
global option)
+[no]comments (Control display of packet header
and section name comments)
+[no]cookie (Add a COOKIE option to the request)
+[no]crypto (Control display of cryptographic
fields in records)
+[no]defname (Use search list (+[no]search))
+[no]dnssec (Request DNSSEC records)
+domain=### (Set default domainname)
+[no]dscp[=###] (Set the DSCP value to ### [0..63])
+[no]edns[=###] (Set EDNS version) [0]
+ednsflags=### (Set EDNS flag bits)
+[no]ednsnegotiation (Set EDNS version negotiation)
+ednsopt=###[:value] (Send specified EDNS option)
+noednsopt (Clear list of +ednsopt options)
+[no]expandaaaa (Expand AAAA records)
+[no]expire (Request time to expire)
+[no]fail (Don't try next server on SERVFAIL)
+[no]header-only (Send query without a question section)
+[no]identify (ID responders in short answers)
+[no]idnin (Parse IDN names [default=on on tty])
+[no]idnout (Convert IDN response [default=on on tty])
+[no]ignore (Don't revert to TCP for TC responses.)
+[no]keepalive (Request EDNS TCP keepalive)
+[no]keepopen (Keep the TCP socket open between queries)
+[no]mapped (Allow mapped IPv4 over IPv6)
+[no]multiline (Print records in an expanded format)
+ndots=### (Set search NDOTS value)
+[no]nsid (Request Name Server ID)
+[no]nssearch (Search all authoritative nameservers)
+[no]onesoa (AXFR prints only one soa record)
+[no]opcode=### (Set the opcode of the request)
+padding=### (Set padding block size [0])
+[no]qr (Print question before sending)
+[no]question (Control display of question section)
+[no]raflag (Set RA flag in query (+[no]raflag))
+[no]rdflag (Recursive mode (+[no]recurse))
+[no]recurse (Recursive mode (+[no]rdflag))
+retry=### (Set number of UDP retries) [2]
+[no]rrcomments (Control display of per-record comments)
+[no]search (Set whether to use searchlist)
+[no]short (Display nothing except short
form of answers - global option)
+[no]showsearch (Search with intermediate results)
+[no]split=## (Split hex/base64 fields into chunks)
+[no]stats (Control display of statistics)
+subnet=addr (Set edns-client-subnet option)
+[no]tcflag (Set TC flag in query (+[no]tcflag))
+[no]tcp (TCP mode (+[no]vc))
+timeout=### (Set query timeout) [5]
+[no]trace (Trace delegation down from root [+dnssec])
+tries=### (Set number of UDP attempts) [3]
+[no]ttlid (Control display of ttls in records)
+[no]ttlunits (Display TTLs in human-readable units)
+[no]unexpected (Print replies from unexpected sources
default=off)
+[no]unknownformat (Print RDATA in RFC 3597 "unknown" format)
+[no]vc (TCP mode (+[no]tcp))
+[no]yaml (Present the results as YAML)
+[no]zflag (Set Z flag in query)
global d-opts and servers (before host name) affect all queries.
local d-opts and servers (after host name) affect only that lookup.
-h (print help and exit)
-v (print version and exit)
```

View File

@@ -0,0 +1,66 @@
# The `whois` command
The `whois` command in Linux to find out information about a domain, such as the owner of the domain, the owners contact information, and the nameservers that the domain is using.
### Examples:
1. Performs a whois query for the domain name:
```
whois {Domain_name}
```
2. -H option omits the lengthy legal disclaimers that many domain registries deliver along with the domain information.
```
whois -H {Domain_name}
```
### Syntax:
```
whois [ -h HOST ] [ -p PORT ] [ -aCFHlLMmrRSVx ] [ -g SOURCE:FIRST-LAST ]
[ -i ATTR ] [ -S SOURCE ] [ -T TYPE ] object
```
```
whois -t TYPE
```
```
whois -v TYPE
```
```
whois -q keyword
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-h HOST`, `--host HOST`|Connect to HOST.|
|`-H`|Do not display the legal disclaimers some registries like to show you.|
|`-p`, `--port PORT`|Connect to PORT.|
|`--verbose`|Be verbose.|
|`--help`|Display online help.|
|`--version`|Display client version information. Other options are flags understood by whois.ripe.net and some other RIPE-like servers.|
|`-a`|Also search all the mirrored databases.|
|`-b`|Return brief IP address ranges with abuse contact.|
|`-B`|Disable object filtering *(show the e-mail addresses)*|
|`-c`|Return the smallest IP address range with a reference to an irt object.|
|`-d`|Return the reverse DNS delegation object too.|
|`-g SOURCE:FIRST-LAST`|Search updates from SOURCE database between FIRST and LAST update serial number. It's useful to obtain Near Real Time Mirroring stream.|
|`-G`|Disable grouping of associated objects.|
|`-i ATTR[,ATTR]...`|Search objects having associated attributes. ATTR is attribute name. Attribute value is positional OBJECT argument.|
|`-K`|Return primary key attributes only. Exception is members attribute of set object which is always returned. Another exceptions are all attributes of objects organisation, person, and role that are never returned.|
|`-l`|Return the one level less specific object.|
|`-L`|Return all levels of less specific objects.|
|`-m`|Return all one level more specific objects.|
|`-M`|Return all levels of more specific objects.|
|`-q KEYWORD`|Return list of keywords supported by server. KEYWORD can be version for server version, sources for list of source databases, or types for object types.|
|`-r`|Disable recursive look-up for contact information.|
|`-R`|Disable following referrals and force showing the object from the local copy in the server.|
|`-s SOURCE[,SOURCE]...`|Request the server to search for objects mirrored from SOURCES. Sources are delimited by comma and the order is significant. Use `-q` sources option to obtain list of valid sources.|
|`-t TYPE`|Return the template for a object of TYPE.|
|`-T TYPE[,TYPE]...`|Restrict the search to objects of TYPE. Multiple types are separated by a comma.|
|`-v TYPE`|Return the verbose template for a object of TYPE.|
|`-x`|Search for only exact match on network address prefix.|

View File

@@ -0,0 +1,90 @@
# The `awk` command
Awk is a general-purpose scripting language designed for advanced text processing. It is mostly used as a reporting and analysis tool.
#### WHAT CAN WE DO WITH AWK?
1. AWK Operations:
(a) Scans a file line by line
(b) Splits each input line into fields
(c) Compares input line/fields to pattern
(d) Performs action(s) on matched lines
2. Useful For:
(a) Transform data files
(b) Produce formatted reports
3. Programming Constructs:
(a) Format output lines
(b) Arithmetic and string operations
(c) Conditionals and loops
#### Syntax
```
awk options 'selection _criteria {action }' input-file > output-file
```
#### Example
Consider the following text file as the input file for below example:
```
$cat > employee.txt
```
```
ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
```
1. Default behavior of Awk: By default Awk prints every line of data from the specified file.
```
$ awk '{print}' employee.txt
```
```
ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
```
In the above example, no pattern is given. So the actions are applicable to all the lines. Action print without any argument prints the whole line by default, so it prints all the lines of the file without failure.
2. Print the lines which match the given pattern.
```
awk '/manager/ {print}' employee.txt
```
```
ajay manager account 45000
varun manager sales 50000
amit manager account 47000
```
In the above example, the awk command prints all the line which matches with the manager.
3. Splitting a Line Into Fields : For each record i.e line, the awk command splits the record delimited by whitespace character by default and stores it in the $n variables. If the line has 4 words, it will be stored in $1, $2, $3 and $4 respectively. Also, $0 represents the whole line.
```
$ awk '{print $1,$4}' employee.txt
```
```
ajay 45000
sunil 25000
varun 50000
amit 47000
tarun 15000
```
#### Built-In Variables In Awk
Awks built-in variables include the field variables—$1, $2, $3, and so on ($0 is the entire line) — that break a line of text into individual words or pieces called fields.
NR: NR command keeps a current count of the number of input records. Remember that records are usually lines. Awk command performs the pattern/action statements once for each record in a file.
NF: NF command keeps a count of the number of fields within the current input record.
FS: FS command contains the field separator character which is used to divide fields on the input line. The default is “white space”, meaning space and tab characters. FS can be reassigned to another character (typically in BEGIN) to change the field separator.
RS: RS command stores the current record separator character. Since, by default, an input line is the input record, the default record separator character is a newline.
OFS: OFS command stores the output field separator, which separates the fields when Awk prints them. The default is a blank space. Whenever print has several parameters separated with commas, it will print the value of OFS in between each parameter.
ORS: ORS command stores the output record separator, which separates the output lines when Awk prints them. The default is a newline character. print automatically outputs the contents of ORS at the end of whatever it is given to print.

View File

@@ -0,0 +1,69 @@
# The `pstree` command
The `pstree` command is similar to `ps`, but instead of listing the running processes, it shows them as a tree. The tree-like format is sometimes more suitable way to display the processes hierarchy which is a much simpler way to visualize running processes. The root of the tree is either init or the process with the given pid.
### Examples
1. To display a hierarchical tree structure of all running processes:
```
pstree
```
2. To display a tree with the given process as the root of the tree:
```
pstree [pid]
```
3. To show only those processes that have been started by a user:
```
pstree [USER]
```
4. To show the parent processes of the given process:
```
pstree -s [PID]
```
5. To view the output one page at a time, pipe it to the `less` command:
```
pstree | less
```
### Syntax
`ps [OPTIONS] [USER or PID]`
### Additional Flags and their Functionalities
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-a`|`--arguments`|Show command line arguments|
|`-A`|`--ascii`|use ASCII line drawing characters|
|`-c`|`--compact`|Don't compact identical subtrees|
|`-h`|`--highlight-all`|Highlight current process and its ancestors|
|`-H PID`|`--highlight-pid=PID`|highlight this process and its ancestors|
|`-g`|`--show-pgids`|show process group ids; implies `-c`|
|`-G`|`--vt100`|use VT100 line drawing characters|
|`-l`|`--long`|Don't truncate long lines|
|`-n`|`--numeric-sort`|Sort output by PID|
|`-N type`|`--ns-sort=type`|Sort by namespace type (cgroup, ipc, mnt, net, pid, user, uts)|
|`-p`|`--show-pids`|show PIDs; implies -c|
|`-s`|`--show-parents`|Show parents of the selected process|
|`-S`|`--ns-changes`|show namespace transitions|
|`-t`|`--thread-names`|Show full thread names|
|`-T`|`--hide-threads`|Hide threads, show only processes|
|`-u`|`--uid-changes`|Show uid transitions|
|`-U`|`--unicode`|Use UTF-8 (Unicode) line drawing characters|
|`-V`|`--version`|Display version information|
|`-Z`|`--security-context`|Show SELinux security contexts|

View File

@@ -0,0 +1,46 @@
# The `tree` command
The `tree` command in Linux recursively lists directories as tree structures. Each listing is indented according to its depth relative to root of the tree.
### Examples:
1. Show a tree representation of the current directory.
```
tree
```
2. -L NUMBER limits the depth of recursion to avoid display very deep trees.
```
tree -L 2 /
```
### Syntax:
```
tree [-acdfghilnpqrstuvxACDFQNSUX] [-L level [-R]] [-H baseHREF] [-T title]
[-o filename] [--nolinks] [-P pattern] [-I pattern] [--inodes]
[--device] [--noreport] [--dirsfirst] [--version] [--help] [--filelimit #]
[--si] [--prune] [--du] [--timefmt format] [--matchdirs] [--from-file]
[--] [directory ...]
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-a`|Print all files, including hidden ones.|
|`-d`|Only list directories.|
|`-l`|Follow symbolic links into directories.|
|`-f`|Print the full path to each listing, not just its basename.|
|`-x`|Do not move across file-systems.|
|`-L #`|Limit recursion depth to #.|
|`-P REGEX`|Recurse, but only list files that match the REGEX.|
|`-I REGEX`|Recurse, but do not list files that match the REGEX.|
|`--ignore-case`|Ignore case while pattern-matching.|
|`--prune`|Prune empty directories from output.|
|`--filelimit #`|Omit directories that contain more than # files.|
|`-o FILE`|Redirect STDOUT output to FILE.|
|`-i`|Do not output indentation.|

View File

@@ -0,0 +1,184 @@
# The `printf` command
This command lets you print the value of a variable by formatting it using rules. It is pretty similar to the printf in C language.
### Syntax:
```
$printf [-v variable_name] format [arguments]
```
### Options:
| OPTION | Description |
| --- | --- |
| `FORMAT` | FORMAT controls the output, and defines the way that the ARGUMENTs will be expressed in the output |
| `ARGUMENT` | An ARGUMENT will be inserted into the formatted output according to the definition of FORMAT |
| `--help` | Display help and exit | |
| `--version` | Output version information adn exit | |
### Formats:
The anatomy of the FORMAT string can be extracted into three different parts,
- _ordinary characters_, which are copied exactly the same characters as were used originally to the output.
- _interpreted character_ sequences, which are escaped with a backslash ("\\").
- _conversion specifications_, this one will define the way the ARGUMENTs will be expressed as part of the output.
You can see those parts in this example,
```
printf " %s is where over %d million developers shape \"the future of sofware.\" " Github 65
```
The output:
```
Github is where over 65 million developers shape "the future of sofware."
```
There are two conversion specifications `%s` and `%d`, and there are two escaped characters which are the opening and closing double-quotes wrapping the words of _the future of software_. Other than that are the ordinary characters.
### Conversion Specifications:
Each conversion specification begins with a `%` and ends with a `conversion character`. Between the `%` and the `conversion character` there may be, in order:
| | |
| --- | --- |
| `-` | A minus sign. This tells printf to left-adjust the conversion of the argument |
| _number_ | An integer that specifies field width; printf prints a conversion of ARGUMENT in a field at least number characters wide. If necessary it will be padded on the left (or right, if left-adjustment is called for) to make up the field width |
| `.` | A period, which separates the field width from the precision |
| _number_ | An integer, the precision, which specifies the maximum number of characters to be printed from a string, or the number of digits after the decimal point of a floating-point value, or the minimum number of digits for an integer |
| `h` or `l` | These differentiate between a short and a long integer, respectively, and are generally only needed for computer programming |
The conversion characters tell `printf` what kind of argument to print out, are as follows:
| Conversion char | Argument type |
| --- | --- |
| `s` | A string |
| `c` | An integer, expressed as a character corresponds ASCII code |
| `d, i` | An integer as a decimal number |
| `o` | An integer as an unsigned octal number |
| `x, X` | An integer as an unsigned hexadecimal number |
| `u` | An integer as an unsigned decimal number |
| `f` | A floating-point number with a default precision of 6 |
| `e, E` | A floating-point number in scientific notation |
| `p` | A memory address pointer |
| `%` | No conversion |
Here is the list of some examples of the `printf` output the ARGUMENT. we can put any word but in this one we put a 'linuxcommand` word and enclosed it with quotes so we can see easier the position related to the whitespaces.
| FORMAT string | ARGUMENT string | Output string |
| --- | --- | --- |
| `"%s"` | `"linuxcommand"` | "linuxcommand" |
| `"%5s"` | `"linuxcommand"` | "linuxcommand" |
| `"%.5s"` | `"linuxcommand"` | "linux" |
| `"%-8s"` | `"linuxcommand"` | "linuxcommand" |
| `"%-15s"` | `"linuxcommand"` | "linuxcommand " |
| `"%12.5s"` | `"linuxcommand"` | " linux" |
| `"%-12.5"` | `"linuxcommand"` | "linux " |
| `"%-12.4"` | `"linuxcommand"` | "linu " |
Notes:
- `printf` requires the number of conversion strings to match the number of ARGUMENTs
- `printf` maps the conversion strings one-to-one, and expects to find exactly one ARGUMENT for each conversion string
- Conversion strings are always interpreted from left to right.
Here's the example:
The input
```
printf "We know %f is %s %d" 12.07 "larger than" 12
```
The output:
```
We know 12.070000 is larger than 12
```
The example above shows 3 arguments, _12.07_, _larger than_, and _12_. Each of them interpreted from left to right one-to-one with the given 3 conversion strings (`%f`, `%d`, `%s`).
Character sequences which are interpreted as special characters by `printf`:
| Escaped char | Description |
| --- | --- |
| `\a` | issues an alert (plays a bell). Usually ASCII BEL characters |
| `\b` | prints a backspace |
| `\c` | instructs `printf` to produce no further output |
| `\e` | prints an escape character (ASCII code 27) |
| `\f` | prints a form feed |
| `\n` | prints a newline |
| `\r` | prints a carriage return |
| `\t` | prints a horizontal tab |
| `\v` | prints a vertical tab |
| `\"` | prints a double-quote (") |
| `\\` | prints a backslash (\) |
| `\NNN` | prints a byte with octal value `NNN` (1 to 3 digits)
| `\xHH` | prints a byte with hexadecimal value `HH` (1 to 2 digits)
| `\uHHHH`| prints the unicode character with hexadecimal value `HHHH` (4 digits) |
| `\UHHHHHHHH` | prints the unicode character with hexadecimal value `HHHHHHHH` (8 digits) |
| `%b` | prints ARGUMENT as a string with "\\" escapes interpreted as listed above, with the exception that octal escapes take the form `\0` or `\0NN` |
### Examples:
The format specifiers usually used with printf are stated in the examples below:
- %s
```
$printf "%s\n" "Printf command documentation!"
```
This will print `Printf command documentation!` in the shell.
### Other important attributes of printf command:
- `%b` - Prints arguments by expanding backslash escape sequences.
- `%q` - Prints arguments in a shell-quoted format which is reusable as input.
- `%d` , `%i` - Prints arguments in the format of signed decimal integers.
- `%u` - Prints arguments in the format of unsigned decimal integers.
- `%o` - Prints arguments in the format of unsigned octal(base 8) integers.
- `%x`, `%X` - Prints arguments in the format of unsigned hexadecimal(base 16) integers. %x prints lower-case letters and %X prints upper-case letters.
- `%e`, `%E` - Prints arguments in the format of floating-point numbers in exponential notation. %e prints lower-case letters and %E prints upper-case.
- `%a`, `%A` - Prints arguments in the format of floating-point numbers in hexadecimal(base 16) fractional notation. %a prints lower-case letters and %A prints upper-case.
- `%g`, `%G` - Prints arguments in the format of floating-point numbers in normal or exponential notation, whichever is more appropriate for the given value and precision. %g prints lower-case letters and %G prints upper-case.
- `%c` - Prints arguments as single characters.
- `%f` - Prints arguments as floating-point numbers.
- `%s` - Prints arguments as strings.
- `%%` - Prints a "%" symbol.
#### More Examples:
The input:
```
printf 'Hello\nyoung\nman!'
```
The output:
```
hello
young
man!
```
The two `\n` break the sentence into 3 parts of words.
The input:
```
printf "%f\n" 2.5 5.75
```
The output
```
2.500000
5.750000
```
The `%f` specifier combined with the `\n` interpreted the two arguments in the form of floating point in the seperated new lines.

View File

@@ -0,0 +1,42 @@
# The `cut` command
The `cut` command lets you remove sections from each line of files. Print selected parts of lines from each FILE to standard output. With no FILE, or when FILE is -, read standard input.
### Usage and Examples:
1. Selecting specific fields in a file
```
cut -d "delimiter" -f (field number) file.txt
```
2. Selecting specific characters:
```
cut -c [(k)-(n)/(k),(n)/(n)] filename
```
Here, **k** denotes the starting position of the character and **n** denotes the ending position of the character in each line, if _k_ and _n_ are separated by “-” otherwise they are only the position of character in each line from the file taken as an input.
3. Selecting specific bytes:
```
cut -b 1,2,3 filename //select bytes 1,2 and 3
cut -b 1-4 filename //select bytes 1 through 4
cut -b 1- filename //select bytes 1 through the end of file
cut -b -4 filename //select bytes from the beginning till the 4th byte
```
**Tabs and backspaces** are treated like as a character of 1 byte.
### Syntax:
```
cut OPTION... [FILE]...
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-b`|`--bytes=LIST`|select only these bytes|
|`-c`|`--characters=LIST`|select only these characters|
|`-d`|`--delimiter=DELIM`|use DELIM instead of TAB for field delimiter|
|`-f`|`--fields`|select only these fields; also print any line that contains no delimiter character, unless the -s option is specified|
|`-s`|`--only-delimited`|do not print lines not containing delimiters|
|`-z`|`--zero-terminated`|line delimiter is NUL, not newline|

View File

@@ -0,0 +1,53 @@
# The `sed` command
`sed` command stands for stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). For instance, it can perform lots of functions on files like searching, find and replace, insertion or deletion. While in some ways it is similar to an editor which permits scripted edits (such as `ed`), `sed` works by making only one pass over the input(s), and is consequently more efficient. But it is sed's ability to filter text in a pipeline that particularly distinguishes it from other types of editors.
The most common use of `sed` command is for a substitution or for find and replace. By using sed you can edit files even without opening it, which is a much quicker way to find and replace something in the file. It supports basic and extended regular expressions that allow you to match complex patterns. Most Linux distributions come with GNU and `sed` is pre-installed by default.
### Examples:
1. To Find and Replace String with `sed`
```
sed -i 's/{search_regex}/{replace_value}/g' input-file
```
2. For Recursive Find and Replace *(along with `find`)*
> Sometimes you may want to recursively search directories for files containing a string and replace the string in all files. This can be done using commands such as find to recursively find files in the directory and piping the file names to `sed`.
The following command will recursively search for files in the current working directory and pass the file names to `sed`. It will recursively search for files in the current working directory and pass the file names to `sed`.
```
find . -type f -exec sed -i 's/{search_regex}/{replace_value}/g' {} +
```
### Syntax:
```
sed [OPTION]... {script-only-if-no-other-script} [INPUT-FILE]...
```
- `OPTION` - sed options in-place, silent, follow-symlinks, line-length, null-data ...etc.
- `{script-only-if-no-other-script}` - Add the script to command if available.
- `INPUT-FILE` - Input Stream, A file or input from a pipeline.
If no option is given, then the first non-option argument is taken as the sed script to interpret. All remaining arguments are names of input files; if no input files are specified, then the standard input is read.
GNU sed home page: [http://www.gnu.org/software/sed/](http://www.gnu.org/software/sed/)
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-i[SUFFIX]`|<center>--in-place[=SUFFIX]</center>|Edit files in place (makes backup if SUFFIX supplied).|
|`-n`|<center>--quiet, --silent</center>|Suppress automatic printing of pattern space.|
|`-e script`|<center>--expression=script</center>|Add the script to the commands to be executed.|
|`-f script-file`|<center>--file=script-file</center>|Add the contents of script-file to the commands to be executed.|
|`-l N`|<center>--line-length=N</center>|Specify the desired line-wrap length for the `l` command.|
|`-r`|<center>--regexp-extended</center>|Use extended regular expressions in the script.|
|`-s`|<center>--separate</center>|Consider files as separate rather than as a single continuous long stream.|
|`-u`|<center>--unbuffered</center>|Load minimal amounts of data from the input files and flush the output buffers more often.|
|`-z`|<center>--null-data</center>|Separate lines by NULL characters.|
### Before you begin
It may seem complicated and complex at first, but searching and replacing text in files with sed is very simple.
To find out more: [https://www.gnu.org/software/sed/manual/sed.html](https://www.gnu.org/software/sed/manual/sed.html)

View File

@@ -0,0 +1,29 @@
# The `rmdir` command
The **rmdir** command is used to remove empty directories from the filesystem in Linux. The rmdir command removes each and every directory specified in the command line only if these directories are empty.
### Usage and Examples:
1. remove directory and its ancestors
```
rmdir -p a/b/c // is similar to 'rmdir a/b/c a/b a'
```
2. remove multiple directories
```
rmdir a b c // removes empty directories a,b and c
```
### Syntax:
```
rmdir [OPTION]... DIRECTORY...
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-`|`--ignore-fail-on-non-empty`|ignore each failure that is solely because a directory is non-empty|
|`-p`|`--parents`|remove DIRECTORY and its ancestors|
|`-d`|`--delimiter=DELIM`|use DELIM instead of TAB for field delimiter|
|`-v`|`--verbose`|output a diagnostic for every directory processed|

View File

@@ -0,0 +1,45 @@
# The `screen` command
`screen` - With screen you can start a screen session and then open any number of windows (virtual terminals) inside that session.
Processes running in Screen will continue to run when their window is not visible even if you get disconnected. This is very
handy for running long during session such as bash scripts that run very long.
To start a screen session you type `screen`, this will open a new screen session with a virtual terminal open.
Below are some most common commands for managing Linux Screen Windows:
|**Command** |**Description** |
|:---|:---|
|`Ctrl+a`+ `c`|Create a new window (with shell).|
|`Ctrl+a`+ `"`|List all windows.
|`Ctrl+a`+ `0`|Switch to window 0 (by number).
|`Ctrl+a`+ `A`|Rename the current window.
|`Ctrl+a`+ `S`|Split current region horizontally into two regions.
|`Ctrl+a`+ `'`|Split current region vertically into two regions.
|`Ctrl+a`+ `tab`|Switch the input focus to the next region.
|`Ctrl+a`+ `Ctrl+a`|Toggle between the current and previous windows
|`Ctrl+a`+ `Q`|Close all regions but the current one.
|`Ctrl+a`+ `X`|Close the current region.
## Restore a Linux Screen
To restore to a screen session you type `screen -r`, if you have more than one open screen session you have to add the
session id to the command to connect to the right session.
## Listing all open screen sessions
To find the session ID you can list the current running screen sessions with:
`screen -ls`
There are screens on:
```
18787.pts-0.your-server (Detached)
15454.pts-0.your-server (Detached)
2 Sockets in /run/screens/S-yourserver.
```
If you want to restore screen 18787.pts-0, then type the following command:
`screen -r 18787`

View File

@@ -0,0 +1,86 @@
# The `nc` command
The `nc` (or netcat) command is used to perform any operation involving TCP (Transmission Control Protocol, connection oriented), UDP (User Datagram Protocol, connection-less, no guarantee of data delivery) or UNIX-domain sockets. It can be thought of as swiss-army knife for communication protocol utilities.
### Syntax:
```
nc [options] [ip] [port]
```
### Examples:
#### 1. Open a TCP connection to port 80 of host, using port 1337 as source port with timeout of 5s:
```bash
$ nc -p 1337 -w 5 host.ip 80
```
#### 2. Open a UDP connection to port 80 on host:
```bash
$ nc -u host.ip 80
```
#### 3. Create and listen on UNIX-domain stream socket:
```bash
$ nc -lU /var/tmp/dsocket
```
#### 4. Create a basic server/client model:
This creates a connection, with no specific server/client sides with respect to nc, once the connection is established.
```bash
$ nc -l 1234 # in one console
$ nc 127.0.0.1 1234 # in another console
```
#### 5. Build a basic data transfer model:
After the file has been transferred, sequentially, the connection closes automatically
```bash
$ nc -l 1234 > filename.out # to start listening in one console and collect data
$ nc host.ip 1234 < filename.in
```
#### 6. Talk to servers:
Basic example of retrieving the homepage of the host, along with headers.
```bash
$ printf "GET / HTTP/1.0\r\n\r\n" | nc host.ip 80
```
#### 7. Port scanning:
Checking which ports are open and running services on target machines. `-z` flag commands to inform about those rather than initiate a connection.
```bash
$ nc -zv host.ip 20-2000 # range of ports to check for
```
### Flags and their Functionalities:
| **Short Flag** | **Description** |
| -------------- | ----------------------------------------------------------------- |
| `-4` | Forces nc to use IPv4 addresses |
| `-6` | Forces nc to use IPv6 addresses |
| `-b` | Allow broadcast |
| `-D` | Enable debugging on the socket |
| `-i` | Specify time interval delay between lines sent and received |
| `-k` | Stay listening for another connection after current is over |
| `-l` | Listen for incoming connection instead of initiate one to remote |
| `-T` | Specify length of TCP |
| `-p` | Specify source port to be used |
| `-r` | Specify source and/or destination ports randomly |
| `-s` | Specify IP of interface which is used to send the packets |
| `-U` | Use UNIX-domain sockets |
| `-u` | Use UDP instead of TCP as protocol |
| `-w` | Declare a timeout threshold for idle or unestablished connections |
| `-x` | Should use specified protocol when talking to proxy server |
| `-z` | Specify to scan for listening daemons, without sending any data |

View File

@@ -0,0 +1,48 @@
# The `make` command
The `make` command is used to automate the reuse of multiple commands in certain directory structure.
An example for that would be the use of `terraform init`, `terraform plan`, and `terraform validate` while having to change different subscriptions in Azure. This is usually done in the following steps:
```
az account set --subscription "Subscription - Name"
terraform init
```
How the `make` command can help us is it can automate all of that in just one go:
```make tf-init```
### Syntax:
```
make [ -f makefile ] [ options ] ... [ targets ] ...
```
### Example use (guide):
#### 1. Create `Makefile` in your guide directory
#### 2. Include the following in your `Makefile` :
```
hello-world:
echo "Hello, World!"
hello-bobby:
echo "Hello, Bobby!"
touch-letter:
echo "This is a text that is being inputted into our letter!" > letter.txt
clean-letter:
rm letter.txt
```
#### 3. Execute ```make hello-world``` - this echoes "Hello, World" in our terminal.
#### 4. Execute ```make hello-bobby``` - this echoes "Hello, Bobby!" in our terminal.
#### 5. Execute ```make touch-letter``` - This creates a text file named `letter.txt` and populates a line in it.
#### 6. Execute ```make clean-letter```
### References to lenghtier and more contentful tutorials:
(linoxide - linux make command examples)[https://linoxide.com/linux-make-command-examples/]
(makefiletutorial.com - the name itself gives it out)[https://makefiletutorial.com/]

View File

@@ -0,0 +1,90 @@
# The `basename` command
The `basename` is a command-line utility that strips directory from given file names. Optionally, it can also remove any trailing suffix. It is a simple command that accepts only a few options.
### Examples
The most basic example is to print the file name with the leading directories removed:
```bash
basename /etc/bar/foo.txt
```
The output will include the file name:
```bash
foo.txt
```
If you run basename on a path string that points to a directory, you will get the last segment of the path. In this example, /etc/bar is a directory.
```bash
basename /etc/bar
```
Output
```bash
bar
```
The basename command removes any trailing `/` characters:
```bash
basename /etc/bar/foo.txt/
```
Output
```bash
foo.txt
```
### Options
1. By default, each output line ends in a newline character. To end the lines with NUL, use the -z (--zero) option.
```bash
$ basename -z /etc/bar/foo.txt
foo.txt$
```
2. The `basename` command can accept multiple names as arguments. To do so, invoke the command with the `-a` (`--multiple`) option, followed by the list of files separated by space. For example, to get the file names of `/etc/bar/foo.txt` and `/etc/spam/eggs.docx` you would run:
```bash
basename -a /etc/bar/foo.txt /etc/spam/eggs.docx
```
```bash
foo.txt
eggs.docx
```
### Syntax
The basename command supports two syntax formats:
```bash
basename NAME [SUFFIX]
basename OPTION... NAME...
```
### Additional functionalities
**Removing a Trailing Suffix**: To remove any trailing suffix from the file name, pass the suffix as a second argument:
```bash
basename /etc/hostname name
host
```
Generally, this feature is used to strip file extensions
### Help Command
Run the following command to view the complete guide to `basename` command.
```bash
man basename
```

View File

@@ -0,0 +1,33 @@
# The `banner` command
The `banner` command writes ASCII character Strings to standard output in large letters. Each line in the output can be up to 10 uppercase or lowercase characters in length. On output, all characters appear in uppercase, with the lowercase input characters appearing smaller than the uppercase input characters.
Note: If you will define more than one NUMBER with sleep command then this command will delay for the sum of the values.
### Examples :
1. To display a banner at the workstation, enter:
```
banner LINUX!
```
2. To display more than one word on a line, enclose the text in quotation marks, as follows:
```
banner "Intro to" Linux
```
> This displays Intro to on one line and Linux on the next
3. Printing “101LinuxCommands” in large letters.
```
banner 101LinuxCommands
```
> It will print only 101LinuxCo as banner has a default capacity of 10
---

View File

@@ -0,0 +1,64 @@
# The `which` command
`which` command identifies the executable binary that launches when you issue a command to the shell.
If you have different versions of the same program on your computer, you can use which to find out which one the shell will use.
It has 3 return status as follows:
0 : If all specified commands are found and executable.
1 : If one or more specified commands is nonexistent or not executable.
2 : If an invalid option is specified.
### Examples
1. To find the full path of the ls command, type the following:
```
which ls
```
2. We can provide more than one arguments to the which command:
```
which netcat uptime ping
```
The which command searches from left to right, and if more than one matches are found in the directories listed in the PATH path variable, which will print only the first one.
3. To display all the paths for the specified command:
```
which [filename] -a
```
4. To display the path of node executable files, execute the command:
```
which node
```
5. To display the path of Java executable files, execute:
```
which java
```
### Syntax
```
which [filename1] [filename2] ...
```
You can pass multiple programs and commands to which, and it will check them in order.
For example:
```which ping cat uptime date head```
### Options
-a : List all instances of executables found (instead of just the first
one of each).
-s : No output, just return 0 if all the executables are found, or 1
if some were not found

View File

@@ -0,0 +1,35 @@
# The `nice/renice` command
The `nice/renice` commands is used to modify the priority of the program to be executed.
The priority range is between -20 and 19 where 19 is the lowest priority.
### Examples:
1. Running cc command in the background with a lower priority than default (slower):
```
nice -n 15 cc -c *.c &
```
2. Increase the priority to all processes belonging to group "test":
```
renice --20 -g test
```
### Syntax:
```
nice [ -Increment| -n Increment ] Command [ Argument ... ]
```
### Flags :
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-Increment`|<center>-</center>|Increment is the value of priority you want to assign.|
|`-n Increment`|<center>-</center>|Same as `-Increment`

View File

@@ -0,0 +1,42 @@
# The `wc` command
the `wc` command stands for word count. It's used to count the number of lines, words, and bytes *(characters)* in a file or standard input then prints the result to the standard output.
### Examples:
1. To count the number of lines, words and characters in a file in order:
```
wc file.txt
```
2. To count the number of directories in a directory:
```
ls -F | grep / | wc -l
```
### Syntax:
```bash
wc [OPTION]... [FILE]...
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-c` | `--bytes` | print the byte counts|
|`-m` | `--chars` | print the character counts|
|`-l` | `--lines` | print the newline counts|
|<center>-</center> | `--files0-from=F` | read input from the files specified by NUL-terminated names in file F. If F is `-` then read names from standard input|
|`-L` | `--max-line-length` | print the maximum display width|
|`-w` | `--words` | print the word counts|
### Additional Notes:
* Passing more than one file to `wc` command prints the counts for each file and the total conuts of them.
* you can combine more whan one flag to print the result as you want.

View File

@@ -0,0 +1,65 @@
# The `tr` command
The tr command in UNIX is a command line utility for translating or deleting characters.
It supports a range of transformations including uppercase to lowercase, squeezing repeating characters, deleting specific characters and basic find and replace.
It can be used with UNIX pipes to support more complex translation. tr stands for translate.
### Examples:
1. Convert all lowercase letters in file1 to uppercase.
```
$ cat file1
foo
bar
baz
tr a-z A-Z < file1
FOO
BAR
BAZ
```
2. Make consecutive line breaks into one.
```
$ cat file1
foo
bar
baz
$ tr -s "\n" < file1
foo
bar
baz
```
3. Remove the newline code.
```
$ cat file1
foo
bar
baz
$ tr -d "\n" < file1
foobarbaz%
```
### Syntax:
The general syntax for the tr command is as follows:
```
tr [options] string1 [string2]
```
### Additional Flags and their Functionalities:
| **Short Flag** | **Long Flag** | **Description** |
| :------------- | :------------ | :------------------------------------------------------------------------------------------------------------ |
| `-C` | | Complement the set of characters in string1, that is `-C ab` includes every character except for `a` and `b`. |
| `-c` | | Same as -C. |
| `-d` | | Delete characters in string1 from the input. |
| `-s` | | If there is a sequence of characters in string1, combine them into one. |

View File

@@ -0,0 +1,27 @@
# The `Wait` commands
It is a command that waits for completing any running process of given id. if the process id is not given then it waits for all current child processes to complete.
## Example
This example shows how the `wait` command works : <br />
**Step-1**:
Create a file named "wait_example.sh" and add the following script to it.
```
#!/bin/bash
echo "Wait command" &
process_id=$!
wait $process_id
echo "Exited with status $?"
```
**Step-2**:
Run the file with bash command.
```
$ bash wait_example.sh
```

View File

@@ -0,0 +1,30 @@
# The `zcat` command
The `zcat` allows you to look at a compressed file.
### Examples:
1. To view the content of a compressed file:
```
~$ zcat test.txt.gz
Hello World
```
2. It can also Works with multiple files:
```
~$ zcat test2.txt.gz test.txt.gz
hello
Hello world
```
### Syntax:
The general syntax for the `zcat` command is as follows:
```
zcat [ -n ] [ -V ] [ File ... ]
```

View File

@@ -0,0 +1,55 @@
# The `fold` command
The `fold` command in Linux wraps each line in an input file to fit a specified width and prints it to the standard output.
By default, it wraps lines at a maximum width of 80 columns but this is configurable.
To fold input using the fold command pass a file or standard input to the command.
### Syntax:
```
fold [OPTION]... [FILE]...
```
### Options
**-w** : By using this option in fold command, we can limit the width by number of columns.
By using this command we change the column width from default width of 80.
Syntax:
```
fold -w[n] [FILE]
```
Example: wrap the lines of file1.txt to a width of 60 columns
```
fold -w60 file1.txt
```
**-b** : This option of fold command is used to limit the width of the output by the number of bytes rather than the number of columns.
By using this we can enforce the width of the output to the number of bytes.
```
fold -b[n] [FILE]
```
Example: limit the output width of the file to 40 bytes and the command breaks the output at 40 bytes.
```
fold -b40 file1.txt
```
**-s** : This option is used to break the lines on spaces so that words are not broken.
If a segment of the line contains a blank character within the first width column positions, break the line after the last such blank character meeting the width constraints.
```
fold -w[n] -s [FILE]
```

View File

@@ -0,0 +1,28 @@
# The `quota` command
The `quota` display disk usage and limits.
### Installation:
You can simply go ahead and install quota on ubuntu systems by running:
```
sudo apt-get install quota
```
for Debian use the install command without sudo:
```
apt-get install quota
```
### Syntax:
The general syntax for the `quota` command is as follows:
```
quota [ -u [ User ] ] [ -g [ Group ] ] [ -v | -q ]
```

View File

@@ -0,0 +1,55 @@
# The `aplay` command
`aplay` is a command-line audio player for ALSA(Advanced Linux Sound Architecture) sound card drivers. It supports several file formats and multiple soundcards with multiple devices. It is basically used to play audio on command-line interface. aplay is much the same as arecord only it plays instead of recording. For supported soundfile formats, the sampling rate, bit depth, and so forth can be automatically determined from the soundfile header.
## Syntax:
```
$ aplay [flags] [filename [filename]] ...
```
## Options:
```
-h, help : Show the help information.
-d, duration=# : Interrupt after # seconds.
-r, rate=# : Sampling rate in Hertz. The default rate is 8000 Hertz.
version : Print current version.
-l, list-devices : List all soundcards and digital audio devices.
-L, list-pcms : List all PCMs(Pulse Code Modulation) defined.
-D, device=NAME : Select PCM by name.
```
Note: This command contain various other options that we normally dont need. If you want to know more about you can simply run following command on your terminal.
```
aplay --help
```
## Examples :
1. To play audio for only 10 secs at 2500hz frequency.
```
$ aplay -d 10 -r 2500hz sample.mp3
```
> Plays sample.mp3 file for only 10 secs at 2500hz frequency.
2. To play full audio clip at 2500hz frezuency.
```
$ aplay -r 2500hz sample.mp3
```
> Plays sample.mp3 file at 2500hz frezuency.
3. To Display version information.
```
$ aplay --version
```
> Displays version information. For me it shows aplay: vesrion 1.1.0
---

View File

@@ -0,0 +1,82 @@
# The `spd-say` command
`spd-say` sends text-to-speech output request to speech-dispatcher process which handles it
and ideally outputs the result to the audio system.
## Syntax:
```
$ spd-say [options] "some text"
```
## Options:
```
-r, --rate
Set the rate of the speech (between -100 and +100, default: 0)
-p, --pitch
Set the pitch of the speech (between -100 and +100, default: 0)
-i, --volume
Set the volume (intensity) of the speech (between -100 and +100, default: 0)
-o, --output-module
Set the output module
-l, --language
Set the language (iso code)
-t, --voice-type
Set the preferred voice type (male1, male2, male3, female1, female2, female3,
child_male, child_female)
-m, --punctuation-mode
Set the punctuation mode (none, some, all)
-s, --spelling
Spell the message
-x, --ssml
Set SSML mode on (default: off)
-e, --pipe-mode
Pipe from stdin to stdout plus Speech Dispatcher
-P, --priority
Set priority of the message (important, message, text, notification, progress;
default: text)
-N, --application-name
Set the application name used to establish the connection to specified string value
(default: spd-say)
-n, --connection-name
Set the connection name used to establish the connection to specified string value
(default: main)
-w, --wait
Wait till the message is spoken or discarded
-S, --stop
Stop speaking the message being spoken in Speech Dispatcher
-C, --cancel
Cancel all messages in Speech Dispatcher
-v, --version
Print version and copyright info
-h, --help
Print this info
```
## Examples :
1. To Play the given text as the sound.
```
$ spd-say "Hello"
```
>Plays "Hello" in sound.

View File

@@ -0,0 +1,15 @@
# The `xeyes` command
Xeyes is a graphical user interface program that creates a set of eyes on the desktop that follow the movement of the mouse cursor. It seems much of a funny command, than of any useful use. Being funny is as much useful, is another aspect.
### Syntax:
```
xeyes
```
### What is the purpose of xeyes?
`xeyes` is not for fun, at least not only. The purpose of this program is to let you follow the mouse pointer which is sometimes hard to see. It is very useful on multi-headed computers, where monitors are separated by some distance, and if someone (say teacher at school) wants to present something on the screen, the others on their monitors can easily follow the mouse with `xeyes`.

View File

@@ -0,0 +1,32 @@
# The `nl` command
The “nl” command enumerates lines in a file. A different way of viewing the contents of a file, the “nl” command can be very useful for many tasks.
## Syntax
```
nl [ -b Type ] [ -f Type ] [ -h Type ] [ -l Number ] [ -d Delimiter ] [ -i Number ] [ -n Format ] [ -v Number ] [ -w Number ] [ -p ] [ -s Separator ] [ File ]
```
## Examples:
1. To number all lines:
```
nl -ba chap1
```
2. Displays all the text lines:
```
[server@ssh ~]$ nl states
1 Alabama
2 Alaska
3 Arizona
4 Arkansas
5 California
6 Colorado
7 Connecticut.
8 Delaware
```
3. Specify a different line number format
```
nl -i10 -nrz -s:: -v10 -w4 chap1
```
You can name only one file on the command line. You can list the flags and the file name in any order.

View File

@@ -0,0 +1,68 @@
# The `pidof` command
The `pidof` is a command-line utility that allows you to find the process ID of a running program.
## Syntax
```
pidof [OPTIONS] PROGRAM_NAME
```
To view the help message and all options of the command:
```
[user@home ~]$ pidof -h
-c Return PIDs with the same root directory
-d <sep> Use the provided character as output separator
-h Display this help text
-n Avoid using stat system function on network shares
-o <pid> Omit results with a given PID
-q Quiet mode. Do not display output
-s Only return one PID
-x Return PIDs of shells running scripts with a matching name
-z List zombie and I/O waiting processes. May cause pidof to hang.
```
## Examples:
To find the PID of the SSH server, you would run:
```
pidof sshd
```
If there are running processes with names matching `sshd`, their PIDs will be displayed on the screen. If no matches are found, the output will be empty.
```
# Output
4382 4368 811
```
`pidof` returns `0` when at least one running program matches with the requested name. Otherwise, the exit code is `1`. This can be useful when writing shell scripts.
To be sure that only the PIDs of the program you are searching for are displayed, use the full pathname to the program as an argument. For example, if you have two running programs with the same name located in two different directories pidof will show PIDs of both running programs.
By default, all PIDs of the matching running programs are displayed. Use the `-s` option to force pidof to display only one PID:
```
pidof -s program_name
```
The `-o` option allows you to exclude a process with a given PID from the command output:
```
pidof -o pid program_name
```
When pidof is invoked with the `-o` option, you can use a special PID named %PPID that represents the calling shell or shell script.
To return only the PIDs of the processes that are running with the same root directory, use the `-c` option.
This option works only pidof is run as `root` or `sudo` user:
```
pidof -c pid program_name
```
## Conclusion
The `pidof` command is used to find out the PIDs of a specific running program.
`pidof` is a simple command that doesnt have a lot of options. Typically you will invoke pidof only with the name of the program you are searching for.

View File

@@ -0,0 +1,172 @@
# The `shuf` command
The `shuf` command in Linux writes a random permutation of the input lines to standard output. It pseudo randomizes an input in the same way as the cards are shuffled. It is a part of GNU Coreutils and is not a part of POSIX. This command reads either from a file or standard input in bash and randomizes those input lines and displays the output.
## Syntax
```
# file shuf
shuf [OPTION] [FILE]
# list shuf
shuf -e [OPTION]... [ARG]
# range shuf
shuf -i LO-HI [OPTION]
```
Like other Linux commands, `shuf` command comes with `-help` option:
```
[user@home ~]$ shuf --help
Usage: shuf [OPTION]... [FILE]
or: shuf -e [OPTION]... [ARG]...
or: shuf -i LO-HI [OPTION]...
Write a random permutation of the input lines to standard output.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-e, --echo treat each ARG as an input line
-i, --input-range=LO-HI treat each number LO through HI as an input line
-n, --head-count=COUNT output at most COUNT lines
-o, --output=FILE write result to FILE instead of standard output
--random-source=FILE get random bytes from FILE
-r, --repeat output lines can be repeated
-z, --zero-terminated line delimiter is NUL, not newline
```
## Examples:
### shuf command without any option or argument.
```
shuf
```
When `shuf` command is used without any argument in the command line, it takes input from the user until `CTRL-D` is entered to terminate the set of inputs. It displays the input lines in a shuffled form. If `1, 2, 3, 4 and 5` are entered as input lines, then it generates `1, 2, 3, 4 and 5` in random order in the output as seen in the illustration below:
```
[user@home ~]$ shuf
1
2
3
4
5
4
5
1
2
3
```
Consider an example where Input is taken from the pipe:
```
{
seq 5 | shuf
}
```
`seq 5` returns the integers sequentially from `1` to `5` while the `shuf` command takes it as input and shuffles the content i.e, the integers from `1` to `5`. Hence, `1` to `5` is displayed as output in random order.
```
[user@home ~]$ {
> seq 5 | shuf
> }
5
4
2
3
1
```
### File shuf
When `shuf` command is used without `-e` or `-i` option, then it operates as a file shuf i.e, it shuffles the contents of the file. The `<file_name>` is the last parameter of the `shuf` command and if it is not given, then input has to be provided from the shell or pipe.
Consider an example where input is taken from a file:
```
shuf file.txt
```
Suppose file.txt contains 6 lines, then the shuf command displays the input lines in random order as output.
```
[user@home ~]$ cat file.txt
line-1
line-2
line-3
line-4
line-5
[user@home ~]$ shuf file.txt
line-5
line-4
line-1
line-3
line-2
```
Any number of lines can be randomized by using `-n` option.
```
shuf -n 2 file.txt
```
This will display any two random lines from the file.
```
line-5
line-2
```
### List shuf
When `-e` option is used with shuf command, it works as a list shuf. The arguments of the command are taken as the input line for the shuf.
Consider an example:
```
shuf -e A B C D E
```
It will take `A, B, C, D, E` as input lines, and will shuffle them to display the output.
```
A
C
B
D
E
```
Any number of input lines can be displayed using the `-n` option along with `-e` option.
```
shuf -e -n 2 A B C D E
```
This will display any two of the inputs.
```
E
A
```
### Range shuf
When `-i` option is used along with `shuf` command, it acts as a `range shuf`. It requires a range of input as input where `L0` is the lower bound while `HI` is the upper bound. It displays integers from `L0-HI` in shuffled form.
```
[user@home ~]$ shuf -i 1-5
4
1
3
2
5
```
## Conclusion
The `shuf` command helps you randomize input lines. And there are features to limit the number of output lines, repeat lines and even generate random positive integers. Once you're done practicing whatever we've discussed here, head to the tool's [man page](https://linux.die.net/man/1/shuf) to know more about it.

View File

@@ -0,0 +1,68 @@
# The `cmp` command
The `cmp` command is used to compare the two files byte by byte.
Example:
```
cmp file1.txt file2.txt
```
Syntax:
```
cmp [option] File1 File2
```
## Few Examples :
1. ### Comparison of two files:
Perform a simple comparison of the two files to check out if they differ from each other or not.
Example:
```
cmp File1 File2
```
2. ### Comparing Files after Skipping a Specified Number of Bytes:
Compare two files after skipping a certain number of bytes
Example:
```
cmp -i 2 list.txt list2.txt
```
Here “INT” represents the number of bytes to be skipped
3. ### Display the Differing Bytes of the Files in the Output:
Example:
```
cmp -b list.txt list1.txt
```
4. ### Display Byte Numbers and Differing Byte Values of the Files in the Output:
Example:
```
cmp -l list.txt list1.txt
```
5. ### Comparing the First “n” Number of Bytes of the Files:
Example:
```
cmp -n 10 list.txt list2.txt
```
### Additional Flags and their Functionalities
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-b`|`--print-bytes`|print differing bytes|
|`-i`|`--ignore-initial=SKIP`|skip first SKIP bytes of both inputs|
|`-i`|`--ignore-initial=SKIP1:SKIP2`|skip first SKIP1 bytes of FILE1 and first SKIP2 bytes of FILE2|
|`-l`|`--verbose`|output byte numbers and differing byte values|
|`-n`|`--bytes=LIMIT`|compare at most LIMIT bytes|
|`-s`|`--quiet, --silent`|suppress all normal output|
|`v`|`--version`|output version information and exit|
||`--help`|Display this help and exit|

View File

@@ -0,0 +1,48 @@
# The `expr` command
The `expr` command evaluates a given expression and displays its corresponding output. It is used for basic operations like addition, subtraction, multiplication, division, and modulus on integers and Evaluating regular expressions, string operations like substring, length of strings etc.
## Syntax
```
expr expression
```
## Few Examples:
1. ### Perform basic arithmetic operations using expr command
```
expr 7 + 14
expr 7 * 8
```
2. ### Comparing two expressions
```
x=10
y=20
res=`expr $x = $y`
echo $res
```
3. ### Match the numbers of characters in two strings
```
expr alphabet : alpha
```
4. ### Find the modulus value
```
expr 20 % 30
```
5. ### Extract the substring
```
a=HelloWorld
b=`expr substr $a 6 10`
echo $b
```
### Additional Flags and their Functionalities
|**Flag** |**Description** |
:---|:---|
|`--version`|output version information and exit|
|`--help`|Display this help and exit|
For more details: [Expr on Wikipedia](https://en.wikipedia.org/wiki/Expr)

View File

@@ -0,0 +1,73 @@
# 101 Linux commands Open-source eBook
This is an open-source eBook with 101 Linux commands that everyone should know. No matter if you are a DevOps/SysOps engineer, developer, or just a Linux enthusiast, you will most likely have to use the terminal at some point in your career.
## Hacktoberfest
This eBook is made possible thanks to [Hacktoberfest](https://hacktoberfest.digitalocean.com/) and the open source community!
## About me
My name is Bobby Iliev, and I have been working as a Linux DevOps Engineer since 2014. I am an avid Linux lover and supporter of the open-source movement philosophy. I am always doing that which I cannot do in order that I may learn how to do it, and I believe in sharing knowledge.
I think it's essential always to keep professional and surround yourself with good people, work hard, and be nice to everyone. You have to perform at a consistently higher level than others. That's the mark of a true professional.
For more information, please visit my blog at [https://bobbyiliev.com](https://bobbyiliev.com), follow me on Twitter [@bobbyiliev_](https://twitter.com/bobbyiliev_) and [YouTube](https://www.youtube.com/channel/UCQWmdHTeAO0UvaNqve9udRw).
### DigitalOcean
DigitalOcean is a cloud services platform delivering the simplicity developers love and businesses trust to run production applications at scale.
It provides highly available, secure, and scalable compute, storage, and networking solutions that help developers build great software faster.
Founded in 2012 with offices in New York and Cambridge, MA, DigitalOcean offers transparent and affordable pricing, an elegant user interface, and one of the largest libraries of open source resources available.
For more information, please visit [https://www.digitalocean.com](https://www.digitalocean.com) or follow [@digitalocean](https://twitter.com/digitalocean) on Twitter.
If you are new to DigitalOcean, you can get a free $100 credit and spin up your own servers via this referral link here:
[Free $100 Credit For DigitalOcean](https://m.do.co/c/2a9bba940f39)
### DevDojo
The DevDojo is a resource to learn all things web development and web design. Learn on your lunch break or wake up and enjoy a cup of coffee with us to learn something new.
Join this developer community, and we can all learn together, build together, and grow together.
[Join DevDojo](https://devdojo.com?ref=bobbyiliev)
For more information, please visit [https://www.devdojo.com](https://www.devdojo.com?ref=bobbyiliev) or follow [@thedevdojo](https://twitter.com/thedevdojo) on Twitter.
## Ebook PDF Generation Tool
This ebook was generated by [Ibis](https://github.com/themsaid/ibis/) developed by [Mohamed Said](https://github.com/themsaid).
Ibis is a PHP tool that helps you write eBooks in markdown.
## Book Cover
The cover for this ebook was created by [Suhail Kakar](https://twitter.com/SuhailKakar).
## License
MIT License
Copyright (c) 2020 Bobby Iliev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1 @@
999-wrap-up.md

View File

@@ -0,0 +1,96 @@
# The `gzip` command
The `gzip` command in Linux/Unix is used to compress/decompress data.
# Usage
## Compress a file
**Action:**
--- Compressing a file
**Details:**
--- Reduce the size of the file by applying compression
**Command:**
```
gzip file_name
```
## Decompress a file
**Action:**
--- Decompressing a file
**Details:**
--- Restore the file's original form in terms of data and size
**Command:**
```
gzip -d archive_01.gz
```
## Compress multiple files:
**Action:**
--- Compress multiple files
**Details:**
--- Compress multiple files into multiple archives
**Command:**
```
gzip file_name_01 file_name_02 file_name_03
```
## Decompress multiple files:
**Action:**
--- Decompress multiple files
**Details:**
--- Decompress multiple files from multiple archives
**Command:**
```
gzip -d archive_01.gz archive_02.gz archive_03.gz
```
## Compress a directory:
**Action:**
--- Compress all the files in a directory
**Details:**
--- Compress multiple files under a directory in one single archive
**Command:**
```
gzip -r directory_name
```
## Decompress a directory:
**Action:**
--- Decompress all the files in a directory
**Details:**
--- Decompress multiple files under a directory from one single archive
**Command:**
```
gzip -dr directory_name
```
## Verbose (detailed) output while compressing:
**Action:**
--- Compress a file in a more verbose manner
**Details:**
--- Output more information about the action of the command
**Command:**
```
gzip -v file_name
```

View File

@@ -0,0 +1,41 @@
# The `zip` command
The `zip` command is used to compress files and reduce their size.
It outputs an archive containing one or more compressed files or directories.
### Examples:
In order to compress a single file with the `zip` command the syntax would be the following:
```
zip myZipFile.zip filename.txt
```
This also works with multiple files as well:
```
zip multipleFiles.zip file1.txt file2.txt
```
If you are compressing a whole directory, don't forget to add the `-r` flag:
```
zip -r zipFolder.zip myFolder/
```
### Syntax:
```
zip [OPTION] zipFileName filesList
```
### Possible options:
|**Flag** |**Description** |
|:---|:---|
|`-d`|Removes the file from the zip archive. After creating a zip file, you can remove a file from the archive using the `-d` option|
|`-u`|Updates the file in the zip archive. This option can be used to update the specified list of files or add new files to the existing zip file. Update an existing entry in the zip archive only if it has been modified more recently than the version already in the zip archive.|
|`-m`|Deletes the original files after zipping.|
|`-r`|To zip a directory recursively, it will recursively zip the files in a directory. This option helps to zip all the files present in the specified directory.|
|`-x`|Exclude the files in creating the zip|
|`-v`|Verbose mode or print diagnostic version info. Normally, when applied to real operations, this option enables the display of a progress indicator during compression and requests verbose diagnostic info about zip file structure oddities|

View File

@@ -0,0 +1,44 @@
# The `unzip` command
The `unzip` command extracts all files from the specified ZIP archive to the current directory.
### Examples:
In order to extract the files the syntax would be the following:
```
unzip myZipFile.zip
```
To unzip a ZIP file to a different directory than the current one, don't forget to add the `-d` flag:
```
unzip myZipFile.zip -d /path/to/directory
```
To unzip a ZIP file and exclude specific file or files or directories from being extracted, don't forget to add the `-x` flag:
```
unzip myZipFile.zip -x file1.txt file2.txt
```
### Syntax:
```
unzip zipFileName [OPTION] [PARAMS]
```
### Possible options:
|**Flag** |**Description** |**Params** |
|:---|:---|:---|
|`-d`|Unzip an archive to a different directory.|/path/to/directory|
|`-x`|Extract the archive but do not extract the specified files.|filename(s)|
|`-j`|Unzip without creating new folders, if the zipped archive contains a folder structure.|-|
|`-l`|Lists the contents of an archive file without extracting it.|-|
|`-n`|Do not overwrite existing files; supply an alternative filename instead.|-|
|`-o`|Overwrite files.|-|
|`-P`|Supplies a password to unzip a protected archive file.|password|
|`-q`|Unzips without writing status messages to the standard output.|-|
|`-t`|Tests whether an archive file is valid.|-|
|`-v`|Displays detailed (verbose) information about the archive without extracting it.|-|

View File

@@ -0,0 +1,76 @@
# The `tar` command
The `tar` command stands for tape archive, is used to create Archive and extract the Archive files. This command provides archiving functionality in Linux. We can use tar command to create compressed or uncompressed Archive files and also maintain and modify them.
### Examples:
1. To create a tar file in abel directory:
```
tar -cvf file-14-09-12.tar /home/abel/
```
2. To un-tar a file in the current directory:
```
tar -xvf file-14-09-12.tar
```
### Syntax:
```
tar [options] [archive-file] [file or directory to be archived
```
### Additional Flags and their Functionalities:
|**Use Flag** |**Description** |
|:---|:---|
|`-c`|Creates Archive |
|`-x`|Extract the archive |
|`-f`|Creates archive with given filename|
|`-t`|Displays or lists files in archived file |
|`-u`|Archives and adds to an existing archive file|
|`-v`|Displays Verbose Information |
|`-A`|Concatenates the archive files |
|`-z`|zip, tells tar command that creates tar file using gzip |
|`-j`|Filter archive tar file using tbzip |
|`w`|Verify a archive file |
|`r`|update or add file or directory in already existed .tar file |
|`-?`|Displays a short summary of the project |
|`-d`|Find the difference between an archive and file system |
|`--usage`|shows available tar options |
|`--version`|Displays the installed tar version |
|`--show-defaults`|Shows default enabled options |
|**Option Flag** |**Description** |
|:---|:---|
|`--check-device`| Check device numbers during incremental archive|
|`-g`|Used to allow compatibility with GNU-format incremental ackups|
|`--hole-detection`|Used to detect holes in the sparse files|
|`-G`| Used to allow compatibility with old GNU-format incremental backups|
|`--ignore-failed-read`|Don't exit the program on file read errors|
|`--level`|Set the dump level for created archives|
|`-n`|Assume the archive is seekable|
|`--no-check-device`|Do not check device numbers when creating archives|
|`--no-seek`|Assume the archive is not seekable|
|`--occurrence=N`|`Process only the Nth occurrence of each file|
|`--restrict`|`Disable use of potentially harmful options|
|`--sparse-version=MAJOR,MINOR`|Set version of the sparce format to use|
|`-S`|Handle sparse files efficiently.|
|**Overwright control Flag** |**Description**|
|:---|:---|
|`-k`|Don't replace existing files|
|`--keep-newer-files`|Don't replace existing files that are newer than the archives version|
|`--keep-directory-symlink`|Don't replace existing symlinks|
|`--no-overwrite-dir`|Preserve metadata of existing directories|
|`--one-top-level=DIR`|Extract all files into a DIR|
|`--overwrite`| Overwrite existing files|
|`--overwrite-dir`| Overwrite metadata of directories|
|`--recursive-unlink`| Recursivly remove all files in the directory before extracting|
|`--remove-files`| Remove files after adding them to a directory|
|`--skip-old-files`| Don't replace existing files when extracting|
|`-u`| Remove each file before extracting over it|
|`-w`| Verify the archive after writing it|

View File

@@ -0,0 +1,57 @@
# The `gunzip` command
The `gunzip` command is an antonym command of [`gzip` command](015-the-gzip-command.md). In other words, it decompresses files deflated by the `gzip` command.
`gunzip` takes a list of files on its command line and replaces each file whose name ends with _.gz_, _-gz_, _.z_, _-z_, or *\_z* (ignoring case) and which begins with the correct magic number with an uncompressed file without the original extension. `gunzip` also recognizes the special extensions *.tgz* and *.taz* as shorthands for *.tar.gz* and *.tar.Z* respectively.
### Examples:
1. Uncompress a file
```
gunzip filename.gz
```
2. Recursively uncompress content inside a directory, that match extension (suffix) compressed formats accepted by `gunzip`:
```
gunzip -r directory_name/
```
3. Uncompress all files in the current/working directory whose suffix match *.tgz*:
```
gunzip -S .tgz *
```
4. List compressed and uncompressed sizes, compression ratio and uncompressed name of input compressed file/s:
```
gunzip -l file_1 file_2
```
### Syntax:
```
gunzip [ -acfhklLnNrtvV ] [-S suffix] [ name ... ]
```
### Video tutorial about using gzip, gunzip and tar commands:
[This video](https://www.youtube.com/watch?v=OBtG8zfVwuI) shows how to compress and decompress in a Unix shell. It uses `gunzip` as decompression command.
### Additional Flags and their Functionalities:
|**Short Flag**|**Long Flag**|**Description**|
|:---|:---|:---|
|-c|--stdout|write on standard output, keep original files unchanged|
|-h|--help|give help information|
|-k|--keep|keep (don't delete) input files|
|-l|--list|list compressed file contents|
|-q|--quiet|suppress all warnings|
|-r|--recursive|operate recursively on directories|
|-S|--suffix=SUF|use suffix SUF on compressed files|
||--synchronous|synchronous output (safer if system crashes, but slower)|
|-t|--test|test compressed file integrity|
|-v|--verbose|verbose mode|
|-V|--version|display version number|

View File

@@ -0,0 +1,105 @@
# The `df` command
The `df` command in Linux/Unix is used to show the disk usage & information.
`df` is an abbreviation for "disk free".
`df` displays the amount of disk space available on the file system containing each file name argument. If no file name is given, the space available on all currently mounted file systems is shown.
### Syntax
```
df [OPTION]... [FILE]...
```
### Options
|**Short Flag**|**Long Flag**|**Description**|
|:--|:--|:--|
|`-a`|`--all`|Include pseudo, duplicate, inaccessible file systems.|
|`-B`|`--block-size=SIZE`|Scale sizes by SIZE before printing them; e.g., `-BM` prints sizes in units of 1,048,576 bytes; see SIZE format below.|
|`-h`|`--human-readable`|Print sizes in powers of 1024 (e.g., 1023M).|
|`-H`|`--si`|Print sizes in powers of 1000 (e.g., 1.1G).|
|`-i`|`--inodes`|List inode information instead of block usage.|
|`-k`|<center>-</center>|Like `--block-size=1K`.|
|`-l`|`--local`|Limit listing to local file systems.|
|<center>-</center>|`--no-sync`|Do not invoke `sync` before getting usage info (default).|
|<center>-</center>|`--output[=FIELD_LIST]`|Use the output format defined by `FIELD_LIST`, or print all fields if FIELD_LIST is omitted.|
|`-P`|`--portability`|Use the `POSIX` output format|
|<center>-</center>|`--sync`|Invoke sync before getting usage info.|
|<center>-</center>|`--total`|Elide all entries insignificant to available space, and produce a grand total.|
|`-t`|`--type=TYPE`|Limit listing to file systems of type `TYPE`.|
|`-T`|`--print-type`|Print file system type.|
|`-x`|`--exclude-type=TYPE`|Limit listing to file systems not of type `TYPE`.|
|`-v`|<center>-</center>|Ignored; included for compatibility reasons.|
|<center>-</center>|`--help`|Display help message and exit.|
|<center>-</center>|`--version`|Output version information and exit.|
### Examples:
1. Show available disk space
**Action:**
--- Output the available disk space and where the directory is mounted
**Details:**
--- Outputted values are not human-readable (are in bytes)
**Command:**
```
df
```
2. Show available disk space in human-readable form
**Action:**
--- Output the available disk space and where the directory is mounted
**Details:**
--- Outputted values ARE human-readable (are in GBs/MBs)
**Command:**
```
df -h
```
3. Show available disk space for the specific file system
**Action:**
--- Output the available disk space and where the directory is mounted
**Details:**
--- Outputted values are only for the selected file system
**Command:**
```
df -hT file_system_name
```
4. Show available inodes
**Action:**
--- Output the available inodes for all file systems
**Details:**
--- Outputted values are for inodes and not available space
**Command:**
```
df -i
```
5. Show file system type
**Action:**
--- Output the file system types
**Details:**
--- Outputted values are for all file systems
**Command:**
```
df -T
```
6. Exclude file system type from the output
**Action:**
--- Output the information while excluding the chosen file system type
**Details:**
--- Outputted values are for all file systems EXCEPT the chosen file system type
**Command:**
```
df -x file_system_type
```

View File

@@ -0,0 +1,37 @@
# The `du` command
The `du` command, which is short for `disk usage` lets you retrieve information about disk space usage information in a specified directory. In order to customize the output according to the information you need, this command can be paired with the appropriate options or flags.
### Examples:
1. To show the estimated size of sub-directories in the current directory:
```
du
```
2. To show the estimated size of sub-directories inside a specified directory:
```
du {PATH_TO_DIRECTORY}
```
### Syntax:
```
du [OPTION]... [FILE]...
du [OPTION]... --files0-from=F
```
### Additional Flags and their Functionalities:
*Note: This does not include an exhaustive list of options.*
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-a`|`--all`|Includes information for both files and directories|
|`-c`|`--total`|Provides a grand total at the end of the list of files/directories|
|`-d`|`--max-depth=N`|Provides information up to `N` levels from the directory where the command was executed|
|`-h`|`--human-readable`|Displays file size in human-readable units, not in bytes|
|`-s`|`--summarize`|Display only the total filesize instead of a list of files/directories|

View File

@@ -0,0 +1,118 @@
# The ``lsblk`` command
## Summary
The ``lsblk`` command displays the block and loop devices on the system. It is especially useful when you want to format disks, write filesystems, check the filesystem and know the mount point of a device.
## Examples
1. Basic usage is fairly simple - just execute 'lsblk' sans any option.
```
lsblk
```
2. Make lsblk display empty devices as well
```
lsblk -a
```
3. Make lsblk print size info in bytes
```
lsblk -b
```
4. Make lsblk print zone model for each device
```
lsblk -z
```
5. Make lsblk skip entries for slaves
```
lsblk -d
```
6. Make lsblk use ascii characters for tree formatting
```
lsblk -i
```
7. Make lsblk display info about device owner, group, and mode
```
lsblk -m
```
8. Make lsblk output select columns
```
lsblk -o NAME,SIZE
```
## Syntax
```
lsblk [options] [<device> ...]
```
## Reading information given by ``lsblk``
On running ``lsblk`` with no flags or command-line arguments, it writes general disk information to the STDOUT.
Here is a table that interpretes that information:
| Column Name | Meaning | Interpretation |
|:-----------:|:----------------------------------|:------------------------------------------------------------|
| NAME | Name of the device. | Shows name of the device. |
| RM | Removable. | Shows 1 if the device is removable, 0 if not. |
| SIZE | Size of the device. | Shows size of the device. |
| RO | Read-Only. | Shows 1 if read-only, 0 if not. |
| TYPE | The type of block or loop device. | Shows ``disk`` for entire disk and ``part`` for partitions. |
| MOUNTPOINTS | Where the device is mounted. | Shows where the device is mounted. Empty if not mounted. |
## Reading information of a specific device
``lsblk`` can display information of a specific device when the device's absolute path is passed to it.
For example, ``lsblk`` command for displaying the information of the ``sda`` disk is:
```
lsblk /dev/sda
```
## Useful flags for ``lsblk``
Here is a table that show some of the useful flags that can be used with lsblk
| **Short Flag** | **Long Flag** | **Description** |
|:--------------------------:|:-----------------------|:---------------------------------------------|
| ``-a`` | ``--all`` | `lsblk` does not list empty devices by default. This option disables this restriction. |
| ``-b`` | ``--bytes`` | Print the SIZE column in bytes rather than in human-readable format. |
| ``-d`` | ``--nodeps`` | Don't print device holders or slaves. |
| ``-D`` | ``--discard`` | Print information about the discard (TRIM, UNMAP) capabilities for each device. |
| ``-E`` | ``--dedup column`` | Use column as a de-duplication key to de-duplicate output tree. If the key is not available for the device, or the device is a partition and parental whole-disk device provides the same key than the device is always printed.|
| ``-e`` | ``--exclude list`` | xclude the devices specified by a comma-separated list of major device numbers. Note that RAM disks (major=1) are excluded by default. The filter is applied to the top-level devices only.|
| ``-f`` | ``--fs`` | Displays information about filesystem. |
| ``-h`` | ``--help`` | Print a help text and exit.|
| ``-l`` | ``--include list`` | Displays all the information in List Format. |
| ``-J`` | ``--json`` | Displays all the information in JSON Format. |
| ``-l`` | ``--list`` | Displays all the information in List Format. |
| ``-m`` | ``--perms`` | Displays info about device owner, group and mode. |
| ``-M`` | ``--merge`` | Group parents of sub-trees to provide more readable output for RAIDs and Multi-path devices. The tree-like output is required.|
| ``-n`` | ``--noheadings`` | Do not print a header line. |
| ``-o`` | ``--output list`` | Specify which output columns to print. Use `--help` to get a list of all supported columns. |
| ``-O`` | ``--output-all`` | Displays all available columns. |
| ``-p`` | ``--paths`` | Displays absolute device paths. |
| ``-P`` | ``--pairs`` | Use key="value" output format. All potentially unsafe characters are hex-escaped (\x<code>) |
| ``-r`` | ``--raw`` | Use the raw output format. All potentially unsafe characters are hex-escaped (\x<code>) in NAME, KNAME, LABEL, PARTLABEL and MOUNTPOINT columns.|
| ``-S`` | ``--scsi`` | Output info about SCSI devices only. All partitions, slaves and holder devices are ignored.|
| ``-s`` | ``--inverse`` | Print dependencies in inverse order. |
| ``-t`` | ``--topology`` | Output info about block device topology. This option is equivalent to "-o NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE".|
| ``-T`` | ``--tree[=column]`` | Displays all the information in Tree Format. |
| ``-V`` | ``--version`` | Output version information and exit. |
| ``-w`` | ``--width`` |pecifies output width as a number of characters. The default is the number of the terminal columns, and if not executed ona terminal, then output width is not restricted at all by default.|
| ``-x`` | ``--sort [column]`` | Sort output lines by column. This option enables `--list` output format by default. It is possible to use the option `--tree` to force tree-like output and than the tree branches are sorted by the column.|
| ``-z`` | ``--zoned`` | Print the zone model for each device. |
| ``-`` | ``--sysroot directory``| Gather data for a Linux instance other than the instance from which the lsblk command is issued. The specified directory is the system root of the Linux instance to be inspected.|
## Exit Codes
Like every Unix / Linux Program, ``lslbk`` returns an exit code to the environment.
Here is a table of all the exit codes.
| Exit Code | Meaning |
|:---------:|:-----------------------------------------------------------|
| 0 | Exit with success. |
| 1 | Exit with failure. |
| 32 | Specified device(s) not found. |
| 64 | Some of the specified devices were found while some not. |

View File

@@ -0,0 +1,44 @@
# The `mount` command
The `mount` command is used to mount 'attach' a filesystem and make it accessible by an existing directory structure tree.
### Examples:
1. Displays version information:
```
mount -V
```
2. Attaching filesystem found on device and of type type at the directory dir:
```
mount -t type device dir
```
### Syntax Forms:
```
mount [-lhV]
```
```
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
```
```
mount [-fnrsvw] [-t fstype] [-o options] device dir
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-h`|<center>`--help`</center>|Dispaly a help message and exists|
|`-n`|<center>`--no-mtab`</center>|Mount without writing in /etc/mtab|
|`-a`|<center>`--all`</center>|Mount all filesystems (of the given types) mentioned in fstab|
|`-r`|`--read-only`|Mount the filesystem read-only|
|`-w`|`--rw`|Mount the filesystem as read/write.|
|`-M`|`--move`|Move a subtree to some other place.|
|`-B`|`--bind`|Remount a subtree somewhere else *(so that its contents are available in both places)*.|

View File

@@ -0,0 +1,50 @@
# The `fdisk` command
The `fdisk` command is used for controlling the disk partition table and making changes to it and this is a list of some of options provided by it : </b>
- Organize space for new drives.
- Modify old drives.
- Create space for new partitions.
- Move data to new partitions.
### Examples:
1. To view basic details about all available partitions on the system:
```
fdisk -l
```
2. To show the size of the partition:
```
fdisk -s /dev/sda
```
3. To view the help message and all options of the command:
```
fdisk -h
```
### Syntax:
```
fdisk [options] device
```
### Some of the command options:
On writing the following command
```
fdisk /dev/sdb
```
the following window appears :
![Options](https://media.geeksforgeeks.org/wp-content/uploads/20190219152451/Screenshot-711.png)
and then you type m which will show you all options you need such as creating new partition and deleting a partition as in the following picture :
![Options](https://media.geeksforgeeks.org/wp-content/uploads/20190219153114/Screenshot-741.png)

View File

@@ -0,0 +1,75 @@
# The `parted` command
The `parted` command is used to manage hard disk partitions on Linux. It can be used to add, delete, shrink and extend disk partitions along with the file systems located on them.
You will need root access to the system to run `parted` commands.
**NOTE:** Parted writes the changes immediately to your disk, be careful when you are modifying the disk partitions.
### Examples:
1. Displays partition layout of all block devices:
```
sudo parted -l
```
2. Display partition table of a specific `disk`
```
sudo parted disk print
```
Examples of `disk` are /dev/sda, /dev/sdb
3. Create a new disk label of `label-type` for a specific disk
```
sudo parted mklabel disk label-type
```
`label-type` can take values "aix", "amiga", "bsd", "dvh", "gpt", "loop", "mac", "msdos", "pc98", or "sun" <br />
4. Create a new partition in a specific `disk` of type `part-time`, file system is `fs-type` and of size `size` Mb.
```
sudo parted disk mkpart part-time fs-type 1 size
```
`part-time` can take values "primary", "logical", "extended".<br />
`fs-type` is optional. It can take values "btrfs", "ext2", "ext3", "ext4", "fat16", "fat32", "hfs", "hfs+", "linux-swap", "ntfs", "reiserfs", "udf", or "xfs"<br />
`size` has to less than the total size of the specified disk. To create a partition of size 50Mb, <size> will take the value of 50
5. `parted` can also be run in an interactive format. Operations to manage the disk partitions can be performed by entering appropriate commands in the interactive session.
`help` command in the interactive session shows a list of all possible disk management operations which can be performed.
```
$ sudo parted
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print # prints the partition table of the default selected disk - /dev/sda
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 53.7GB 53.7GB primary ext4 boot
(parted) select /dev/sdb # change the current disk on which operations have to be performed
Using /dev/sdb
(parted) quit # exit the interactive session
```
### Syntax Forms:
```
parted [options] [device [command [options...]...]]
```
### Options:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|-h|--help|displays a help message listing all possible `commands [options]`|
|-l|--list|lists partition layout on all block devices|
|-m|--machine|displays machine parseable output|
|-v|--version|displays the version|
|-a|--align|set alignment type for newly created partition. It can take the following values:<br /> `none`: Use the minimum alignment allowed by the disk type<br /> `cylinder`: Align partitions to cylinders<br /> `minimal`: Use minimum alignment as given by the disk topology information<br /> `optimal`: Use optimum alignment as given by the disk topology information|

View File

@@ -0,0 +1,101 @@
# The `ifconfig` command
`ifconfig` is used to configure the kernel-resident network interfaces. It is used at boot time to set up interfaces as necessary. After that, it is usually only needed when debugging or when system tuning is needed.
If no arguments are given, `ifconfig` displays the status of the currently active interfaces. If a single interface argument is given, it displays the status of the given interface only; if a single -a argument is given, it displays the status of all interfaces, even those that are down. Otherwise, it configures an interface.
### Syntax:
```
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options
```
### Examples:
1. To display the currently active interfaces:
```
ifconfig
```
2. To show all interfaces which are currently active, even if down:
```
ifconfig -a
```
3. To show all the error conditions:
```
ifconfig -v
```
4. To show a short list:
```
ifconfig -s
```
5. To display details of the specific network interface (say `eth0`):
```
ifconfig eth0
```
6. To activate the driver for a interface (say `eth0`):
```
ifconfig eth0 up
```
7. To deactivate the driver for a interface (say `eth0`):
```
ifconfig eth0 down
```
8. To assign a specific IP address to a network interface (say `eth0`):
```
ifconfig eth0 10.10.1.23
```
9. To change MAC(Media Access Control) address of a network interface (say `eth0`):
```
ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
```
10. To define a netmask for a network interface (say `eth0`):
```
ifconfig eth0 netmask 255.255.255.224
```
11. To enable promiscous mode on a network interface (say `eth0`):
```
ifconfig eth0 promisc
```
In normal mode, when a packet is received by a network card, it verifies that it belongs to itself. If not, it drops the packet normally. However, in the promiscuous mode, it accepts all the packets that flow through the network card.
12. To disable promiscous mode on a network interface (say `eth0`):
```
ifconfig eth0 -promisc
```
13. To set the maximum transmission unit to a network interface (say `eth0`):
```
ifconfig eth0 mtu 1000
```
The MTU allows you to set the limit size of packets that are transmitted on an interface. The MTU is able to handle a maximum number of octets to an interface in one single transaction.
14. To add additional IP addresses to a network interface, you can configure a network alias to the network interface:
```
ifconfig eth0:0 10.10.1.24
```
Please note that the alias network address is in the same subnet mask of the network interface. For example, if your eth0 network ip address is `10.10.1.23`, then the alias ip address can be `10.10.1.24`. Example of an invalid IP address is `10.10.2.24` since the interface subnet mask is `255.255.255.224`
15. To remove a network alias:
```
ifconfig eth0:0 down
```
Remember that for every scope (i.e. same net with address/netmask combination) all aiases are deleted, if you delete the first alias.
### Help Command
Run below command to view the complete guide to `ifconfig` command.
```
man ifconfig
```

View File

@@ -0,0 +1,51 @@
# The `wget` command
The `wget` command is used for downloading files from the Internet. It supports downloading files using HTTP, HTTPS and FTP protocols. It allows you to download several files at once, download in the background, resume downloads, limit the bandwidth, mirror a website, and much more.
## Syntax
The `wget` syntax requires you to define the downloading options and the URL the to be downloaded file is coming from.
```bash
$ wget [options] [URL]
```
### Examples
In this example we will download the Ubuntu 20.04 desktop iso file from different sources. Go over to your terminal or open a new one and type in the below `wget`. This will stat the download. The download may take a few minutes to complete.
1. Starting a regular download
```bash
wget https://releases.ubuntu.com/20.04/ubuntu-20.04.3-desktop-amd64.iso
```
2. You can resume a download using the `-c` option
```bash
wget -c https://mirrors.piconets.webwerks.in/ubuntu-mirror/ubuntu-releases/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
```
3. To download in the background, use the `-b` option
```bash
wget -b https://mirrors.piconets.webwerks.in/ubuntu-mirror/ubuntu-releases/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
```
## More options
On top of downloading, `wget` provides many more features, such as downloading multiple files, dowloading in the background, limiting download bandwith and resuming stopped downloads. View all `wget` options in its man page.
```bash
man wget
```
### Additional Flags and their Functionalities
| **Short Flag** | **Description** |
| -------------- | ----------------------------------------------------------------------------- |
| `-v` | prints version of the wget available on your system |
| `-h` | print help message displaying all the possible options |
| `-b` | This option is used to send a process to the background as soon as it starts. |
| `-t` | This option is used to set number of retries to a specified number of times |
| `-c` | This option is used to resume a partially downloaded file |

View File

@@ -0,0 +1,51 @@
# The `curl` command
In linux, `curl` is a tool to transfer data from or to a server, using one of the supported protocols(DICT, FILE ,FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP).
## Example :
```bash
$ curl example.com
```
The command will print the source code of the example.com homepage in the terminal window.
## The syntax of the `curl` command is :
```bash
$ curl [options...] <url>
```
## Options :
Options start with one or two dashes. Many of the options require an additional value next to them.
The short "single-dash" form of the options, `-d` for example, may be used with or without a space between it and its value, although a space is a recommended separator. The long "double-dash" form, `-d`, `--data` for example, requires a space between it and its value.
Short version options that don't need any additional values can be used immediately next to each other, like for example you can specify all the options `-O`, `-L` and `-v` at once as `-OLv`.
In general, all boolean options are enabled with `--option` and yet again disabled with `--no-option`. That is, you use the exact same option name but prefix it with `no-`. However, in this list we mostly only list and show the `--option` version of them. (This concept with `--no` options was added in 7.19.0. Previously most options were toggled on/off through repeated use of the same command line option.)
## Installation:
The curl command comes with most of the Linux distributions. But, if the system does not carry the curl by default. You need to install it manually. To install the curl, execute the following commands:
Update the system by executing the following commands:
```bash
$ sudo apt update
$ sudo apt upgrade
```
Now, install the curl utility by executing the below command:
```bash
$ sudo apt install curl
```
Verify the installation by executing the below command:
```bash
$ curl -version
```
The above command will display the installed version of the curl command.

View File

@@ -0,0 +1,60 @@
# The `netstat` command
The term `netstat` stands for Network Statistics. In laymans terms, netstat command displays the current network connections, networking protocol statistics, and a variety of other interfaces.
Check if you have `netstat` on your PC:
```
netstat v
```
If you don't have `netstat` installed on your PC, you can install it with the following command:
```
sudo apt install net-tools
```
### You can use `netstat` command for some use cases given below:
- `Netstat` command with `-nr` flag shows the routing table detail on the terminal.
Example:
```
netstat -nr
```
- `Netstat` command with `-i` flag shows statistics for the currently configured network interfaces.
This command will display the first 10 lines of file `foo.txt` .
Example:
```
netstat -i
```
- `Netstat` command with `-tunlp` will gives a list of networks, their current states, and their associated ports.
Example:
```
netstat -tunlp
```
- You can get the list of all TCP port connection by using `-at` with `netstat`.
```
netstat -at
```
- You can get the list of all UDP port connection by using `-au` with `netstat`.
```
netstat -au
```
- You can get the list of all active connection by using `-l` with `netstat`.
```
netstat -l
```

View File

@@ -0,0 +1,59 @@
# The `ping` command
The `ping` (Packet Internet Groper) command is a network utility used to check network connectivity between a host and a server or another host. It sends ICMP (Internet Control Message Protocol) echo requests to a specified IP address or URL and measures the time it takes to receive a response. This time delay is referred to as "latency." Ping is a fundamental tool for network troubleshooting and monitoring.
## Understanding Latency
Latency, in the context of networking, is the time delay between sending a packet and receiving a response.
When you use the `ping` command, it measures the latency by sending a series of packets to the target host and calculating the time it takes for each packet to complete the round trip. The latency is typically measured in milliseconds (ms). Understanding latency is essential because:
- **Network Performance**: Lower latency means faster data transmission and more responsive network connections, which is critical for real-time applications.
- **Troubleshooting**: High latency can indicate network congestion, packet loss, or connectivity issues that need attention.
- **Quality of Service (QoS)**: Service providers and network administrators use latency metrics to ensure that network services meet quality standards.
The basic ping syntax includes ping followed by a hostname, a name of a website, or the exact IP address.
```
ping [option] [hostname] or [IP address]
```
### Examples:
1. To get ping version installed on your system.
```
sudo ping -v
```
2. To check whether a remote host is up, in this case, google.com, type in your terminal:
```
ping google.com
```
3. Controlling the number of packets to send:
Earlier we did not define the number of packets to send to the server/host by using -c option we can do so.
```
ping -c 5 google.com
```
4. Controlling the size of the packet:
Earlier a default sized packets were sent to a host but we can send light and heavy packet by using
-s option.
```
ping -s 40 -c 5 google.com
```
5. Changing the time interval between ping packets:
By default ping wait for 1 sec to send next packet we can change this time by using -i option.
```
ping -i 2 google.com
```

View File

@@ -0,0 +1,86 @@
# The `ssh` command
The `ssh` command in Linux stands for "Secure Shell". It is a protocol used to securely connect to a remote server/system. ssh is more secure in the sense that it transfers the data in encrypted form between the host and the client. ssh runs at TCP/IP port 22.
### Examples:
1. Use a Different Port Number for SSH Connection:
```
ssh test.server.com -p 3322
```
2. -i ssh to remote server using a private key?
```
ssh -i private.key user_name@host
```
3. -l ssh specifying a different username
```
ssh -l alternative-username sample.ssh.com
```
### Syntax:
```
ssh user_name@host(IP/Domain_Name)
```
```
ssh -i private.key user_name@host
```
```
ssh sample.ssh.com ls /tmp/doc
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-1`|Forces ssh to use protocol SSH-1 only.|
|`-2`|Forces ssh to use protocol SSH-2 only.|
|`-4`|Allows IPv4 addresses only.|
|`-A`|Authentication agent connection forwarding is enabled..|
|`-a`|Authentication agent connection forwarding is disabled.|
|`-B bind_interface`|Bind to the address of bind_interface before attempting to connect to the destination host. This is only useful on systems with more than one address.|
|`-b bind_address`|Use bind_address on the local machine as the source address of the connection. Only useful on systems with more than one address.
|`-C`|Compresses all data (including stdin, stdout, stderr, and data for forwarded X11 and TCP connections) for a faster transfer of data.|
|`-c cipher_spec`|Selects the cipher specification for encrypting the session.|
|`-D [bind_address:]port`|Dynamic application-level port forwarding. This allocates a socket to listen to port on the local side. When a connection is made to this port, the connection is forwarded over the secure channel, and the application protocol is then used to determine where to connect to from the remote machine.|
|`-E log_file`|Append debug logs instead of standard error.|
|`-e escape_char`|Sets the escape character for sessions with a pty (default: ~). The escape character is only recognized at the beginning of a line. The escape character followed by a dot (.) closes the connection; followed by control-Z suspends the connection; and followed by itself sends the escape character once. Setting the character to “none” disables any escapes and makes the session fully transparent.|
|`-F configfile`|Specifies a per-user configuration file. The default for the per-user configuration file is ~/.ssh/config.|
|`-f`|Requests ssh to go to background just before command execution.|
|`-G`|Causes ssh to print its configuration after evaluating Host and Match blocks and exit.|
|`-g`|Allows remote hosts to connect to local forwarded ports.|
|`-I pkcs11`|Specify the PKCS#11 shared library ssh should use to communicate with a PKCS#11 token providing keys.|
|`-i identity_file`|A file from which the identity key (private key) for public key authentication is read.|
|`-J [user@]host[:port]`|Connect to the target host by first making a ssh connection to the pjump host[(/iam/jump-host) and then establishing a TCP forwarding to the ultimate destination from there.|
|`-K`|Enables GSSAPI-based authentication and forwarding (delegation) of GSSAPI credentials to the server.|
|`-k`|Disables forwarding (delegation) of GSSAPI credentials to the server.|
|`-L [bind_address:]port:host:hostport`, `-L [bind_address:]port:remote_socket`, `-L local_socket:host:hostport`, `-L local_socket:remote_socket`|Specifies that connections to the given TCP port or Unix socket on the local (client) host are to be forwarded to the given host and port, or Unix socket, on the remote side. This works by allocating a socket to listen to either a TCP port on the local side, optionally bound to the specified bind_address, or to a Unix socket. Whenever a connection is made to the local port or socket, the connection is forwarded over the secure channel, and a connection is made to either host port hostport, or the Unix socket remote_socket, from the remote machine.|
|`-l login_name`|Specifies the user to log in as on the remote machine.|
|`-M`|Places the ssh client into “master” mode for connection sharing. Multiple -M options places ssh into “master” mode but with confirmation required using ssh-askpass before each operation that changes the multiplexing state (e.g. opening a new session).|
|`-m mac_spec`|A comma-separated list of MAC (message authentication code) algorithms, specified in order of preference.|
|`-N`|Do not execute a remote command. This is useful for just forwarding ports.|
|`-n`|Prevents reading from stdin.|
|`-O ctl_cmd`|Control an active connection multiplexing master process. When the -O option is specified, the ctl_cmd argument is interpreted and passed to the master process. Valid commands are: “check” (check that the master process is running), “forward” (request forwardings without command execution), “cancel” (cancel forwardings), “exit” (request the master to exit), and “stop” (request the master to stop accepting further multiplexing requests).|
|`-o`|Can be used to give options in the format used in the configuration file. This is useful for specifying options for which there is no separate command-line flag.|
|`-p`, `--port PORT`|Port to connect to on the remote host.|
|`-Q query_option`|Queries ssh for the algorithms supported for the specified version 2. The available features are: cipher (supported symmetric ciphers), cipher-auth (supported symmetric ciphers that support authenticated encryption), help (supported query terms for use with the -Q flag), mac (supported message integrity codes), kex (key exchange algorithms), kex-gss (GSSAPI key exchange algorithms), key (keytypes), key-cert (certificate key types), key-plain (non-certificate key types), key-sig (all keytypes and signature algorithms), protocol-version (supported SSH protocol versions), and sig (supported signature algorithms). Alternatively, any keyword from ssh_config(5) or sshd_config(5) thattakes an algorithm list may be used as an alias for the corresponding query_option.|
|`-q`| Qiet mode. Causes most warning and diagnostic messages to be suppressed.|
|`-R [bind_address:]port:host:hostport, -R [bind_address:]port:local_socket, -R remote_socket:host:hostport, -R remote_socket:local_socket, -R [bind_address:]port`|Specifies that connections to the given TCP port or Unix socket on the remote (server) host are to be forwarded to the local side.|
|`-S ctl_path`|Specifies the location of a control socket for connection sharing, or the string “none” to disable connection sharing.|
|`-s`|May be used to request invocation of a subsystem on the remote system. Subsystems facilitate the use of SSH as a secure transport for other applications (e.g. sftp(1)). The subsystem is specified as the remote command.|
|`-T`| Disable pseudo-terminal allocation.|
|`-t`|Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
|`-V`|Display the version number.|
|`-v`|Verbose mode. It echoes everything it is doing while establishing a connection. It is very useful in the debugging of connection failures.|
|`-W host:port`|Requests that standard input and output on the client be forwarded to host on port over the secure channel. Implies -N, -T, ExitOnForwardFailure and ClearAllForwardings, though these can be overridden in the configuration file or using -o command line options.|
|`-w local_tun[remote_tun]`|Requests tunnel device forwarding with the specified tun devices between the client (local_tun) and the server (remote_tun). The devices may be specified by numerical ID or the keyword “any”, which uses the next available tunnel device. If remote_tun is not specified, it defaults to “any”. If the Tunnel directive is unset, it will be set to the default tunnel mode, which is “point-to-point”. If a different Tunnel forwarding mode it desired, then it should be specified before -w.|
|`-X`|Enables X11 forwarding (GUI Forwarding).|
|`-x`|Disables X11 forwarding (GUI Forwarding).|
|`-Y`|Enables trusted X11 Forwarding.|
|`-y`|Send log information using the syslog system module. By default this information is sent to stderr.|

View File

@@ -0,0 +1,46 @@
# The `nslookup` command
The `nslookup` command is a network administration command-line tool for querying the Domain Name System (DNS) to obtain domain name or IP address mapping or any other specific DNS record.
## Syntax
```
nslookup [options] [host]
```
## Options
Some popular option flags include:
```
-domain=[domain-name] Change the default DNS name.
-debug Show debugging information.
-port=[port-number] Specify the port for queries. The default port number is 53.
-timeout=[seconds] Specify the time allowed for the server to respond.
-type=a View information about the DNS A address records.
-type=any View all available records.
-type=hinfo View hardware-related information about the host.
-type=mx View Mail Exchange server information.
-type=ns View Name Server records.
-type=ptr View Pointer records. Used in reverse DNS lookups.
-type=soa View Start of Authority records.
```
## Few Examples:
1. Query DNS Server
```
nslookup www.google.com
```
2. Specify a port to query
```
nslookup -port=53 www.google.com
```
3. Get the MX Record
```
nslookup -type=mx google.com
```
Here I showed you how to use the nslookup command in Linux. Although there are other DNS lookup tools, such as dig, nslookup could be a better choice as it is a powerful tool present in almost every system.
For more details: [Nslookup on Wikipedia](https://en.wikipedia.org/wiki/Nslookup)

View File

@@ -0,0 +1,54 @@
# The `ps` command
The `ps` command is used to identify programs and processes that are running on the system and the resources they are using.
Its frequently [pipelined](<https://en.wikipedia.org/wiki/Pipeline_(Unix)>) with other commands like `grep` to search for a program/process or `less`
so that the user can analyze the output one page at a time.
Let's say you have a program like openshot which is notorious for hogging system resources when exporting a video, and you want to close it, but the GUI has become unresponsive.
### Example
1. You want to find the PID of openshot and kill it.
```
ps aux | grep openshot
kill - <openshot PID>
```
2. To Show all the running processes:
```
ps -A
```
### Syntax
`ps [options]`
When run without any options, it's useless and will print: `CMD` - the executable processes/(program) running, their `PID` - process ID, `TTY` - terminal type and `Time` - How long the process has utilized the CPU or thread.
### Common Option
If you are going to remember only one thing from this page let it be these three letter `aux`:
`a` - which displays all processes running, including those being run by other users.
`u` - which shows the effective user of a process, i.e. the person whose file access permissions are used by the process.
`x` - which shows processes that do not have a `TTY` associated with them.
### Additional Options:
|**Option** |**Description** |
|:---|:---|
|`a`|Shows list all processes with a terminal (tty)|
|`-A`|Lists all processes. Identical to `-e`|
|`-a`|Shows all processes except both session leaders and processes not associated with a terminal|
|`-d`|Select all processes except session leaders|
|`--deselect`|Shows all processes except those that fulfill the specified conditions. Identical to `-N`|
|`-e`|Lists all processes. Identical to `-A`|
|`-N`|Shows all processes except those that fulfill the specified conditions. Identical to `-deselect`|
|`T`|Select all processes associated with this terminal. Identical to the `-t` option without any argument|
|`r`|Restrict the selection to only running processes|
|`--help simple`|Shows all the basic options|
|`--help all`|Shows every available options|
Another useful command which give a realtime snapshot of the processes and the resources they are using about every ten seconds is `top`.

View File

@@ -0,0 +1,89 @@
# The `kill` command
`kill` command in Linux (located in /bin/kill), is a built-in command which is used to terminate processes manually. The `kill` command sends a signal to a process which terminates the process. If the user doesnt specify any signal which is to be sent along with kill command then default _TERM_ signal is sent that terminates the process.
Signals can be specified in three ways:
- **By number (e.g. -5)**
- **With SIG prefix (e.g. -SIGkill)**
- **Without SIG prefix (e.g. -kill)**
### Syntax
```
kill [OPTIONS] [PID]...
```
### Examples:
1. To display all the available signals you can use below command option:
```
kill -l
```
2. To show how to use a _PID_ with the _kill_ command.
```
$kill pid
```
3. To show how to send signal to processes.
```
kill {-signal | -s signal} pid
```
4. Specify Signal:
- using numbers as signals
```
kill -9 pid
```
- using SIG prefix in signals
```
kill -SIGHUP pid
```
- without SIG prefix in signals
```
kill -HUP pid
```
### Arguments:
The list of processes to be signaled can be a mixture of names and PIDs.
pid Each pid can be expressed in one of the following ways:
n where n is larger than 0. The process with PID n is signaled.
0 All processes in the current process group are signaled.
-1 All processes with a PID larger than 1 are signaled.
-n where n is larger than 1. All processes in process group n are signaled.
When an argument of the form '-n' is given, and it is meant to denote a
process group, either a signal must be specified first, or the argument must
be preceded by a '--' option, otherwise it will be taken as the signal to
send.
name All processes invoked using this name will be signaled.
### Options:
-s, --signal signal
The signal to send. It may be given as a name or a number.
-l, --list [number]
Print a list of signal names, or convert the given signal number to a name. The
signals can be found in /usr/include/linux/signal.h.
-L, --table
Similar to -l, but it will print signal names and their corresponding numbers.
-a, --all
Do not restrict the command-name-to-PID conversion to processes with the same UID
as the present process.
-p, --pid
Only print the process ID (PID) of the named processes, do not send any signals.
--verbose
Print PID(s) that will be signaled with kill along with the signal.

View File

@@ -0,0 +1,129 @@
# The `killall` command
`killall` sends a signal to **all** processes running any of the specified commands. If no signal name is specified, `SIGTERM` is sent. In general, `killall` command kills all processes by knowing the name of the process.
Signals can be specified either by name (e.g. `-HUP` or `-SIGHUP`) or by number (e.g. `-1`) or by option `-s`.
If the command name is not a regular expression (option `-r`) and contains a slash (`/`), processes executing that particular file will be selected for killing, independent of their name.
`killall` returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the `-u` and `-Z` search criteria. `killall` returns non-zero otherwise.
A `killall` process never kills itself (but may kill other `killall` processes).
### Examples:
1. Kill all processes matching the name `conky` with `SIGTERM`:
```sh
killall conky
# OR
killall -SIGTERM conky
# OR
kilall -15 conky
```
I was able to kill Wine ( which are Windows exe files running on Linux ) applications this way too.
```sh
killall TQ.exe
```
2. List all the supported signals:
```sh
$ killall -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
```
As for the numbers.
```sh
$ for s in $(killall -l); do echo -n "$s " && kill -l $s; done
HUP 1
INT 2
QUIT 3
ILL 4
TRAP 5
ABRT 6
BUS 7
FPE 8
KILL 9
USR1 10
SEGV 11
USR2 12
PIPE 13
ALRM 14
TERM 15
STKFLT 16
CHLD 17
CONT 18
STOP 19
TSTP 20
TTIN 21
TTOU 22
URG 23
XCPU 24
XFSZ 25
VTALRM 26
PROF 27
WINCH 28
POLL 29
PWR 30
SYS 31
```
3. Ask before killing, to prevent unwanted kills:
```sh
$ killall -i conky
Kill conky(1685) ? (y/N)
```
4. Kill all processes and wait until the processes die.
```sh
killall -w conky
```
5. Kill based on time:
```sh
# Kill all firefox younger than 2 minutes
killall -y 2m firefox
# Kill all firefox older than 2 hours
killall -o 2h firefox
```
### Syntax:
```sh
killall [OPTION]... [--] NAME...
killall -l, --list
killall -V, --version
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-e`|`--exact`|require an exact match for very long names|
|`-I`|`--ignore-case`|case insensitive process name match|
|`-g`|`--process-group`|kill process group instead of process|
|`-y`|`--younger-than`|kill processes younger than TIME|
|`-o`|`--older-than`|kill processes older than TIME|
|`-i`|`--interactive`|ask for confirmation before killing|
|`-l`|`--list`|list all known signal names|
|`-q`|`--quiet`|don't print complaints|
|`-r`|`--regexp`|interpret NAME as an extended regular expression|
|`-s`|`--signal SIGNAL`|send this signal instead of SIGTERM|
|`-u`|`--user USER`|kill only process(es) running as USER|
|`-v`|`--verbose`|report if the signal was successfully sent|
|`-w`|`--wait`|wait for processes to die|
|`-n`|`--ns PID`|match processes that belong to the same namespaces as PID
|`-Z`|`--context`|REGEXP kill only process(es) having context (must precede other arguments)
### Related commands
[kill](/ebook/en/content/034-the-kill-command.md), `pidof`

View File

@@ -0,0 +1,18 @@
# The `nohup` command
When a shell exits (maybe while logging out of an SSH session), the HUP ('hang up') signal is send to all of its child processes, causing them to terminate. If you require a long-running process to continue after exiting shell, you'll need the `nohup` command. Prefixing any command with `nohup` causes the command to become _immune_ to HUP signals. Additionally, STDIN is being ignored and all output gets redirected to local file `./nohup.out`.
### Examples:
1. Applying nohup to a long-running debian upgrade:
```
nohup apt-get -y upgrade
```
### Syntax:
```
nohup COMMAND [ARG]...
nohup OPTION
```

View File

@@ -0,0 +1,31 @@
# The `uname` command
The `uname` command lets you print out system information and defaults to outputting the kernel name.
## Syntax:
```bash
$ uname [OPTION]
```
## Examples
1. Print out all system information.
```bash
$ uname -a
```
2. Print out the kernel version.
```bash
$ uname -v
```
## Options
|**Short Flag**|**Long Flag**|**Description**|
|:-|:-|:-|
|`-a`|`--all`|Print all information, except omit processor and hardware platform if unknown.|
|`-s`|`--kernel-name`|Print the kernel name.|
|`-n`|`--nodename`|Print the network node hostname.|
|`-r`|`--kernel-release`|Print the kernel release.|
|`-v`|`--kernel-version`|Print the kernel version.|
|`-m`|`--machine`|Print the machine hardware name.|
|`-p`|`--processor`|Print the processor type (non-portable).|
|`-i`|`--hardware-platform`|Print the hardware platform (non-portable).|
|`-o`|`--operating-system`|Print the operating system.|

View File

@@ -0,0 +1,39 @@
# The `man` command
The `man` command is used to display the manual of any command that we can run on the terminal.
It provides information like: DESCRIPTION, OPTIONS, AUTHORS and more.
### Examples:
1. Man page for printf:
```
man printf
```
2. Man page section 2 for intro:
```
man 2 intro
```
3. Viewing the Manual for a Local File (using the -l flag):
```
man -l [LOCAL-FILE]
```
### Syntax:
```
man [SECTION-NUM] [COMMAND NAME]
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-f`|<center>-</center>|Return the sections of an command|
|`-a`|<center>-</center>|Display all the manual pages of an command|
|`-k`|<center>-</center>|Searches the given command with RegEx in all man pages|
|`-w`|<center>-</center>|Returns the location of a given command man page|
|`-I`|<center>-</center>|Searches the command manual case sensitive|

View File

@@ -0,0 +1,41 @@
# The `env` command
The `env` command in Linux/Unix is used to either print a list of the current environment variables or to run a program in a custom environment without changing the current one.
## Syntax
```bash
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
```
## Usage
1. Print out the set of current environment variables
```bash
env
```
2. Run a command with an empty environment
```bash
env -i command_name
```
3. Remove variable from the environment
```bash
env -u variable_name
```
4. End each output with NULL
```bash
env -0
```
## Full List of Options
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-i`|`--ignore-environment`|Start with an empty environment|
|`-0`|`--null`|End each output line with NUL, not newline|
|`-u`|`--unset=NAME `|Remove variable from the environment|
|`-C`|`--chdir=DIR`|Change working directory to DIR|
|`-S`|`--split-string=S`|Process and split S into separate arguments. It's used to pass multiple arguments on shebang lines|
|`-v`|`--debug`|Print verbose information for each processing step|
|-|`--help`|Print a help message|
|-|`--version`|Print the version information|

View File

@@ -0,0 +1,26 @@
# The `hostname` command
`hostname` is used to display the system's DNS name, and to display or set its hostname or NIS domain name.
### Syntax:
```
hostname [-a|--alias] [-d|--domain] [-f|--fqdn|--long] [-A|--all-fqdns] [-i|--ip-address] [-I|--all-ip-addresses] [-s|--short] [-y|--yp|--nis]
```
### Examples:
1. ``` hostname -a, hostname --alias ```
Display the alias name of the host (if used). This option is deprecated and should not be used anymore.
2. ```hostname -s, hostname --short```
Display the short host name. This is the host name cut at the first dot.
3. ```hostname -V, hostname --version```
Print version information on standard output and exit successfully.
### Help Command
Run below command to view the complete guide to `hostname` command.
```
man hostname
```

View File

@@ -0,0 +1,39 @@
# The `su` command
In linux, `su` allows you to run commands with a substitute user and group ID.
When called without arguments, `su` defaults to running an interactive shell as root.
## Example :
```bash
$ su
```
In case that you wanted to switch to a user called `devdojo`, you could do that by running the following command:
```
$ su devdojo
```
## The syntax of the `su` command is :
```bash
$ su [options] [-] [<user>[<argument>...]]
```
## Options :
```bash
-m, -p --> do not reset environment variables
-w --> do not reset specified variables
-g --> specify the primary group
-G --> specify a supplemental group
-l --> make the shell a login shell
-f --> pass -f to the shell (for csh or tcsh)
-s --> run <shell> if /etc/shell allows it
-p --> create a new pseudo terminal
-h --> display this help
-v --> display version
```

View File

@@ -0,0 +1,52 @@
# The `sudo` command
The `sudo` ("substitute user do" or "super user do") command allows a user with proper permissions to execute a command as another user, such as the superuser.
This is the equivalent of "run as administrator" option in Windows. The `sudo` command allows you to elevate your current user account to have root privileges. Also, the root privilege in `sudo` is only valid for a temporary amount of time. Once that time expires, you have to enter your password again to regain root privilege.
> WARNING: Be very careful when using the `sudo` command. You can cause irreversible and catastrophic changes while acting as root!
### Syntax:
```
sudo [-OPTION] command
```
### Additional Flags and their Functionalities:
|**Flag** |**Description** |
|:---|:---|
|`-V`|The -V (version) option causes sudo to print the version number and exit. If the invoking user is already root, the -V option prints out a list of the defaults sudo was compiled with and the machine's local network addresses|
|`-l`|The -l (list) option prints out the commands allowed (and forbidden) the user on the current host.|
|`-L`|The -L (list defaults) option lists out the parameters set in a Defaults line with a short description for each. This option is useful in conjunction with grep.|
|`-h`|The -h (help) option causes sudo to print a usage message and exit.|
|`-v`|If given the `-v` (validate) option, `sudo` updates the user's timestamp, prompting for the user's password if necessary. This extends the sudo timeout for another 5 minutes (or whatever the timeout is set to in sudoers) but does not run a command.|
|`-K`|The -K (sure kill) option to sudo removes the user's timestamp entirely. Likewise, this option does not require a password.|
|`-u`|The -u (user) option causes sudo to run the specified command as a user other than root. To specify a uid instead of a username, use #uid.|
|`-s`|The -s (shell) option runs the shell specified by the SHELL environment variable if it's set or the shell as specified in the file passwd.|
|`--`|The -- flag indicates that sudo should stop processing command line arguments. It is most useful in conjunction with the -s flag.|
## Examples
This command switches your command prompt to the BASH shell as a root user:
```
sudo bash
```
Your command line should change to:
```
root@hostname:/home/[username]
```
Adding a string of text to a file is often used to add the name of a software repository to the sources file, without opening the file for editing. Use the following syntax with echo, sudo and tee command:
```
echo string-of-text | sudo tee -a [path_to_file]
```
Example:
````
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
````

View File

@@ -0,0 +1,80 @@
# The `apt` command
`apt` (Advantage package system) command is used for interacting with `dpkg` (packaging system used by debian). There is already the `dpkg` command to manage `.deb` packages. But `apt` is a more user-friendly and efficient way.
In simple terms `apt` is a command used for installing, deleting and performing other operations on debian based Linux.
You will be using the `apt` command mostly with `sudo` privileges.
### Installing packages:
`install` followed by `package_name` is used with `apt` to install a new package.
##### Syntax:
```
sudo apt install package_name
```
##### Example:
```
sudo apt install g++
```
This command will install g++ on your system.
### Removing packages:
`remove` followed by `package_name` is used with `apt` to remove a specific package.
##### Syntax:
```
sudo apt remove package_name
```
##### Example:
```
sudo apt remove g++
```
This command will remove g++ from your system.
### Searching for a package:
`search` followed by the `package_name` used with apt to search a package across all repositories.
##### Syntax:
```
apt search package_name
```
note: sudo not required
##### Example:
```
apt search g++
```
### Removing unused packages:
Whenever a new package that depends on other packages is installed on the system, the package dependencies will be installed too. When the package is removed, the dependencies will stay on the system. This leftover packages are no longer used by anything else and can be removed.
##### Syntax:
```
sudo apt autoremove
```
This command will remove all unused from your system.
### Updating package index:
`apt` package index is nothing but a database that stores records of available packages that are enabled on your system.
##### Syntax:
```
sudo apt update
```
This command will update the package index on your system.
### Upgrading packages:
If you want to install the latest updates for your installed packages you may want to run this command.
##### Syntax:
```
sudo apt upgrade
```
The command doesn't upgrade any packages that require removal of installed packages.
If you want to upgrade a single package, pass the package name:
##### Syntax:
```
sudo apt upgrade package_name
```
This command will upgrade your packages to the latest version.

View File

@@ -0,0 +1,61 @@
# The `yum` command
The `yum`command is the primary package management tool for installing, updating, removing, and managing software packages in Red Hat Enterprise Linux. It is an acronym for _`Yellow Dog Updater, Modified`_.
`yum` performs dependency resolution when installing, updating, and removing software packages. It can manage packages from installed repositories in the system or from .rpm packages.
### Syntax:
```[linux]
yum -option command
```
### Examples:
1. To see an overview of what happened in past transactions:
```[linux]
yum history
```
2. To undo a previous transaction:
```[linux]
yum history undo <id>
```
3. To install firefox package with 'yes' as a response to all confirmations
```[linux]
yum -y install firefox
```
4. To update the mysql package it to the latest stable version
```[linux]
yum update mysql
```
### Commonly used commands along with yum:
| **Command** | **Description** |
| :------------- | :------------------------------------------------ |
| `install` | Installs the specified packages |
| `remove` | Removes the specified packages |
| `search` | Searches package metadata for keywords |
| `info` | Lists the description |
| `update` | Updates each package to the latest version |
| `repolist` | Lists repositories |
| `history` | Displays what has happened in past transactions |
| `groupinstall` | To install a particular package group |
| `clean` | To clean all cached files from enabled repository |
### Additional Flags and their Functionalities:
| **Short Flag** | **Long Flag** | **Description** |
| :---------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-C` | `--cacheonly` | Runs entirely from system cache, doesnt update the cache and use it even in case it is expired. |
| <center>-<center> | `--security` | Includes packages that provide a fix for a security issue. Applicable for the upgrade command. |
| `-y` | `--assumeyes` | Automatically answer yes for all questions. |
| <center>-<center> | `--skip-broken` | Resolves depsolve problems by removing packages that are causing problems from the transaction. It is an alias for the strict configuration option with value False. |
| `-v` | `--verbose` | Verbose operation, show debug messages. |

View File

@@ -0,0 +1,39 @@
# The `shutdown` command
The `shutdown` command lets you bring your system down in a secure way. When `shutdown` is executed the system will notify all logged-in users and disallow further logins.
You have the option to shut down your system immediately or after a specific time.
Only users with root (or sudo) privileges can use the `shutdown` command.
### Examples:
1. Shut down your system immediately:
```
sudo shutdown now
```
2. Shut down your system after 10 minutes:
```
sudo shutdown +10
```
3. Shut down your system with a message after 5 minutes:
```
sudo shutdown +5 "System will shutdown in 5 minutes"
```
### Syntax:
```
shutdown [OPTIONS] [TIME] [MESSAGE]
```
### Additional Flags and their Functionalities:
|**Short Flag** |**Long Flag** |**Description** |
|:---|:---|:---|
|`-r`|<center>-</center>|Reboot the system|
|`-c`|<center>-</center>|Cancel an scheduled shut down|

View File

@@ -0,0 +1,56 @@
# The `reboot` Command
The `reboot` command is used to restart a linux system. However, it requires elevated permission using the [sudo](https://github.com/bobbyiliev/101-linux-commands-ebook/blob/main/ebook/en/content/051-the-sudo-command.md) command. Necessity to use this command usually arises after significant system or network updates have been made to the system.
## Syntax
```
reboot [OPTIONS...]
```
### Options
- **help** : This option prints a short help text and exit.
- **-halt** : This command will stop the machine.
- **-w**, **wtmp-only** : This option only writes wtmp shutdown entry, it do not actually halt, power-off, reboot.
### Examples
1. Basic Usage. Mainly used to restart without any further details
```
$ sudo reboot
```
However, alternatively the shutdown command with the `-r` option
```
$ sudo shutdown -r now
```
**Note** that the usage of the reboot, halt and power off is almost similar in syntax and effect. Run each of these commands with help to see the details.
2. The `reboot` command has limited usage, and the `shutdown` command is being used instead of reboot command to fulfill much more advance reboot and shutdown requirements. One of those situations is a scheduled restart. Syntax is as follows
```
$ sudo shutdown r [TIME] [MESSAGE]
```
Here the TIME has various formats. The simplest one is `now`, already been listed in the previous section, and tells the system to restart immediately. Other valid formats we have are +m, where m is the number of minutes we need to wait until restart and HH:MM which specifies the TIME in a 24hr clock.
**Example to reboot the system in 2 minutes**
```
$ sudo shutdown r +2
```
**Example of a scheduled restart at 03:00 A.M**
```
$ sudo shutdown r 03:00
```
3. Cancelling a Reboot. Usually happens in case one wants to cancel a scheduled restart
**Syntax**
```
$ sudo shutdown c [MESSAGE]
```
**Usage**
```
$sudo shutdown -c "Scheduled reboot cancelled because the chicken crossed the road"
```
4. Checking your reboot logs
```
$ last reboot
```

View File

@@ -0,0 +1,44 @@
# The `hostnamectl` command
The `hostnamectl` command provides a proper API used to control Linux system hostname and change its related settings. The command also helps to change the hostname without actually locating and editing the `/etc/hostname` file on a given system.
## Syntax
```
$ hostnamectl [OPTIONS...] COMMAND ...
```
where **COMMAND** can be any of the following
**status**: Used to check the current hostname settings
**set-hostname NAME**: Used to set system hostname
**set-icon-name NAME**: Used to set icon name for host
## Example
1. Basic usage to view the current hostnames
```
$ hostnamectl
```
or
```
$ hostnamectl status
```
2. To change the static host name to _myhostname_. It may or may not require root access
```
$ hostnamectl set-hostname myhostname --static
```
3. To set or change a transient hostname
```
$ hostnamectl set-hostname myotherhostname --transient
```
4. To set the pretty hostname. The name that is to be set needs to be in the double quote(” “).
```
$ hostname set-hostname "prettyname" --pretty
```

View File

@@ -0,0 +1,45 @@
# The `crontab` command
`crontab` is used to maintain crontab files for individual users (Vixie Cron)
crontab is the program used to install, uninstall or list the tables used to drive the cron(8) daemon in Vixie Cron. Each user can have their own crontab, and though these are files in `/var/spool/cron/crontabs`, they are not intended to be edited directly.
### Syntax:
```
crontab [ -u user ] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
```
### Examples:
1. The -l option causes the current crontab to be displayed on standard output.
```
crontab -l
```
2. The -r option causes the current crontab to be removed.
```
crontab -r
```
3. The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified crontab will be installed automatically. If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.
```
crontab -e
```
4. You can specify the user you want to edit the crontab for. Every user has its own crontab. Assume you have a `www-data` user, which is in fact the user Apache is default running as. If you want to edit the crontab for this user you can run the following command
```
crontab -u www-data -e
```
### Help Command
Run below command to view the complete guide to `crontab` command.
```
man crontab
```

View File

@@ -0,0 +1,29 @@
# The `whereis` command
The `whereis` command is used to find the location of source/binary file of a command and manuals sections for a specified file in Linux system. If we compare `whereis` command with find command they will appear similar to each other as both can be used for the same purposes but `whereis` command produces the result more accurately by consuming less time comparatively.
#### Points to be kept on mind while using the whereis command:
Since the `whereis` command uses chdir(change directory 2V) to give you the result in the fastest possible way, the pathnames given with the -M, -S, or -B must be full and well-defined i.e. they must begin with a `/` and should be a valid path that exist in the systems directories, else it exits without any valid result.
`whereis` command has a hard-coded(code which is not dynamic and changes with specification) path, so you may not always find what youre looking for.
### Syntax
```
whereis [options] [filename]
```
### Options
-b : This option is used when we only want to search for binaries.
-m : This option is used when we only want to search for manual sections.
-s : This option is used when we only want to search for source files.
-u: This option search for unusual entries. A source file or a binary file is said to be unusual if it does not have any existence in system as per [-bmsu] described along with “u”. Thus `whereis -m -u * asks for those files in the current directory which have unsual entries.
-B : This option is used to change or otherwise limit the places where whereis searches for binaries.
-M : This option is used to change or otherwise limit the places where whereis searches for manual sections.
-S : This option is used to change or otherwise limit the places where whereis searches for source files.
-f : This option simply terminate the last directory list and signals the start of file names. This must be used when any of the -B, -M, or -S options are used.
-V: Displays version information and exit.
-h: Displays the help and exit.

Some files were not shown because too many files have changed in this diff Show More