- 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/.awswhatis សម្រាប់បង្ហាញព័ត៌មានបន្ថែមពី ការបញ្ជា ការបញ្ជា, ព្រឹតិ្តការណ៍, បណ្ណាល័យ , មុខងារនិង , ទំព័រពាក់ព័ន្ធ ។
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 kernelwhereis សម្រាប់អនុវត្តស្វែងរកប្រភពឯកសារ និង ទំព័រពាក់ព័ន្ធដែលបានដំឡើងប្រើប្រាស់នៅក្នុងប្រព័ន្ធស្វ័យប្រវត្តិ។
whereis nameឧទាហរណ៍៖
$ whereis php
/usr/bin/phpwhich សម្រាប់អនុវត្តស្វែងរកទីតាំងតាមមជ្ឈដ្ឋាន 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 file2chmod ដែលមកពីពាក្យ "change mode" ដែលអនុញ្ញាតឱ្យអ្នកអាចប្តូរម៉ូដឯកសារ read write ឬ execute លើឯកសារនិងថតឯកសារ។ សម្រាប់ព័ត៌មានលម្អិតលោកអ្នកអាចអានក្នុង តំណភា្ជប់នេះបាន ។
chmod -options filenamechown ដែលមកពីពាក្យ "change owner" ដែលអនុញ្ញាតឱ្យអ្នកអាចប្តូរម្ចាស់កម្មសិទ្ធិលើឯកសារឬថតឯកសារណាមួយបាន ដែលត្រូវបានកំណត់ជា user ឬ group។ ការប្រើប្រាស់ភាគច្រើនគឺអនុញ្ញាតពី user មួយទៅ group មួយទៀតដើម្បីមានសិទ្ធិចូលមកប្រើប្រាស់ដែរ។
chown -options user:group filenameសម្រាប់ចម្លងឯកសារពីកន្លែងមួយទៅកន្លែងណាមួយផ្សេងទៀត។
cp filename1 filename2filename1 ត្រូវតែជាទីតាំងរួមឈ្មោះឯកសារ និង 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 filename2filename1 ត្រូវតែជាទីតាំងរួមឈ្មោះឯកសារ និង 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.txtriding park playបង្ហាញអត្ថបទមួយបន្ទាត់
បង្ហាញ "Hello World"
echo Hello WorldHello 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.txtLorem 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.txtfoo (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 20Lorem 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.txtHello-This-is-a-Test-1-2-3-4ជំនួសគ្រប់លេខទាំងអស់ដោយអក្សរ "d"
sed 's/[0-9]/d/g' example.txtHello This is a Test d d d dតម្រៀបលំដាប់អត្ថបទអក្សរជាបន្ទាត់
example.txt
f
b
c
g
a
e
dsort example.txt
sort example.txta
b
c
d
e
f
gតម្រៀបលំដាប់អត្ថបទអក្សរដោយចៃដន្យក្នុងឯកសារ example.txt
sort example.txt | sort -Rb
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 | uniqa
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.txt7459 ចំនួនបន្ទាត់ 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_fileshh (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...
donewhile Syntax:
while condition; do
statements
doneuntil 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។ -vecho commands មុនដំណើរការ command។ -x echo commands បន្ទាប់ពី command-line បានដំណើរការ។
bash -n scriptname
bash -v scriptname
bash -x scriptname