- 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 - Basic Shell Programming
2.1. Variables
2.2. Array
2.3. String Substitution
2.4. Functions
2.5. Conditionals
2.6. Loops - Tricks
- Debugging
ប្រើសម្រាប់បង្ហាញអំពីមជ្ឈដ្ឋាន 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
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
whereis សម្រាប់អនុវត្តស្វែងរកប្រភពឯកសារ និង ទំព័រពាក់ព័ន្ធដែលបានដំឡើងប្រើប្រាស់នៅក្នុងប្រព័ន្ធស្វ័យប្រវត្តិ។
whereis name
ឧទាហរណ៍៖
$ whereis php
/usr/bin/php
which សម្រាប់អនុវត្តស្វែងរកទីតាំងតាមមជ្ឈដ្ឋាន variable ស្ថិតនៅ។ វានឹងបង្ហាញគ្រប់ទីតាំងដែលពាក់ព័ន្ធការអនុវត្តខាងលើ។
which program_name
ឧទាហរណ៍:
$ which php
/c/xampp/php/php
វាសម្រាប់សម្អាតអត្ថបទដែលមាននៅលើអេក្រង់បង្ហាញ window ។
cat | chmod | chown | cp | diff | file | find | gunzip | gzcat | gzip | head |
lpq | lpr | lprm | ls | more | mv | rm | tail | touch |
វាឃើញប្រើភាគច្រើននៅក្នុង UNIX ឬ Linux។
- សម្រាប់បង្ហាញ អក្សរ លើអេក្រង់
- សម្រាប់ចម្លងអត្ថបទឯកសារ
- សម្រាប់បញ្ចូលអត្ថបទឯកសារ
- សម្រាប់បង្កើតអត្ថបទឯកសារថ្មី
cat filename
cat file1 file2
cat file1 file2 > newcombinedfile
cat < file1 > file2 #copy file1 to file2
chmod ដែលមកពីពាក្យ "change mode" ដែលអនុញ្ញាតឱ្យអ្នកអាចប្តូរម៉ូដឯកសារ read write ឬ execute លើឯកសារនិងថតឯកសារ។ សម្រាប់ព័ត៌មានលម្អិតលោកអ្នកអាចអានក្នុង តំណភា្ជប់នេះបាន ។
chmod -options filename
chown ដែលមកពីពាក្យ "change owner" ដែលអនុញ្ញាតឱ្យអ្នកអាចប្តូរម្ចាស់កម្មសិទ្ធិលើឯកសារឬថតឯកសារណាមួយបាន ដែលត្រូវបានកំណត់ជា user ឬ group។ ការប្រើប្រាស់ភាគច្រើនគឺអនុញ្ញាតពី user មួយទៅ group មួយទៀតដើម្បីមានសិទ្ធិចូលមកប្រើប្រាស់ដែរ។
chown -options user:group filename
សម្រាប់ចម្លងឯកសារពីកន្លែងមួយទៅកន្លែងណាមួយផ្សេងទៀត។
cp filename1 filename2
filename1
ត្រូវតែជាទីតាំងរួមឈ្មោះឯកសារ និង filename2
ជាទីតាំងរួមទាំងឈ្មោះឯកសារដែលលោកអ្នកចង់ចម្លងទៅ។
សម្រាប់ប្រៀបធៀបឯកសារ និងបង្ហាញបញ្ជីពីភាពខុសគ្នានៃឯកសារ។
diff filename1 filename2
សម្រាប់កំណត់ប្រភេទឯកសារ។
file filename
ឧទាហរណ៍៖
$ file index.html
index.html: HTML document, ASCII text
សម្រាប់ស្វែងរកឯកសារនិងទីតាំងណាមួយ។
find directory options pattern
ឧទាហរណ៍៖
$ find . -name README.md
$ find /home/user1 -name '*.png'
សម្រាប់ពន្លាឯកសារដែលបានបង្រួមដោយ gzip ។
gunzip filename
អនុញ្ញាតឱ្យអ្នកមើលឯកសារ gzipped ដោយមិនចាំបាច់មាន gunzip ។
gzcat filename
សម្រាប់បង្រួមឯកសារ។
gzip filename
សម្រាប់បង្ហាញអត្ថបទ ១០បន្ទាត់ដំបូងក្នុងឯកសារ។
head filename
ពិនិត្យមើលលទ្ធផលបង្ហាញជាជួរៗ។
lpq
ឧទាហរណ៍៖
$ lpq
Rank Owner Job File(s) Total Size
active adnanad 59 demo 399360 bytes
1st adnanad 60 (stdin) 0 bytes
សម្រាប់បង្ហាញលទ្ធផលឯកសារ។
lpr filename
សម្រាប់លុបអ្វីមួយពីលទ្ធផលបង្ហាញជាជួរនោះ។
lprm jobnumber
សម្រាប់បង្ហាញឯកសារជាបញ្ជី។ 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
សម្រាប់បង្ហាញផ្នែកដំបូងនៃឯកសារ (លោកអ្នកអាចរំកិលចុះក្រោមដោយប្រើ space
ឬចុច q
ដើម្បីបញ្ចប់)។
more filename
សម្រាប់ផ្លាស់ប្តូរទីតាំងឯកសារទៅកន្លែងផ្សេងមួយទៀត។
mv filename1 filename2
filename1
ត្រូវតែជាទីតាំងរួមឈ្មោះឯកសារ និង filename2
ជាទីតាំងរួមទាំងឈ្មោះឯកសារដែលលោកអ្នកចង់ផ្លាស់ប្តូរទៅ។
វាក៏អាចប្រើសម្រាប់កែឈ្មោះឯកសារផងដែរ។
mv old_name new_name
សម្រាប់លុបចេញឯកសារ។ ការប្រើប្រាស់ command
នេះនៅលើថតឯកសារផ្តល់ឱ្យអ្នកនូវកំហុស។
rm: directory: is a directory
ដើម្បីលុបថតឯកសារអ្នកត្រូវប្រើ -r
ដែលនឹងលុបអត្ថបទវិលជុំ(recursive)។ ជម្រើសផ្សេងអ្នកអាចប្រើ -f
សម្រាប់បង្ខំ(force) ឱ្យលុបដោយគ្មានការបញ្ជាក់ណាមួយ។
rm filename
សម្រាប់បង្ហាញលទ្ធផលនៃឯកសារចំនួន ១០ បន្ទាត់ចុងក្រោយ។ -f
ដើម្បីបង្ហាញទិន្នន័យបន្ថែមនៅពេលឯកសារនោះ។
tail filename
ការបង្កើតឯកសារថ្មី និងការផ្លាស់ប្តូរពេលវេលានៃឯកសាររបស់អ្នក។ ប្រសិនបើវាមិនមានជាន់ឈ្មោះឯកសារណាមួយទេ វានឹងត្រូវបានបង្កើតឡើង។
touch filename
ឧទាហរណ៍:
$ touch trick.md
awk | cut | echo | egrep | fgrep | fmt | grep | nl | sed | sort |
tr | uniq | wc |
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
អ្នកអាចអានក្នុង តំណភា្ជប់នេះបាន ។
ការលុបផ្នែកណាមួយក្នុងឯកសារ។
example.txt
red riding hood went to the park to play
ដើម្បីបង្ហាញជួរឈរទី២ ៧ និង ៩ ដែលមានដកឃ្លាទុក
cut -d " " -f2,7,9 example.txt
riding park play
បង្ហាញអត្ថបទមួយបន្ទាត់
បង្ហាញ "Hello World"
echo Hello World
Hello World
បង្ហាញ "Hello World" ចុះបន្ទាត់ថ្មីក្នុងមួយពាក្យៗ
echo -ne "Hello\nWorld\n"
Hello
World
បង្ហាញអត្ថបទជាបន្ទាត់ដែលតាមលំនាំ - ការមតិបន្ថែម (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
បង្ហាញអត្ថបទបន្ទាត់ដែលតាមលំនាំ - ការផ្គូផ្គងលំនាំ 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)
ទម្រង់អក្សរមានលំដាប់
ឧទាហរណ៍: 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.
វែងរកពាក្យក្នុងអត្ថបទឯកសារមួយ អ្នកអាចប្រើប្រាស់ 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
អ្នកអាចអានក្នុង តំណភា្ជប់នេះបាន ។
ជាចំនួនបន្ទាត់អត្ថបទក្នុងឯកសារមួយ។
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.
កំណែទម្រង់អត្ថបទដោយផ្ទាល់សម្រាប់ការបំលែងអត្ថបទ
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
តម្រៀបលំដាប់អត្ថបទអក្សរជាបន្ទាត់
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
បំលែងឬលុបអក្សរ
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!
រាយការណ៍ឬលុបចោលជួរមានអក្សរដដែលៗ
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
បង្ហាញប្រាប់អ្នកចំនួនបន្ទាត់ ពាក្យ និងពញ្ជនៈដែលមានក្នុងឯកសារ។
wc filename
ឧទាហរណ៍៖
$ wc demo.txt
7459 15915 398400 demo.txt
7459
ចំនួនបន្ទាត់ 15915
ចំនួនពាក្យ និង 398400
ពញ្ជនៈ។
cd | mkdir | pwd |
អ្នកអាចផ្លាស់ប្តូរពីទីតាំងមួយទៅទីតំាងផ្សេងទៀតដោយប្រើ
$ cd
ផ្លាស់ប្តូរអ្នកពីទីតាំងដើមទៅទីតាំង dirname
ជាទីតាំងអ្នកប្តូរទៅ
cd dirname
បង្កើតថតថ្មី
mkdir dirname
អ្នកអាចបង្កើតថតថ្មីច្រើនក្នុងការបញ្ជាតែម្តងក្នុងថតដែលអ្នកស្ថិតនៅ
mkdir 1stDirectory 2ndDirectory 3rdDirectory
អ្នកអាចបង្កើតថតថ្មីទៅលើថតដែលអ្នកមិនស្ថិតនៅ។ ឧទាហរណ៍ អ្នកចង់បង្កើតថត 'project1' ក្នុង '/samples/bash/projects/' ដែលអ្នកបានស្ថិតនៅកន្លែងនោះ៖
mkdir /samples/bash/projects/project1
ប្រើថតដែលអ្នកបង្កើតនោះមិនជាន់ឈ្មោះនោះទេ វានឹងបង្កើតថតនោះឱ្យអ្នក
សម្រាប់ប្រាប់ទីតាំងបច្ចុប្បន្នដែលអ្នកស្ថិតនៅ។
pwd
bg | cal | date | df | dig | du | fg | finger | jobs | last |
man | passwd | ping | ps | quota | scp | ssh | top | uname | uptime |
w | wget | whoami | whois |
បញ្ជីការបញ្ឈប់ឬការងារដែលបានដំណើរការនៅខាងក្រោយ ការផ្អាក់ដំណើរការការងារបានដំណើរការនៅខាងក្រោយ។
បង្ហាញប្រតិទិនរបស់ខែនេះ
បង្ហាញថ្ងៃខែ និងម៉ោងបច្ចុប្បន្ន
បង្ហាញទិន្នន័យការប្រើប្រាស់ ឌីស
បង្ហាញព័ត៌មានឈ្មោះ DNS
dig domain
បង្ហាញទិន្នន័យការប្រើប្រាស់ឌីសនៃឯកសារឬថតសារ។ សម្រាប់ព័ត៌មានលម្អិតការប្រើប្រាស់ អ្នកអាចអានក្នុង តំណភា្ជប់នេះបាន ។
du [option] [filename|directory]
ជម្រើសបន្ថែម៖
-h
(human readable) បង្ហាញលទ្ធផលគិតជា គីឡូបៃត៍ (kilobytes - K) មេហ្គាបៃខ្នាត (Megabytes - M) និង ជីហ្គាបៃខ្នាត (Gigabytes - G)-s
(supress or summarize) បង្ហាញទិន្នន័យសរុបឌីសនៃថតឯកសារ និង របាយការណ៍សម្រាប់ថតរង
ឧទាហរណ៍៖
du -sh pictures
1.4M pictures
នាំមកនូវការងារថ្មីៗមកនៅផ្ទៃខាងមុខ។
បង្ហាញព័ត៌មានអំពីអ្នកប្រើប្រាស់ user ។
finger username
បង្ហាញបញ្ជីការងារនិងចំនួនដែលកំពុងដំណើរនៅខាងក្រោយ។
បង្ហាញទិន្នន័យចំនួនបានចូលប្រើប្រាស់របស់អ្នកប្រើប្រាស់ user
last yourUsername
បង្ហាញសៀវភៅណែនាំសម្រាប់ពាក្យបញ្ជាដែលបានបញ្ជាក់។
man command
អនុញ្ញាតឱ្យអ្នកកំពុងប្រើប្រាស់អាចប្តូរលេខសម្ងាត់
Ping host និងបង្ហាញលទ្ធផល
ping host
បង្ហាញកម្មវិធីកំពុងដំណើរការ
ps -u yourusername
បង្ហាញព័ត៌មានលម្អិតពីបញ្ជីនីមួយៗដែលប្រើប្រាស់ flag
ps -ef
បង្ហាញតាឌីសរបស់អ្នក
quota -v
ផ្ទេរឯកសាររវាងម៉ាស៊ីនប្រើប្រាស់និងម៉ាស៊ីនបញ្ជាចម្ងាយឬរវាងម៉ាស៊ីនពីបញ្ជាពីចម្ងាយពីរ។
ចម្លងពីម៉ាស៊ីនប្រើប្រាស់ទៅម៉ាស៊ីនបញ្ជាពីចម្ងាយ
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
shh (SSH client) គឺជាកម្មវិធីមួយសម្រាប់ចូលប្រើប្រាស់និងដំណើរការការបញ្ជាទៅកាន់ម៉ាស៊ីនបញ្ជាពីចម្ងាយ។
ssh user@host
ការបញ្ជានេះមានជម្រើសបន្ថែម -p
ដែលអាចប្រើប្រាស់សម្រាប់ភ្ជាប់ប្រើប្រាស់ Port ណាមួយបាន
ssh -p port user@host
បង្ហាញពីដំណើរការបច្ចុប្បន្នរបស់អ្នក
បង្ហាញពីព័ត៌មាន kernel
uname -a
បង្ហាញពីពេលវេលាបច្ចុប្បន្នប្រើប្រាស់កុំព្យូទ័រ
បង្ហាញនរណាដែលអាចចូលប្រើប្រាស់បាន
សម្រាប់ទាញយកឯកសារ
wget file
បង្ហាញពីឈ្មោះអ្នកដែលកំពុងប្រើប្រាស់បច្ចុប្បន្ន
បង្ហាញព័ត៌មានម្ចាស់ domain
whois domain
kill | killall | & | nohup |
បញ្ឈប់ការដំណើរការណាមួយដោយ ID
kill PID
បញ្ឈប់ការដំណើរការណាមួយដោយឈ្មោះ
killall processname
សញ្ញា &
ភា្ជប់ការបញ្ជាបន្ថែមផ្សេងទៀត
command &
nohup មកពីពាក្យ "No Hang Up" អនុញ្ញាតឱ្យអ្នកបញ្ជាឬដំណើរការ script ណាមួយដែលអ្នកបានកំណត់វានឹងដំណើរការរហូតទោះបីអ្នកបានចាកចេញក៏ដោយ។
nohup command
ភ្ជាប់ការដំណើរការផ្សេងទៀតដោយសញ្ញា &
ដើម្បីបង្កើតការដំណើរការខាងក្រោយ
nohup command &
បន្ទាត់ដំបូងដែលអ្នកនឹងត្រូវសរសេរជា script
ត្រូវបានគេហៅថា shebang
។ បន្ទាត់ script
នេះវាអាចមានសមត្ថភាពដំណើរ script
ដោយមិនចំបាច់ប្រើប្រាស់ sh
, bash
, python
, php
etc នៅខាងដើមក្នុងផ្ទាំងពណ៌ខ្មៅដើម្បីធ្វើការបញ្ជាទៀតឡើយ។
#!/usr/bin/env bash
ការបង្កើតអថេរនៅក្នុង bash គឺស្រដៀងនឹងភាសាផ្សេងទៀត។ វាមិនមានប្រភេទទិន្នន័យទេ អថេរក្នុងប៊្លុកអាចមានលេខតួអក្សរ។ អ្នកមិនចាំបាច់ប្រកាសប្រភេទអថេរទេគ្រាន់តែផ្តល់តម្លៃទៅវា វានឹងបង្កើតដោយខ្លួនឯង។
ឧទាហរណ៍៖
str="hello world"
ខាងលើនេះជាការបង្កើតអថេរ str
ដែលមានតម្លៃ "hello world"។ ក្នុងការយកមកប្រើប្រាស់អ្នកគ្រាន់តែដាក់សញ្ញា $
នៅខាងដើមអថេរជាការស្រេច។
ឧទាហរណ៍៖
echo $str # hello world
វាក៏ដូចជាភាសាដទៃដែរគឺមាន 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
ដើម្បីពិនិត្យ 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
ដូចគ្នាទៅនឹងភាសាដទៃ អ្នកអាចប្រើប្រាស់មុខងារ (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 វាត្រូវការប៉ារ៉ាម៉ែត្រដើម្បីយកទៅបង្ហាញលទ្ធផលក្នុងមុខងាររបស់ខ្លួនវាផ្ទាល់។
ការគ្រប់គ្រងល័ក្ខខ័ណ្ឌ (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
ការវិលជុំមានបីប្រភេទក្នុង 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
ដំណើរការ nano ~/.bash_profile
និងបន្ថែមកូដចូលទៅក្នុង editor៖
alias dockerlogin='ssh www-data@adnan.local -p2222' # add your alias in .bash_profile
ដំណើរការ nano ~/.bashrc
និងបន្ថែមកូដចូលទៅក្នុង editor៖
export hotellogs="/workspace/hotel-api/storage/logs"
អ្នកអាចរក្សាទុក path ខាងលើបានដោយប្រើ៖
source ~/.bashrc
cd $hotellogs
អ្នកអាចត្រលប់ទៅកាន់ការបញ្ជាពីមុនៗបានដោយចុចសញ្ញា "ព្រួញឡើងលើ" នៅលើក្តារចុច ឬប្រើសញ្ញាឧទានពីរក៏អាចត្រលប់ទៅកាន់ការបញ្ជាចាស់បាន។
!!
ការបញ្ជាមួយចំនួនអាច errro គឺវាត្រូវការ sudo
ដើម្បីបញ្ជាជាប្រតិបត្តិដែលមានឯកសិទ្ធិ។ អ្នកអាចប្រើប្រាស់ដូចខាងក្រោមនេះបាន៖
sudo !!
អ្នកគួរតែប្តូរការសរសេរ mkdir somedir
ទៅជា sudo mkdir somedir
ដែលទាក់ទងនឹងប្រតិបត្តិដែលមានឯកសិទ្ធិ។
ការសរសេរ script ក្នុង bash ឱ្យមានភាពងាយអានមានសណ្តាប់ឆ្នាប់និងស្អាតដែលមាន comment ព័ត៌មានបន្ថែម។
function finish {
# your cleanup here. e.g. kill any forked processes
jobs -p | xargs kill
}
trap finish EXIT
ពេលអ្នកប្រើ export FOO = BAR
អថេររបស់អ្នកត្រូវតែ export ដាក់ចូលទៅ shell និង shell កូនដែលពាក់ព័ន្ធព្រោះជៀសវាងបញ្ហាថ្ងៃក្រោយភ្លេច export ចូល ~/.bash_profile
ពេលអ្នកហៅអថេរណាមួយមិនត្រឹមត្រូវក្នុង shell នោះ។
echo export FOO=BAR >> ~/.bash_profile
អ្នកងាយស្រួលក្នុងការចូលទៅប្រើប្រាស់ 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
អ្នកអាច debug ក្នុង bash script ដោយបញ្ចូលជម្រើសផ្សេងគ្នាទៅក្នុង bash
command។ ឧទាហរណ៍ -n
វានឹងមិនដំណើរការការបញ្ជាទេ និងពិនិត្យ syntax ដែល error។ -v
echo commands មុនដំណើរការ command
។ -x
echo commands បន្ទាប់ពី command-line
បានដំណើរការ។
bash -n scriptname
bash -v scriptname
bash -x scriptname