Skip to content

samreachyan/bash-guide

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

94 Commits
ย 
ย 

Repository files navigation

bash logo

Table of Contents

  1. Basic Operations
    1.1. File Operations
    1.2. Text Operations
    1.3. Directory Operations
    1.4. SSH, System Info & Network Operations
    1.5. Process Monitoring Operations
  2. Basic Shell Programming
    2.1. Variables
    2.2. Array
    2.3. String Substitution
    2.4. Functions
    2.5. Conditionals
    2.6. Loops
  3. Tricks
  4. Debugging

1. Basic Operations

a. export

แž”แŸ’แžšแžพแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แžขแŸ†แž–แžธแž˜แž‡แŸ’แžˆแžŠแŸ’แž‹แžถแž“ variable แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžขแŸ’แžœแžธแž˜แžฝแž™แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แž˜แžพแž› variable แžŠแŸ‚แž›แž”แžถแž“แž”แŸ’แžšแžพแž“แŸ„แŸ‡แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž”แŸ’แžšแžพ echo $VARIABLE_NAME แŸ”

export

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ export
AWS_HOME=/Users/adnanadnan/.aws
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LESS=-R
$ echo $AWS_HOME
/Users/adnanadnan/.aws

b. whatis

whatis แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž–แžธ แž€แžถแžšแž”แž‰แŸ’แž‡แžถ แž€แžถแžšแž”แž‰แŸ’แž‡แžถ, แž–แŸ’แžšแžนแžแžทแŸ’แžแž€แžถแžšแžŽแŸ, แž”แžŽแŸ’แžŽแžถแž›แŸแž™ , แž˜แžปแžแž„แžถแžšแž“แžทแž„ , แž‘แŸ†แž–แŸแžšแž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’ แŸ”

whatis something

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ whatis bash
bash (1)             - GNU Bourne-Again SHell
$ whatis uname
uname (1)            - print system information
uname (2)            - get name and information about current kernel

c. whereis

whereis แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแž“แžปแžœแžแŸ’แžแžŸแŸ’แžœแŸ‚แž„แžšแž€แž”แŸ’แžšแž—แž–แžฏแž€แžŸแžถแžš แž“แžทแž„ แž‘แŸ†แž–แŸแžšแž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’แžŠแŸ‚แž›แž”แžถแž“แžŠแŸ†แžกแžพแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแŸ”

whereis name

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ whereis php
/usr/bin/php

d. which

which แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแž“แžปแžœแžแŸ’แžแžŸแŸ’แžœแŸ‚แž„แžšแž€แž‘แžธแžแžถแŸ†แž„แžแžถแž˜แž˜แž‡แŸ’แžˆแžŠแŸ’แž‹แžถแž“ variable แžŸแŸ’แžแžทแžแž“แŸ…แŸ” แžœแžถแž“แžนแž„แž”แž„แŸ’แž แžถแž‰แž‚แŸ’แžšแž”แŸ‹แž‘แžธแžแžถแŸ†แž„แžŠแŸ‚แž›แž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแžแžถแž„แž›แžพแŸ”

which program_name 

แžงแž‘แžถแž แžšแžŽแŸ:

$ which php
/c/xampp/php/php

e. clear

แžœแžถแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแž˜แŸ’แžขแžถแžแžขแžแŸ’แžแž”แž‘แžŠแŸ‚แž›แž˜แžถแž“แž“แŸ…แž›แžพแžขแŸแž€แŸ’แžšแž„แŸ‹แž”แž„แŸ’แž แžถแž‰ window แŸ”

1.1. File Operations

cat chmod chown cp diff file find gunzip gzcat gzip head
lpq lpr lprm ls more mv rm tail touch

a. cat

แžœแžถแžƒแžพแž‰แž”แŸ’แžšแžพแž—แžถแž‚แž…แŸ’แžšแžพแž“แž“แŸ…แž€แŸ’แž“แžปแž„ UNIX แžฌ LinuxแŸ”

  • แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰ แžขแž€แŸ’แžŸแžš แž›แžพแžขแŸแž€แŸ’แžšแž„แŸ‹
  • แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แž˜แŸ’แž›แž„แžขแžแŸ’แžแž”แž‘แžฏแž€แžŸแžถแžš
  • แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž‰แŸ’แž…แžผแž›แžขแžแŸ’แžแž”แž‘แžฏแž€แžŸแžถแžš
  • แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแžแžขแžแŸ’แžแž”แž‘แžฏแž€แžŸแžถแžšแžแŸ’แž˜แžธ
cat filename
cat file1 file2 
cat file1 file2 > newcombinedfile
cat < file1 > file2 #copy file1 to file2

b. chmod

chmod แžŠแŸ‚แž›แž˜แž€แž–แžธแž–แžถแž€แŸ’แž™ "change mode" แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžแžผแžšแž˜แŸ‰แžผแžŠแžฏแž€แžŸแžถแžš read write แžฌ execute แž›แžพแžฏแž€แžŸแžถแžšแž“แžทแž„แžแžแžฏแž€แžŸแžถแžšแŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž›แŸ„แž€แžขแŸ’แž“แž€แžขแžถแž…แžขแžถแž“แž€แŸ’แž“แžปแž„ แžแŸ†แžŽแž—แžถแŸ’แž‡แž”แŸ‹แž“แŸแŸ‡แž”แžถแž“ แŸ”

chmod -options filename

c. chown

chown แžŠแŸ‚แž›แž˜แž€แž–แžธแž–แžถแž€แŸ’แž™ "change owner" แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžแžผแžšแž˜แŸ’แž…แžถแžŸแŸ‹แž€แž˜แŸ’แž˜แžŸแžทแž‘แŸ’แž’แžทแž›แžพแžฏแž€แžŸแžถแžšแžฌแžแžแžฏแž€แžŸแžถแžšแžŽแžถแž˜แžฝแž™แž”แžถแž“ แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แž‡แžถ user แžฌ groupแŸ” แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž—แžถแž‚แž…แŸ’แžšแžพแž“แž‚แžบแžขแž“แžปแž‰แŸ’แž‰แžถแžแž–แžธ user แž˜แžฝแž™แž‘แŸ… group แž˜แžฝแž™แž‘แŸ€แžแžŠแžพแž˜แŸ’แž”แžธแž˜แžถแž“แžŸแžทแž‘แŸ’แž’แžทแž…แžผแž›แž˜แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ‚แžšแŸ”

chown -options user:group filename

d. cp

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แž˜แŸ’แž›แž„แžฏแž€แžŸแžถแžšแž–แžธแž€แž“แŸ’แž›แŸ‚แž„แž˜แžฝแž™แž‘แŸ…แž€แž“แŸ’แž›แŸ‚แž„แžŽแžถแž˜แžฝแž™แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ”

cp filename1 filename2

filename1 แžแŸ’แžšแžผแžœแžแŸ‚แž‡แžถแž‘แžธแžแžถแŸ†แž„แžšแžฝแž˜แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžš แž“แžทแž„ filename2 แž‡แžถแž‘แžธแžแžถแŸ†แž„แžšแžฝแž˜แž‘แžถแŸ†แž„แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž›แŸ„แž€แžขแŸ’แž“แž€แž…แž„แŸ‹แž…แž˜แŸ’แž›แž„แž‘แŸ…แŸ”

e. diff

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแŸ€แž”แž’แŸ€แž”แžฏแž€แžŸแžถแžš แž“แžทแž„แž”แž„แŸ’แž แžถแž‰แž”แž‰แŸ’แž‡แžธแž–แžธแž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถแž“แŸƒแžฏแž€แžŸแžถแžšแŸ”

diff filename1 filename2

f. file

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แŸ†แžŽแžแŸ‹แž”แŸ’แžšแž—แŸแž‘แžฏแž€แžŸแžถแžšแŸ”

file filename

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ file index.html
 index.html: HTML document, ASCII text

g. find

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžœแŸ‚แž„แžšแž€แžฏแž€แžŸแžถแžšแž“แžทแž„แž‘แžธแžแžถแŸ†แž„แžŽแžถแž˜แžฝแž™แŸ”

find directory options pattern

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ find . -name README.md
$ find /home/user1 -name '*.png'

h. gunzip

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แž“แŸ’แž›แžถแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แžšแžฝแž˜แžŠแŸ„แž™ gzip แŸ”

gunzip filename

i. gzcat

แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž˜แžพแž›แžฏแž€แžŸแžถแžš gzipped แžŠแŸ„แž™แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž˜แžถแž“ gunzip แŸ”

gzcat filename

j. gzip

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แžšแžฝแž˜แžฏแž€แžŸแžถแžšแŸ”

gzip filename

k. head

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘ แŸกแŸ แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ†แž”แžผแž„แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแŸ”

head filename

l. lpq

แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž›แž‘แŸ’แž’แž•แž›แž”แž„แŸ’แž แžถแž‰แž‡แžถแž‡แžฝแžšแŸ—แŸ”

lpq

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ lpq
Rank    Owner   Job     File(s)                         Total Size
active  adnanad 59      demo                            399360 bytes
1st     adnanad 60      (stdin)                         0 bytes

m. lpr

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›แžฏแž€แžŸแžถแžšแŸ”

lpr filename

n. lprm

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž›แžปแž”แžขแŸ’แžœแžธแž˜แžฝแž™แž–แžธแž›แž‘แŸ’แž’แž•แž›แž”แž„แŸ’แž แžถแž‰แž‡แžถแž‡แžฝแžšแž“แŸ„แŸ‡แŸ”

lprm jobnumber

o. ls

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แžฏแž€แžŸแžถแžšแž‡แžถแž”แž‰แŸ’แž‡แžธแŸ” ls แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž‡แžถแž…แŸ’แžšแžพแž“ -l แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แžฏแž€แžŸแžถแžšแž–แžธ แž‘แŸ†แž แŸ† แž˜แŸ’แž…แžถแžŸแŸ‹แž€แž˜แŸ’แž˜แžŸแžทแž‘แŸ’แž’แžท แž“แžทแž„แžแŸ’แž„แŸƒแž€แŸ†แžŽแŸ‚แž…แžปแž„แž€แŸ’แžšแŸ„แž™แŸ” -a แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž”แž‰แŸ’แž‡แžธแžฏแž€แžŸแžถแžš แž“แžทแž„แž”แž„แŸ’แž แžถแž‰แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž แžถแž‰แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž›แŸ„แž€แžขแŸ’แž“แž€แžขแžถแž…แžขแžถแž“แž€แŸ’แž“แžปแž„ แžแŸ†แžŽแž—แžถแŸ’แž‡แž”แŸ‹แž“แŸแŸ‡แž”แžถแž“ แŸ”

ls option

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ ls -la
rwxr-xr-x   33 adnan  staff    1122 Mar 27 18:44 .
drwxrwxrwx  60 adnan  staff    2040 Mar 21 15:06 ..
-rw-r--r--@  1 adnan  staff   14340 Mar 23 15:05 .DS_Store
-rw-r--r--   1 adnan  staff     157 Mar 25 18:08 .bumpversion.cfg
-rw-r--r--   1 adnan  staff    6515 Mar 25 18:08 .config.ini
-rw-r--r--   1 adnan  staff    5805 Mar 27 18:44 .config.override.ini
drwxr-xr-x  17 adnan  staff     578 Mar 27 23:36 .git
-rwxr-xr-x   1 adnan  staff    2702 Mar 25 18:08 .gitignore

p. more

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž•แŸ’แž“แŸ‚แž€แžŠแŸ†แž”แžผแž„แž“แŸƒแžฏแž€แžŸแžถแžš (แž›แŸ„แž€แžขแŸ’แž“แž€แžขแžถแž…แžšแŸ†แž€แžทแž›แž…แžปแŸ‡แž€แŸ’แžšแŸ„แž˜แžŠแŸ„แž™แž”แŸ’แžšแžพ space แžฌแž…แžปแž… q แžŠแžพแž˜แŸ’แž”แžธแž”แž‰แŸ’แž…แž”แŸ‹)แŸ”

more filename

q. mv

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แžธแžแžถแŸ†แž„แžฏแž€แžŸแžถแžšแž‘แŸ…แž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แžŸแŸแž„แž˜แžฝแž™แž‘แŸ€แžแŸ”

mv filename1 filename2

filename1 แžแŸ’แžšแžผแžœแžแŸ‚แž‡แžถแž‘แžธแžแžถแŸ†แž„แžšแžฝแž˜แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžš แž“แžทแž„ filename2 แž‡แžถแž‘แžธแžแžถแŸ†แž„แžšแžฝแž˜แž‘แžถแŸ†แž„แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž›แŸ„แž€แžขแŸ’แž“แž€แž…แž„แŸ‹แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แŸ…แŸ”

แžœแžถแž€แŸแžขแžถแž…แž”แŸ’แžšแžพแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แŸ‚แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแž•แž„แžŠแŸ‚แžšแŸ”

mv old_name new_name

r. rm

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž›แžปแž”แž…แŸแž‰แžฏแž€แžŸแžถแžšแŸ” แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ command แž“แŸแŸ‡แž“แŸ…แž›แžพแžแžแžฏแž€แžŸแžถแžšแž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แžขแŸ’แž“แž€แž“แžผแžœแž€แŸ†แž แžปแžŸแŸ” rm: directory: is a directory

แžŠแžพแž˜แŸ’แž”แžธแž›แžปแž”แžแžแžฏแž€แžŸแžถแžšแžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž”แŸ’แžšแžพ -r แžŠแŸ‚แž›แž“แžนแž„แž›แžปแž”แžขแžแŸ’แžแž”แž‘แžœแžทแž›แž‡แžปแŸ†(recursive)แŸ” แž‡แž˜แŸ’แžšแžพแžŸแž•แŸ’แžŸแŸแž„แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพ -f แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แžแŸ†(force) แžฑแŸ’แž™แž›แžปแž”แžŠแŸ„แž™แž‚แŸ’แž˜แžถแž“แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž€แŸ‹แžŽแžถแž˜แžฝแž™แŸ”

rm filename

s. tail

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›แž“แŸƒแžฏแž€แžŸแžถแžšแž…แŸ†แž“แžฝแž“ แŸกแŸ  แž”แž“แŸ’แž‘แžถแžแŸ‹แž…แžปแž„แž€แŸ’แžšแŸ„แž™แŸ” -f แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แž‘แžทแž“แŸ’แž“แž“แŸแž™แž”แž“แŸ’แžแŸ‚แž˜แž“แŸ…แž–แŸแž›แžฏแž€แžŸแžถแžšแž“แŸ„แŸ‡แŸ”

tail filename

t. touch

แž€แžถแžšแž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแžแŸ’แž˜แžธ แž“แžทแž„แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž–แŸแž›แžœแŸแž›แžถแž“แŸƒแžฏแž€แžŸแžถแžšแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžœแžถแž˜แžทแž“แž˜แžถแž“แž‡แžถแž“แŸ‹แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแžŽแžถแž˜แžฝแž™แž‘แŸ แžœแžถแž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แŸ”

touch filename

แžงแž‘แžถแž แžšแžŽแŸ:

$ touch trick.md

1.2. Text Operations

awk cut echo egrep fgrep fmt grep nl sed sort
tr uniq wc

a. awk

awk แž‚แžบแž‡แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ command แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž”แŸ†แž•แžปแžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžฏแž€แžŸแžถแžšแžขแžแŸ’แžแž”แž‘แŸ” แžœแžถแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพแžฏแž€แžŸแžถแžšแž‘แžถแŸ†แž„แž˜แžผแž›แžแžถแž˜แž”แž“แŸ’แž‘แžถแžแŸ‹แŸ” แžแžถแž˜แž›แŸ†แž“แžถแŸ†แžŠแžพแž˜แžœแžถแž”แŸ’แžšแžพแž…แž“แŸ’แž›แŸ„แŸ‡แž‘แŸ†แž“แŸแžšแžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ‚แž€แžœแžถแž›แŸ” แžœแžถแž‡แžถแž–แžถแž€แŸ’แž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž™แž”แž‰แŸ’แž‡แžถ awk

awk '/search_pattern/ { action_to_take_if_pattern_matches; }' file_to_parse

แžขแŸ’แž“แž€แžขแžถแž…แž™แž€แž‚แŸ†แžšแžผแžฏแž€แžŸแžถแžš /etc/passwd. แž“แŸแŸ‡แž‡แžถแž‘แžทแž“แŸ’แž“แž“แŸแž™แž‚แŸ†แžšแžผแžŠแŸ‚แž›แžฏแž€แžŸแžถแžšแž“แŸแŸ‡แž˜แžถแž“แŸ–

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

แžฅแžกแžผแžœแž™แžพแž„แžŸแžถแž€แž™แž€แžแŸ‚ username แž–แžธแžฏแž€แžŸแžถแžšแž˜แžฝแž™แž“แŸแŸ‡แŸ” -F แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ†แž”แŸ‚แž€แžแŸ†แž”แž“แŸ‹แŸ” แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแž“แŸแŸ‡ :. { print $1 } แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž แžถแž‰แž€แžถแžšแž•แŸ’แž‘แŸ€แž„แž•แŸ’แž‘แžถแžแŸ‹แžแŸ†แž”แž“แŸ‹แžŠแŸ†แž”แžผแž„แŸ”

awk -F':' '{ print $1 }' /etc/passwd

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžถแžšแž”แž‰แŸ’แž‡แžถแžแžถแž„แž›แžพแžขแŸ’แž“แž€แž“แžนแž„แž‘แž‘แžฝแž›แž”แžถแž“แž›แž‘แŸ’แž’แž•แž›แžŠแžผแž…แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ”

root
daemon
bin
sys
sync

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ awk แžขแŸ’แž“แž€แžขแžถแž…แžขแžถแž“แž€แŸ’แž“แžปแž„ แžแŸ†แžŽแž—แžถแŸ’แž‡แž”แŸ‹แž“แŸแŸ‡แž”แžถแž“ แŸ”

b. cut

แž€แžถแžšแž›แžปแž”แž•แŸ’แž“แŸ‚แž€แžŽแžถแž˜แžฝแž™แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแŸ”

example.txt

red riding hood went to the park to play

แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แž‡แžฝแžšแžˆแžšแž‘แžธแŸข แŸง แž“แžทแž„ แŸฉ แžŠแŸ‚แž›แž˜แžถแž“แžŠแž€แžƒแŸ’แž›แžถแž‘แžปแž€

cut -d " " -f2,7,9 example.txt
riding park play

c. echo

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž˜แžฝแž™แž”แž“แŸ’แž‘แžถแžแŸ‹

แž”แž„แŸ’แž แžถแž‰ "Hello World"

echo Hello World
Hello World

แž”แž„แŸ’แž แžถแž‰ "Hello World" แž…แžปแŸ‡แž”แž“แŸ’แž‘แžถแžแŸ‹แžแŸ’แž˜แžธแž€แŸ’แž“แžปแž„แž˜แžฝแž™แž–แžถแž€แŸ’แž™แŸ—

echo -ne "Hello\nWorld\n"
Hello
World

d. egrep

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž‡แžถแž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ‚แž›แžแžถแž˜แž›แŸ†แž“แžถแŸ† - แž€แžถแžšแž˜แžแžทแž”แž“แŸ’แžแŸ‚แž˜ (alias 'grep -E')

example.txt

Lorem ipsum
dolor sit amet, 
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ‚แž›แž˜แžถแž“แž–แžถแž€แŸ’แž™ "Lorem" แžฌ "dolor" แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš

egrep '(Lorem|dolor)' example.txt
or
grep -E '(Lorem|dolor)' example.txt
Lorem ipsum
dolor sit amet,
et dolore magna
duo dolores et ea
sanctus est Lorem
ipsum dolor sit

e. fgrep

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ‚แž›แžแžถแž˜แž›แŸ†แž“แžถแŸ† - แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž›แŸ†แž“แžถแŸ† FIXED (alias 'grep -F')

example.txt

Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
foo (Lorem|dolor) 
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.

แžŸแŸ’แžœแŸ‚แž„แžšแž€แžขแž€แŸ’แžŸแžš '(Lorem|dolor)' แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš example.txt

fgrep '(Lorem|dolor)' example.txt
or
grep -F '(Lorem|dolor)' example.txt
foo (Lorem|dolor) 

f. fmt

แž‘แž˜แŸ’แžšแž„แŸ‹แžขแž€แŸ’แžŸแžšแž˜แžถแž“แž›แŸ†แžŠแžถแž”แŸ‹

แžงแž‘แžถแž แžšแžŽแŸ: example.txt (1 line)

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ‚แž›แž˜แžถแž“ แŸขแŸ แž–แžถแž€แŸ’แž™แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš example

cat example.txt | fmt -w 20
Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.

g. grep

แžœแŸ‚แž„แžšแž€แž–แžถแž€แŸ’แž™แž€แŸ’แž“แžปแž„แžขแžแŸ’แžแž”แž‘แžฏแž€แžŸแžถแžšแž˜แžฝแž™ แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ grep แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€แžœแžถแž“แžนแž„แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›แž‡แžถแž‡แžฝแžšแŸ”

grep pattern filename

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ grep admin /etc/passwd
_kadmin_admin:*:218:-2:Kerberos Admin Service:/var/empty:/usr/bin/false
_kadmin_changepw:*:219:-2:Kerberos Change Password Service:/var/empty:/usr/bin/false
_krb_kadmin:*:231:-2:Open Directory Kerberos Admin Service:/var/empty:/usr/bin/false

แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž€แžถแžšแžŸแŸ’แžœแŸ‚แž„แžšแž€แžฏแž€แžŸแžถแžšแžŠแŸ„แž™แž”แž„แŸ’แžแŸ†แž›แžพแž€แž›แŸ‚แž„แž–แžถแž€แŸ’แž™แžŠแŸ„แž™แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ -iแŸ” แž…แŸ†แžŽแŸ‚แž€ -r แžœแžถแžขแžถแž…แžŸแŸ’แžœแŸ‚แž„แžšแž€แž‚แŸ’แžšแž”แŸ‹แžฏแž€แžŸแžถแžšแž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แž“แžปแž„แžแžแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แŸ” แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ grep -r admin /etc/

แž…แŸ†แžŽแŸ‚แž€ -w แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžœแŸ‚แž€แžšแž€แžแŸ‚แž–แžถแž€แŸ’แž™แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ grep แžขแŸ’แž“แž€แžขแžถแž…แžขแžถแž“แž€แŸ’แž“แžปแž„ แžแŸ†แžŽแž—แžถแŸ’แž‡แž”แŸ‹แž“แŸแŸ‡แž”แžถแž“ แŸ”

h. nl

แž‡แžถแž…แŸ†แž“แžฝแž“แž”แž“แŸ’แž‘แžถแžแŸ‹แžขแžแŸ’แžแž”แž‘แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž˜แžฝแž™แŸ”

example.txt

Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.

*แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แž…แŸ†แž“แžฝแž“แž›แŸแžแž”แž“แŸ’แž‘แžถแžแŸ‹แžขแžแŸ’แžแž”แž‘แž€แŸ’แž“แžปแž„ example.txt *

nl -s". " example.txt 
     1. Lorem ipsum
     2. dolor sit amet,
     3. consetetur
     4. sadipscing elitr,
     5. sed diam nonumy
     6. eirmod tempor
     7. invidunt ut labore
     8. et dolore magna
     9. aliquyam erat, sed
    10. diam voluptua. At
    11. vero eos et
    12. accusam et justo
    13. duo dolores et ea
    14. rebum. Stet clita
    15. kasd gubergren,
    16. no sea takimata
    17. sanctus est Lorem
    18. ipsum dolor sit
    19. amet.

i. sed

แž€แŸ†แžŽแŸ‚แž‘แž˜แŸ’แžšแž„แŸ‹แžขแžแŸ’แžแž”แž‘แžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ†แž›แŸ‚แž„แžขแžแŸ’แžแž”แž‘

example.txt

Hello This is a Test 1 2 3 4

แž‡แŸ†แž“แžฝแžŸแž‚แŸ’แžšแž”แŸ‹ แžŠแž€แžƒแŸ’แž›แžถ(space) แž‡แžถแž˜แžฝแž™แžŸแž แžถแžŸแž‰แŸ’แž‰แžถ(-)

sed 's/ /-/g' example.txt
Hello-This-is-a-Test-1-2-3-4

แž‡แŸ†แž“แžฝแžŸแž‚แŸ’แžšแž”แŸ‹แž›แŸแžแž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ„แž™แžขแž€แŸ’แžŸแžš "d"

sed 's/[0-9]/d/g' example.txt
Hello This is a Test d d d d

j. sort

แžแž˜แŸ’แžšแŸ€แž”แž›แŸ†แžŠแžถแž”แŸ‹แžขแžแŸ’แžแž”แž‘แžขแž€แŸ’แžŸแžšแž‡แžถแž”แž“แŸ’แž‘แžถแžแŸ‹

example.txt

f
b
c
g
a
e
d

sort example.txt

sort example.txt
a
b
c
d
e
f
g

แžแž˜แŸ’แžšแŸ€แž”แž›แŸ†แžŠแžถแž”แŸ‹แžขแžแŸ’แžแž”แž‘แžขแž€แŸ’แžŸแžšแžŠแŸ„แž™แž…แŸƒแžŠแž“แŸ’แž™แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš example.txt

sort example.txt | sort -R
b
f
a
c
d
g
e

k. tr

แž”แŸ†แž›แŸ‚แž„แžฌแž›แžปแž”แžขแž€แŸ’แžŸแžš

example.txt

Hello World Foo Bar Baz!

แž”แŸ†แž›แŸ‚แž„แž‚แŸ’แžšแž”แŸ‹แžขแž€แŸ’แžŸแžšแžแžผแž…แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‘แŸ…แž‡แžถแžขแž€แŸ’แžŸแžšแž’แŸ†

cat example.txt | tr 'a-z' 'A-Z' 
HELLO WORLD FOO BAR BAZ!

แž”แŸ†แž›แŸ‚แž„แžŠแž€แžƒแŸ’แž›แžถแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‘แŸ…แž‡แžถแž…แžปแŸ‡แž”แž“แŸ’แž‘แžถแžแŸ‹แžแŸ’แž˜แžธ

cat example.txt | tr ' ' '\n'
Hello
World
Foo
Bar
Baz!

l. uniq

แžšแžถแž™แž€แžถแžšแžŽแŸแžฌแž›แžปแž”แž…แŸ„แž›แž‡แžฝแžšแž˜แžถแž“แžขแž€แŸ’แžŸแžšแžŠแžŠแŸ‚แž›แŸ—

example.txt

a
a
b
a
b
c
d
c

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แžŠแŸ‚แž›แž˜แžถแž“แžแŸ‚แž˜แžฝแž™แž“แŸƒ example.txt (แžŠแŸ†แž”แžผแž„แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแžแŸ‚แžแž˜แŸ’แžšแŸ€แž”แžแžถแž˜แž›แŸ†แžŠแžถแž”แŸ‹แž‡แžถแž˜แžปแž“แžŸแžทแž“ แž”แžพแž˜แžทแž“แžŠแžผแž…แŸ’แž“แŸ„แŸ‡แžœแžถแž˜แžทแž“แžขแžถแž…แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž˜แžถแž“แžแŸ‚แž˜แžฝแž™แž“แŸ„แŸ‡แž‘แŸ)

sort example.txt | uniq
a
b
c
d

แž”แž„แŸ’แž แžถแž‰แžขแžแŸ’แžแž”แž‘แž“แŸƒแž”แž“แŸ’แž‘แžถแžแŸ‹แž“แžธแž˜แžฝแž™แŸ— แž“แžทแž„แž…แŸ†แž“แžฝแž“แžŠแŸ‚แž›แž”แžถแž“แžšแž€แžƒแžพแž‰แž€แŸ’แž“แžปแž„แž‡แžฝแžšแž”แž“แŸ’แž‘แžถแžแŸ‹แž‡แžถแž˜แžฝแž™แž‚แŸ’แž“แžถ

sort example.txt | uniq -c
    3 a
    2 b
    2 c
    1 d

m. wc

แž”แž„แŸ’แž แžถแž‰แž”แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž…แŸ†แž“แžฝแž“แž”แž“แŸ’แž‘แžถแžแŸ‹ แž–แžถแž€แŸ’แž™ แž“แžทแž„แž–แž‰แŸ’แž‡แž“แŸˆแžŠแŸ‚แž›แž˜แžถแž“แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแŸ”

wc filename

แžงแž‘แžถแž แžšแžŽแŸแŸ–

$ wc demo.txt
7459   15915  398400 demo.txt

7459 แž…แŸ†แž“แžฝแž“แž”แž“แŸ’แž‘แžถแžแŸ‹ 15915 แž…แŸ†แž“แžฝแž“แž–แžถแž€แŸ’แž™ แž“แžทแž„ 398400 แž–แž‰แŸ’แž‡แž“แŸˆแŸ”

1.3. Directory Operations

cd mkdir pwd

a. cd

แžขแŸ’แž“แž€แžขแžถแž…แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž–แžธแž‘แžธแžแžถแŸ†แž„แž˜แžฝแž™แž‘แŸ…แž‘แžธแžแŸ†แžถแž„แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžŠแŸ„แž™แž”แŸ’แžšแžพ

$ cd

แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžขแŸ’แž“แž€แž–แžธแž‘แžธแžแžถแŸ†แž„แžŠแžพแž˜แž‘แŸ…แž‘แžธแžแžถแŸ†แž„ dirname แž‡แžถแž‘แžธแžแžถแŸ†แž„แžขแŸ’แž“แž€แž”แŸ’แžแžผแžšแž‘แŸ…

cd dirname

b. mkdir

แž”แž„แŸ’แž€แžพแžแžแžแžแŸ’แž˜แžธ

mkdir dirname

แžขแŸ’แž“แž€แžขแžถแž…แž”แž„แŸ’แž€แžพแžแžแžแžแŸ’แž˜แžธแž…แŸ’แžšแžพแž“แž€แŸ’แž“แžปแž„แž€แžถแžšแž”แž‰แŸ’แž‡แžถแžแŸ‚แž˜แŸ’แžแž„แž€แŸ’แž“แžปแž„แžแžแžŠแŸ‚แž›แžขแŸ’แž“แž€แžŸแŸ’แžแžทแžแž“แŸ…

mkdir 1stDirectory 2ndDirectory 3rdDirectory

แžขแŸ’แž“แž€แžขแžถแž…แž”แž„แŸ’แž€แžพแžแžแžแžแŸ’แž˜แžธแž‘แŸ…แž›แžพแžแžแžŠแŸ‚แž›แžขแŸ’แž“แž€แž˜แžทแž“แžŸแŸ’แžแžทแžแž“แŸ…แŸ” แžงแž‘แžถแž แžšแžŽแŸ แžขแŸ’แž“แž€แž…แž„แŸ‹แž”แž„แŸ’แž€แžพแžแžแž 'project1' แž€แŸ’แž“แžปแž„ '/samples/bash/projects/' แžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แžถแž“แžŸแŸ’แžแžทแžแž“แŸ…แž€แž“แŸ’แž›แŸ‚แž„แž“แŸ„แŸ‡แŸ–

mkdir /samples/bash/projects/project1

แž”แŸ’แžšแžพแžแžแžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แž„แŸ’แž€แžพแžแž“แŸ„แŸ‡แž˜แžทแž“แž‡แžถแž“แŸ‹แžˆแŸ’แž˜แŸ„แŸ‡แž“แŸ„แŸ‡แž‘แŸ แžœแžถแž“แžนแž„แž”แž„แŸ’แž€แžพแžแžแžแž“แŸ„แŸ‡แžฑแŸ’แž™แžขแŸ’แž“แž€

c. pwd

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžถแž”แŸ‹แž‘แžธแžแžถแŸ†แž„แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แžŠแŸ‚แž›แžขแŸ’แž“แž€แžŸแŸ’แžแžทแžแž“แŸ…แŸ”

pwd

1.4. SSH, System Info & Network Operations

bg cal date df dig du fg finger jobs last
man passwd ping ps quota scp ssh top uname uptime
w wget whoami whois

a. bg

แž”แž‰แŸ’แž‡แžธแž€แžถแžšแž”แž‰แŸ’แžˆแž”แŸ‹แžฌแž€แžถแžšแž„แžถแžšแžŠแŸ‚แž›แž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แžแžถแž„แž€แŸ’แžšแŸ„แž™ แž€แžถแžšแž•แŸ’แžขแžถแž€แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžถแžšแž„แžถแžšแž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แžแžถแž„แž€แŸ’แžšแŸ„แž™แŸ”

b. cal

แž”แž„แŸ’แž แžถแž‰แž”แŸ’แžšแžแžทแž‘แžทแž“แžšแž”แžŸแŸ‹แžแŸ‚แž“แŸแŸ‡

c. date

แž”แž„แŸ’แž แžถแž‰แžแŸ’แž„แŸƒแžแŸ‚ แž“แžทแž„แž˜แŸ‰แŸ„แž„แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“

d. df

แž”แž„แŸ’แž แžถแž‰แž‘แžทแž“แŸ’แž“แž“แŸแž™แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แžŒแžธแžŸ

e. dig

แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แžˆแŸ’แž˜แŸ„แŸ‡ DNS

dig domain

f. du

แž”แž„แŸ’แž แžถแž‰แž‘แžทแž“แŸ’แž“แž“แŸแž™แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŒแžธแžŸแž“แŸƒแžฏแž€แžŸแžถแžšแžฌแžแžแžŸแžถแžšแŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แžขแŸ’แž“แž€แžขแžถแž…แžขแžถแž“แž€แŸ’แž“แžปแž„ แžแŸ†แžŽแž—แžถแŸ’แž‡แž”แŸ‹แž“แŸแŸ‡แž”แžถแž“ แŸ”

du [option] [filename|directory]

แž‡แž˜แŸ’แžšแžพแžŸแž”แž“แŸ’แžแŸ‚แž˜แŸ–

  • -h (human readable) แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›แž‚แžทแžแž‡แžถ แž‚แžธแžกแžผแž”แŸƒแžแŸ (kilobytes - K) แž˜แŸแž แŸ’แž‚แžถแž”แŸƒแžแŸ’แž“แžถแž (Megabytes - M) แž“แžทแž„ แž‡แžธแž แŸ’แž‚แžถแž”แŸƒแžแŸ’แž“แžถแž (Gigabytes - G)
  • -s (supress or summarize) แž”แž„แŸ’แž แžถแž‰แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแžšแžปแž”แžŒแžธแžŸแž“แŸƒแžแžแžฏแž€แžŸแžถแžš แž“แžทแž„ แžšแž”แžถแž™แž€แžถแžšแžŽแŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแžแžšแž„

แžงแž‘แžถแž แžšแžŽแŸแŸ–

du -sh pictures
1.4M pictures

g. fg

แž“แžถแŸ†แž˜แž€แž“แžผแžœแž€แžถแžšแž„แžถแžšแžแŸ’แž˜แžธแŸ—แž˜แž€แž“แŸ…แž•แŸ’แž‘แŸƒแžแžถแž„แž˜แžปแžแŸ”

h. finger

แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แžขแŸ†แž–แžธแžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ user แŸ”

finger username

i. jobs

แž”แž„แŸ’แž แžถแž‰แž”แž‰แŸ’แž‡แžธแž€แžถแžšแž„แžถแžšแž“แžทแž„แž…แŸ†แž“แžฝแž“แžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž“แŸ…แžแžถแž„แž€แŸ’แžšแŸ„แž™แŸ”

j. last

แž”แž„แŸ’แž แžถแž‰แž‘แžทแž“แŸ’แž“แž“แŸแž™แž…แŸ†แž“แžฝแž“แž”แžถแž“แž…แžผแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ user

last yourUsername

k. man

แž”แž„แŸ’แž แžถแž‰แžŸแŸ€แžœแž—แŸ…แžŽแŸ‚แž“แžถแŸ†แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แŸ”

man command

l. passwd

แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž€แŸ†แž–แžปแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแžถแž…แž”แŸ’แžแžผแžšแž›แŸแžแžŸแž˜แŸ’แž„แžถแžแŸ‹

m. ping

Ping host แž“แžทแž„แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›

ping host

n. ps

แž”แž„แŸ’แž แžถแž‰แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžš

ps -u yourusername

แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž–แžธแž”แž‰แŸ’แž‡แžธแž“แžธแž˜แžฝแž™แŸ—แžŠแŸ‚แž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ flag

ps -ef

o. quota

แž”แž„แŸ’แž แžถแž‰แžแžถแžŒแžธแžŸแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€

quota -v

p. scp

แž•แŸ’แž‘แŸแžšแžฏแž€แžŸแžถแžšแžšแžœแžถแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž“แžทแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž‰แŸ’แž‡แžถแž…แž˜แŸ’แž„แžถแž™แžฌแžšแžœแžถแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž”แž‰แŸ’แž‡แžถแž–แžธแž…แž˜แŸ’แž„แžถแž™แž–แžธแžšแŸ”

แž…แž˜แŸ’แž›แž„แž–แžธแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž‰แŸ’แž‡แžถแž–แžธแž…แž˜แŸ’แž„แžถแž™

scp source_file user@host:directory/target_file

แž…แž˜แŸ’แž›แž„แž–แžธแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž‰แŸ’แž‡แžถแž–แžธแž…แž˜แŸ’แž„แžถแž™แž˜แž€แž˜แžถแŸ‰แžŸแŸŠแžธแž“แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹

scp user@host:directory/source_file target_file
scp -r user@host:directory/source_folder target_folder

แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž“แŸแŸ‡แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž”แž“แŸ’แžแŸ‚แž˜ -P แžŠแŸ‚แž›แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž—แŸ’แž‡แžถแž”แŸ‹แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ Port แžŽแžถแž˜แžฝแž™แž”แžถแž“

scp -P port user@host:directory/source_file target_file

q. ssh

shh (SSH client) แž‚แžบแž‡แžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž˜แžฝแž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แžผแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžถแžšแž”แž‰แŸ’แž‡แžถแž‘แŸ…แž€แžถแž“แŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž‰แŸ’แž‡แžถแž–แžธแž…แž˜แŸ’แž„แžถแž™แŸ”

ssh user@host

แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž“แŸแŸ‡แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž”แž“แŸ’แžแŸ‚แž˜ -p แžŠแŸ‚แž›แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž—แŸ’แž‡แžถแž”แŸ‹แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ Port แžŽแžถแž˜แžฝแž™แž”แžถแž“

ssh -p port user@host

r. top

แž”แž„แŸ’แž แžถแž‰แž–แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€

s. uname

แž”แž„แŸ’แž แžถแž‰แž–แžธแž–แŸแžแŸŒแž˜แžถแž“ kernel

uname -a

t. uptime

แž”แž„แŸ’แž แžถแž‰แž–แžธแž–แŸแž›แžœแŸแž›แžถแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžš

u. w

แž”แž„แŸ’แž แžถแž‰แž“แžšแžŽแžถแžŠแŸ‚แž›แžขแžถแž…แž…แžผแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แžถแž“

v. wget

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แžถแž‰แž™แž€แžฏแž€แžŸแžถแžš

wget file

w. whoami

แž”แž„แŸ’แž แžถแž‰แž–แžธแžˆแŸ’แž˜แŸ„แŸ‡แžขแŸ’แž“แž€แžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“

x. whois

แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แž˜แŸ’แž…แžถแžŸแŸ‹ domain

whois domain

1.5. Process Monitoring Operations

kill killall & nohup

a. kill

แž”แž‰แŸ’แžˆแž”แŸ‹แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŽแžถแž˜แžฝแž™แžŠแŸ„แž™ ID

kill PID

b. killall

แž”แž‰แŸ’แžˆแž”แŸ‹แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŽแžถแž˜แžฝแž™แžŠแŸ„แž™แžˆแŸ’แž˜แŸ„แŸ‡

killall processname

c. &

แžŸแž‰แŸ’แž‰แžถ & แž—แžถแŸ’แž‡แž”แŸ‹แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž”แž“แŸ’แžแŸ‚แž˜แž•แŸ’แžŸแŸแž„แž‘แŸ€แž

command &

d. nohup

nohup แž˜แž€แž–แžธแž–แžถแž€แŸ’แž™ "No Hang Up" แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แž‰แŸ’แž‡แžถแžฌแžŠแŸ†แžŽแžพแžšแž€แžถแžš script แžŽแžถแž˜แžฝแž™แžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžœแžถแž“แžนแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžšแž แžผแžแž‘แŸ„แŸ‡แž”แžธแžขแŸ’แž“แž€แž”แžถแž“แž…แžถแž€แž…แŸแž‰แž€แŸแžŠแŸ„แž™แŸ”

nohup command

แž—แŸ’แž‡แžถแž”แŸ‹แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžŠแŸ„แž™แžŸแž‰แŸ’แž‰แžถ & แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžแžถแž„แž€แŸ’แžšแŸ„แž™

nohup command &

2. Basic Shell Programming

แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ†แž”แžผแž„แžŠแŸ‚แž›แžขแŸ’แž“แž€แž“แžนแž„แžแŸ’แžšแžผแžœแžŸแžšแžŸแŸแžšแž‡แžถ script แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž แŸ…แžแžถ shebang แŸ” แž”แž“แŸ’แž‘แžถแžแŸ‹ script แž“แŸแŸ‡แžœแžถแžขแžถแž…แž˜แžถแž“แžŸแž˜แžแŸ’แžแž—แžถแž–แžŠแŸ†แžŽแžพแžš script แžŠแŸ„แž™แž˜แžทแž“แž…แŸ†แž”แžถแž…แŸ‹แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ sh, bash, python, php etc แž“แŸ…แžแžถแž„แžŠแžพแž˜แž€แŸ’แž“แžปแž„แž•แŸ’แž‘แžถแŸ†แž„แž–แžŽแŸŒแžแŸ’แž˜แŸ…แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแž€แžถแžšแž”แž‰แŸ’แž‡แžถแž‘แŸ€แžแžกแžพแž™แŸ”

#!/usr/bin/env bash

2.1. Variables

แž€แžถแžšแž”แž„แŸ’แž€แžพแžแžขแžแŸแžšแž“แŸ…แž€แŸ’แž“แžปแž„ bash แž‚แžบแžŸแŸ’แžšแžŠแŸ€แž„แž“แžนแž„แž—แžถแžŸแžถแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ” แžœแžถแž˜แžทแž“แž˜แžถแž“แž”แŸ’แžšแž—แŸแž‘แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‘แŸ แžขแžแŸแžšแž€แŸ’แž“แžปแž„แž”แŸŠแŸ’แž›แžปแž€แžขแžถแž…แž˜แžถแž“แž›แŸแžแžแžฝแžขแž€แŸ’แžŸแžšแŸ” แžขแŸ’แž“แž€แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž”แŸ’แžšแž€แžถแžŸแž”แŸ’แžšแž—แŸแž‘แžขแžแŸแžšแž‘แŸแž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž•แŸ’แžแž›แŸ‹แžแž˜แŸ’แž›แŸƒแž‘แŸ…แžœแžถ แžœแžถแž“แžนแž„แž”แž„แŸ’แž€แžพแžแžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แŸ”

แžงแž‘แžถแž แžšแžŽแŸแŸ–

str="hello world"

แžแžถแž„แž›แžพแž“แŸแŸ‡แž‡แžถแž€แžถแžšแž”แž„แŸ’แž€แžพแžแžขแžแŸแžš str แžŠแŸ‚แž›แž˜แžถแž“แžแž˜แŸ’แž›แŸƒ "hello world"แŸ” แž€แŸ’แž“แžปแž„แž€แžถแžšแž™แž€แž˜แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแŸ’แž“แž€แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แžŠแžถแž€แŸ‹แžŸแž‰แŸ’แž‰แžถ $ แž“แŸ…แžแžถแž„แžŠแžพแž˜แžขแžแŸแžšแž‡แžถแž€แžถแžšแžŸแŸ’แžšแŸแž…แŸ”

แžงแž‘แžถแž แžšแžŽแŸแŸ–

echo $str   # hello world

2.2. Array

แžœแžถแž€แŸแžŠแžผแž…แž‡แžถแž—แžถแžŸแžถแžŠแž‘แŸƒแžŠแŸ‚แžšแž‚แžบแž˜แžถแž“ array แžŠแžผแž…แž‚แŸ’แž“แžถแŸ” Array แž˜แžฝแž™แž™แžพแž„แž”แžถแž“แžŠแžนแž„แž แžพแž™แžœแžถแžขแžถแž…แž•แŸ’แž‘แžปแž€แžแž˜แŸ’แž›แŸƒแž‡แžถแž…แŸ’แžšแžพแž“แž€แŸ’แž“แžปแž„แžขแžแŸแžšแžแŸ‚แž˜แžฝแž™แžŠแŸ‚แž›แžœแžถแž˜แžถแž“แž‘แŸ†แž แŸ†แž˜แžทแž“แžขแžถแž…แž€แŸ†แžŽแžแŸ‹แž”แžถแž“แžกแžพแž™แŸ” Array แž“แŸ…แž€แŸ’แž“แžปแž„ bash แž€แŸแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž–แžธ index แž‘แžธแžŸแžผแž“แŸ’แž™แŸ” แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡แž‡แžถแžœแžทแž’แžธแž”แž„แŸ’แž€แžพแž array แž€แŸ’แž“แžปแž„ bash แŸ–

แžงแž‘แžถแž แžšแžŽแŸแŸ–

array[0]=val
array[1]=val
array[2]=val
array=([2]=val [0]=val [1]=val)
array=(val val val)

แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แžแž˜แŸ’แž›แŸƒแžŸแŸ’แžแžทแžแž“แŸ… index แžŽแžถแž˜แžฝแž™แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแžผแž…แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡

${array[i]}     # where i is the index

แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžทแž“แž”แžถแž“แžŠแžนแž„แž–แžธแž…แŸ†แž“แžฝแž“แž’แžถแžแžป array แžฌแž˜แžทแž“แžŠแžนแž„แžœแžถแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžŠแŸ„แž™แž˜แžถแž“ array แž”แŸ’แžšแžพแž…แŸ†แž“แžฝแž“แž›แŸ†แžŠแžถแž”แŸ‹แž›แŸแž index แž‘แžธแžŸแžผแž“แŸ’แž™แžฌแž“แŸ„แŸ‡แž‘แŸแŸ” แžŠแžพแž˜แŸ’แž”แžธแž‘แžถแž‰แž™แž€แžแž˜แŸ’แž›แŸƒแž€แŸ’แž“แžปแž„ array แž˜แž€แž”แŸ’แžšแžพแžŠแŸ„แž™แž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹แž”แŸ’แžšแž—แŸแž‘ index แžขแŸ’แž“แž€แžขแžถแž…แž’แŸ’แžœแžพแžแžถแž˜แžœแžทแž’แžธแžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ–

${#array[@]}

Bash แž€แŸแžŸแŸ’แž‚แžถแž›แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแž–แžทแžŸแŸแžŸแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แŸ” แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡แž‡แžถแžงแž‘แžถแž แžšแžŽแŸแŸ–

${varname:-word}    # if varname exists and isn't null, return its value; otherwise return word
${varname:=word}    # if varname exists and isn't null, return its value; otherwise set it word and then return its value
${varname:+word}    # if varname exists and isn't null, return word; otherwise return null
${varname:offset:length}    # performs substring expansion. It returns the substring of $varname starting at offset and up to length characters

2.3 String Substitution

แžŠแžพแž˜แŸ’แž”แžธแž–แžทแž“แžทแžแŸ’แž™ syntax แžšแž”แŸ€แž”แžšแŸ€แž”แž…แŸ†แž”แŸ’แžšแž—แŸแž‘ string

${variable#pattern}         # if the pattern matches the beginning of the variable's value, delete the shortest part that matches and return the rest
${variable##pattern}        # if the pattern matches the beginning of the variable's value, delete the longest part that matches and return the rest
${variable%pattern}         # if the pattern matches the end of the variable's value, delete the shortest part that matches and return the rest
${variable%%pattern}        # if the pattern matches the end of the variable's value, delete the longest part that matches and return the rest
${variable/pattern/string}  # the longest match to pattern in variable is replaced by string. Only the first match is replaced
${variable//pattern/string} # the longest match to pattern in variable is replaced by string. All matches are replaced
${#varname}     # returns the length of the value of the variable as a character string

2.4. Functions

แžŠแžผแž…แž‚แŸ’แž“แžถแž‘แŸ…แž“แžนแž„แž—แžถแžŸแžถแžŠแž‘แŸƒ แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž˜แžปแžแž„แžถแžš (function) แžŠแžพแž˜แŸ’แž”แžธแž”แŸ‚แž„แž…แŸ‚แž€แž‡แžถแž€แŸ’แžšแžปแž˜แž„แžถแž™แžŸแŸ’แžšแžฝแž›แž€แŸ’แž“แžปแž„แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž‘แŸ…แž€แžถแžšแž„แžถแžšแž•แŸ’แžŸแŸแž„แŸ—แŸ” แž€แžถแžšแž”แž„แŸ’แž€แžพแžแž˜แžปแžแž„แžถแžš (function) แž‚แžบแž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แžŸแžšแžŸแŸแžš แžˆแŸ’แž˜แŸ„แŸ‡แž˜แžปแžแž„แžถแžš { แž€แžผแžŠแž€แžถแžšแž„แžถแžš }แŸ” แž€แžถแžšแž แŸ…แž˜แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž˜แžปแžแž„แžถแžšแž“แŸ„แŸ‡แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž แŸ…แžˆแŸ’แž˜แŸ„แŸ‡แžšแž”แžŸแŸ‹แžœแžถแŸ”

function name() {
    shell commands
}

แžงแž‘แžถแž แžšแžŽแŸแŸ–

#!/bin/bash
function hello {
   echo world!
}
hello

function say {
    echo $1
}
say "hello world!"

แž–แŸแž›แžขแŸ’แž“แž€แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž แŸ…แžˆแŸ’แž˜แŸ„แŸ‡แž˜แžปแžแž„แžถแžšแžแžถ hello แž“แŸ„แŸ‡แžœแžถแž“แžนแž„แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž› "world!"แŸ” แž˜แžปแžแž„แžถแžšแž‘แžถแŸ†แž„แž‘แžธแž–แžธแžšแž˜แžถแž“ hello แž“แžทแž„ say แž€แŸแž‡แžถ function แžŠแžผแž…แž‚แŸ’แž“แžถแŸ” แž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถแžšแž”แžŸแŸ‹แž˜แžปแžแž„แžถแžšแž“แŸแŸ‡แž‚แžบ function say แžœแžถแžแŸ’แžšแžผแžœแž€แžถแžšแž”แŸ‰แžถแžšแŸ‰แžถแž˜แŸ‰แŸ‚แžแŸ’แžšแžŠแžพแž˜แŸ’แž”แžธแž™แž€แž‘แŸ…แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž›แž€แŸ’แž“แžปแž„แž˜แžปแžแž„แžถแžšแžšแž”แžŸแŸ‹แžแŸ’แž›แžฝแž“แžœแžถแž•แŸ’แž‘แžถแž›แŸ‹แŸ”

2.5. Conditionals

แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒ (Conditionals statement) แž€แŸ’แž“แžปแž„ bash แž‚แžบแžŸแŸ’แžšแžŠแŸ€แž„แž‘แŸ…แž“แžนแž„แž—แžถแžŸแžถแžŠแž‘แŸƒแžŠแŸ‚แžšแŸ” แž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแž˜แžถแž“แž…แŸ’แžšแžพแž“แž‘แž˜แŸ’แžšแž„แŸ‹แžŠแžผแž…แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž”แŸ†แž•แžปแžแž‚แžบ if แž”แŸ’แžšแžŸแžทแž“แž”แžพแž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแžœแžถแž“แžนแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžทแž…แŸ’แž…แžŠแŸ‚แž›แžŸแžทแŸ’แžแžแž“แŸ…แž€แŸ’แž“แžปแž„แžแŸ’แž›แžฝแž“แžœแžถแŸ”

if [ expression ]; then
    will execute only if expression is true
else
    will execute if expression is false
fi

แž”แŸ’แžšแžŸแžทแž“แž”แžพแžœแžถแž˜แžถแž“แž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแž…แŸ’แžšแžพแž“แžŸแŸ’แž˜แžปแž€แžŸแŸ’แž˜แžถแž‰ แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแž˜แžฝแž™แž‘แŸ€แžแž แŸ…แžแžถ case statementsแŸ”

case expression in
    pattern1 )
        statements ;;
    pattern2 )
        statements ;;
    ...
esac

แžงแž‘แžถแž แžšแžŽแŸแž›แŸแž€แŸ’แžแžแŸแžŽแŸ’แžŒแŸ–

statement1 && statement2  # both statements are true
statement1 || statement2  # at least one of the statements is true

str1=str2       # str1 matches str2
str1!=str2      # str1 does not match str2
str1<str2       # str1 is less than str2
str1>str2       # str1 is greater than str2
-n str1         # str1 is not null (has length greater than 0)
-z str1         # str1 is null (has length 0)

-a file         # file exists
-d file         # file exists and is a directory
-e file         # file exists; same -a
-f file         # file exists and is a regular file (i.e., not a directory or other special type of file)
-r file         # you have read permission
-s file         # file exists and is not empty
-w file         # you have write permission
-x file         # you have execute permission on file, or directory search permission if it is a directory
-N file         # file was modified since it was last read
-O file         # you own file
-G file         # file's group ID matches yours (or one of yours, if you are in multiple groups)

file1 -nt file2     # file1 is newer than file2
file1 -ot file2     # file1 is older than file2

-lt     # less than
-le     # less than or equal
-eq     # equal
-ge     # greater than or equal
-gt     # greater than
-ne     # not equal

2.6. Loops

แž€แžถแžšแžœแžทแž›แž‡แžปแŸ†แž˜แžถแž“แž”แžธแž”แŸ’แžšแž—แŸแž‘แž€แŸ’แž“แžปแž„ bash แž‚แžบ for, while แž“แžทแž„ until แŸ”

Different for Syntax:

for x := 1 to 10 do
begin
  statements
end

for name [in list]
do
  statements that can use $name
done

for (( initialisation ; ending condition ; update ))
do
  statements...
done

while Syntax:

while condition; do
  statements
done

until Syntax:

until condition; do
  statements
done

3. Tricks

Set an alias

แžŠแŸ†แžŽแžพแžšแž€แžถแžš nano ~/.bash_profile แž“แžทแž„แž”แž“แŸ’แžแŸ‚แž˜แž€แžผแžŠแž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„ editorแŸ–

alias dockerlogin='ssh www-data@adnan.local -p2222'  # add your alias in .bash_profile

To quickly go to a specific directory

แžŠแŸ†แžŽแžพแžšแž€แžถแžš nano ~/.bashrc แž“แžทแž„แž”แž“แŸ’แžแŸ‚แž˜แž€แžผแžŠแž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„ editorแŸ–

export hotellogs="/workspace/hotel-api/storage/logs"

แžขแŸ’แž“แž€แžขแžถแž…แžšแž€แŸ’แžŸแžถแž‘แžปแž€ path แžแžถแž„แž›แžพแž”แžถแž“แžŠแŸ„แž™แž”แŸ’แžšแžพแŸ–

source ~/.bashrc
cd $hotellogs

Re-execute the previous command

แžขแŸ’แž“แž€แžขแžถแž…แžแŸ’แžšแž›แž”แŸ‹แž‘แŸ…แž€แžถแž“แŸ‹แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž–แžธแž˜แžปแž“แŸ—แž”แžถแž“แžŠแŸ„แž™แž…แžปแž…แžŸแž‰แŸ’แž‰แžถ "แž–แŸ’แžšแžฝแž‰แžกแžพแž„แž›แžพ" แž“แŸ…แž›แžพแž€แŸ’แžแžถแžšแž…แžปแž… แžฌแž”แŸ’แžšแžพแžŸแž‰แŸ’แž‰แžถแžงแž‘แžถแž“แž–แžธแžšแž€แŸแžขแžถแž…แžแŸ’แžšแž›แž”แŸ‹แž‘แŸ…แž€แžถแž“แŸ‹แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž…แžถแžŸแŸ‹แž”แžถแž“แŸ”

!!

แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แžขแžถแž… errro แž‚แžบแžœแžถแžแŸ’แžšแžผแžœแž€แžถแžš sudo แžŠแžพแž˜แŸ’แž”แžธแž”แž‰แŸ’แž‡แžถแž‡แžถแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžŠแŸ‚แž›แž˜แžถแž“แžฏแž€แžŸแžทแž‘แŸ’แž’แžทแŸ” แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแžผแž…แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡แž”แžถแž“แŸ–

sudo !!

แžขแŸ’แž“แž€แž‚แžฝแžšแžแŸ‚แž”แŸ’แžแžผแžšแž€แžถแžšแžŸแžšแžŸแŸแžš mkdir somedir แž‘แŸ…แž‡แžถ sudo mkdir somedir แžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžŠแŸ‚แž›แž˜แžถแž“แžฏแž€แžŸแžทแž‘แŸ’แž’แžทแŸ”

Exit traps

แž€แžถแžšแžŸแžšแžŸแŸแžš script แž€แŸ’แž“แžปแž„ bash แžฑแŸ’แž™แž˜แžถแž“แž—แžถแž–แž„แžถแž™แžขแžถแž“แž˜แžถแž“แžŸแžŽแŸ’แžแžถแž”แŸ‹แž†แŸ’แž“แžถแž”แŸ‹แž“แžทแž„แžŸแŸ’แžขแžถแžแžŠแŸ‚แž›แž˜แžถแž“ comment แž–แŸแžแŸŒแž˜แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แŸ”

function finish {
  # your cleanup here. e.g. kill any forked processes
  jobs -p | xargs kill
}
trap finish EXIT

Saving your environment variables

แž–แŸแž›แžขแŸ’แž“แž€แž”แŸ’แžšแžพ export FOO = BAR แžขแžแŸแžšแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแžแŸ‚ export แžŠแžถแž€แŸ‹แž…แžผแž›แž‘แŸ… shell แž“แžทแž„ shell แž€แžผแž“แžŠแŸ‚แž›แž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’แž–แŸ’แžšแŸ„แŸ‡แž‡แŸ€แžŸแžœแžถแž„แž”แž‰แŸ’แž แžถแžแŸ’แž„แŸƒแž€แŸ’แžšแŸ„แž™แž—แŸ’แž›แŸแž… export แž…แžผแž› ~/.bash_profile แž–แŸแž›แžขแŸ’แž“แž€แž แŸ…แžขแžแŸแžšแžŽแžถแž˜แžฝแž™แž˜แžทแž“แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแž€แŸ’แž“แžปแž„ shell แž“แŸ„แŸ‡แŸ”

echo export FOO=BAR >> ~/.bash_profile

Accessing your scripts

แžขแŸ’แž“แž€แž„แžถแž™แžŸแŸ’แžšแžฝแž›แž€แŸ’แž“แžปแž„แž€แžถแžšแž…แžผแž›แž‘แŸ…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ script แžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแž€แŸ’แž“แžปแž„แžแžแžฏแž€แžŸแžถแžš bin แž€แŸ’แž“แžปแž„แž‘แŸ†แž–แŸแžšแžŠแžพแž˜แžŠแŸ„แž™ mkdir ~/bin แž–แŸ’แžšแŸ„แŸ‡แž‚แŸ’แžšแž”แŸ‹ script แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แžŸแŸ’แžแžทแžแž€แŸ’แž“แžปแž„แžแžแž“แŸแŸ‡แžœแžถแžขแžถแž…แž˜แžถแž“แžŸแžทแž‘แŸ’แž’แžทแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž‚แŸ’แžšแž”แŸ‹แžแžแž‘แžถแŸ†แž„แžขแžŸแŸ‹แŸ”

แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžทแž“แžขแžถแž…แž…แžผแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แžถแž“ แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แžผแžŠแžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡แž”แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„ ~/.bash_profile แž“แžทแž„แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž”แŸ’แžšแžพ command source ~/.bash_profile แŸ–

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

4. Debugging

แžขแŸ’แž“แž€แžขแžถแž… debug แž€แŸ’แž“แžปแž„ bash script แžŠแŸ„แž™แž”แž‰แŸ’แž…แžผแž›แž‡แž˜แŸ’แžšแžพแžŸแž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถแž‘แŸ…แž€แŸ’แž“แžปแž„ bash commandแŸ” แžงแž‘แžถแž แžšแžŽแŸ -n แžœแžถแž“แžนแž„แž˜แžทแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžถแžšแž”แž‰แŸ’แž‡แžถแž‘แŸ แž“แžทแž„แž–แžทแž“แžทแžแŸ’แž™ syntax แžŠแŸ‚แž› errorแŸ” -vecho commands แž˜แžปแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžš commandแŸ” -x echo commands แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธ command-line แž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ”

bash -n scriptname
bash -v scriptname
bash -x scriptname

Contribution

  • แžšแžถแž™แž€แžถแžšแžŽแŸแž–แžธแž”แž‰แŸ’แž แžถ How to
  • แž•แŸ’แž‰แžพ pull request แž”แžพแžŸแžทแž“แž˜แžถแž“แž€แŸ†แžŽแŸ‚แž‘แž˜แŸ’แžšแž„แŸ‹ How to
  • แž•แŸ’แžŸแž–แŸ’แžœแž•แŸ’แžŸแžถแž™

Translation

License

License: CC BY 4.0

About

A guide to learn bash

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors