មូលដ្ឋានគ្រឹះ bash command ដែលគួរដឹង

1 Comments

original post:https://www.kimkorngmao.com/notes/simple-guide-bash-commands-for-new-developers

យើង​ប្រាកដ​ជា​ធ្លាប់​ប្រើ GUI (Graphical User Interface)​ដើម្បី​សរសេរ​កូដ។ វា​ពិត​ជាងាយស្រួលមែន ក៏ប៉ុន្តែ​នៅ​ពេល​យើង​ចាប់ផ្ដើម​ធ្វើ​ការងារ​ពិតប្រាកដ ដូចជា​ធ្វើ​ប្រព័ន្ធ backend, deployment ឬ CI/CD​នោះយើង​នឹង​ត្រូវ​ការ​ប្រើ Terminal ជា​ចាំបាច់។

ការ​ប្រើប្រាស់ Terminal និង Bash commands គឺ​ជា​ជំនាញ​មួយ​ដែល​យើង​ចាំបាច់​ត្រូវ​ចេះ។

Command គោលៗដែលយើងគួរចេះ

មូលដ្ឋានគ្រឹះ & ការគ្រប់គ្រង File

  • pwd, ls, cd, touch, mkdir, rm, cat, less, head, tail, echo

ការស្វែងរក & កែប្រែ

  • grep, find, nano

ការគ្រប់គ្រង Git

  • git clone, git status, git log

ការចាត់ចែង Text

  • awk, sed, jq

ការ​ Call API & Networking

  • curl, ping, wget, netstat, lsof

1. មូលដ្ឋានគ្រឹះ និងការគ្រប់គ្រង File

pwd – យើងកំពុងនៅទីណា?

Command នេះ​បង្ហាញ​យើង​ពី path របស់​ Folder ដែល​យើង​កំពុង​នៅ។

pwd

ឩទាហរណ៍៖ /Users/yourname/projects/myapp

ls – មាន​អ្វី​ខ្លះ​នៅ​ទីនេះ?

Command នេះ​បង្ហាញ​គ្រប់ files និង folders ទាំងអស់​ដែល​មាន​ក្នុង directory ដែលយើងកំពុងនៅ។

ls # បង្ហាញ​ files និង folders ls -lah # បង្ហាញ​លម្អិត​នៃ files
  • -l ផ្តល់​ឱ្យ​យើង​នូវ​ព័ត៌មាន​លម្អិត (ដូចជា ទំហំ និង​កាលបរិច្ឆេទ)។
  • -a បង្ហាញ files ទាំងអស់ សូម្បីតែ file ដែល​ត្រូវបានលាក់ (file ដែល​ផ្តើម​ដោយ​សញ្ញា​ចុច . )។
  • -h ធ្វើ​ឱ្យ​ទំហំ file ងាយស្រួល​អានជាងមុន (ដូចជា KB ឬ MB)។

cd – Change Folder

ប្រើ​វា​ដើម្បី​ផ្លាស់ទី​ពី Folder មួយ​ទៅ Folder មួយ​ទៀត។

cd bash_cmd_learn # ចូល​ទៅ​ក្នុង Folder 'bash_cmd_learn' cd .. # ត្រឡប់​ទៅ Folder មុន (parent folder) cd - # ត្រឡប់​ទៅ Folder ចុងក្រោយ​ដែល​យើង​ទើប​តែ​ចេញ​មក

touch – បង្កើត File ទទេ

Command នេះ​បង្កើត file ថ្មី​មួយ​ដែល​គ្មាន​ content។

touch rean.txt # បង្កើត file ថ្មី​ឈ្មោះ rean.txt

បើ file ហ្នឹង​មាន​រួចហើយ Command នេះ​គ្រាន់តែ​ធ្វើបច្ចុប្បន្នភាព​ម៉ោង​របស់​វា​តែប៉ុណ្ណោះ។

mkdir – បង្កើត Folder ថ្មី

mkdir logs # បង្កើត Folder ថ្មី​ឈ្មោះ 'logs' mkdir -p data/db # បង្កើត Folder 'data' ហើយ​បន្ទាប់មក​បង្កើត Folder 'db' នៅ​ក្នុង​នោះ

-p ជា option ដែល​វា​បង្កើត parent folder ឱ្យ​យើង បើ​វា​មិន​ទាន់​មាន។

rm – លុប File ឬ Folder

rm rean.txt # លុប file rean.txt rm -rf logs/ # លុប Folder 'logs' និង​អ្វីៗ​ទាំងអស់​នៅ​ក្នុង​នោះ
  • -r មានន័យថា recursive គឺ​វា​នឹង​លុប​ទាំង Folder ទាំងមូល។
  • -f មានន័យថា force គឺ​វា​មិន​សួរ​យើង​ដើម្បី​បញ្ជាក់​ទេ។

ប្រយ័ត្ន​ជាមួយ​និង​ការ​ប្រើប្រាស់ rm -rf វា​នឹង​លុប​អ្វីៗ​គ្រប់យ៉ាង​ជា​អចិន្ត្រៃ។ 👾អត់​មាន undo ទេ។

cat – អាន File ទាំងមូល

Command នេះ​បង្ហាញ​ content ​ទាំងស្រុង​របស់ file មក​លើ​ Screen។ វា​ល្អ​សម្រាប់ file តូចៗ។

cat README.md

less – អាន File ម្ដង​មួយ​ទំព័រ

បើ file ណា​មួយ​វែង​ខ្លាំង យើង​គួរ​ប្រើ less។ វា​អាច​ឱ្យ​យើង​រំកិល​មើល​ទៅ​លើ​ឬ​ក្រោម​បាន។

less 2000_log_file.log

ចុច q ដើម្បី​ចេញ។

head និង tail – មើល​ផ្នែក​ខាង​ដើម ឬ​ខាង​ចុង​របស់ File

ពេលខ្លះ​យើង​គ្រាន់តែ​ចង់​មើល​ប៉ុន្មាន​បន្ទាត់​ដំបូង ឬ​ប៉ុន្មាន​បន្ទាត់​ចុងក្រោយ​ប៉ុណ្ណោះ។

head app.js # បង្ហាញ ១០ បន្ទាត់​ដំបូង tail app.js # បង្ហាញ ១០ បន្ទាត់​ចុងក្រោយ

echo – Print text

Command នេះ​ប្រើសម្រាប់បង្ហាញ​អក្សរ ឬ​តម្លៃ​របស់​អថេរ (variable)។

echo "សួស្ដី Developer" echo $HOME # បង្ហាញ path ទៅកាន់ home directory របស់​យើង

យើង​ក៏​អាច​ប្រើ​វា​ដើម្បី​សរសេរ​អក្សរ​ចូល​ទៅ​ក្នុង file ដែរ។

echo "PORT=8080" > .env # បង្កើត file ឈ្មោះ .env ជាមួយ​នឹង​អក្សរ​នេះ echo "DEBUG=true" >> .env # បន្ថែម​មួយ​បន្ទាត់​ថ្មី​ទៅ​ចុង​បញ្ចប់​នៃ file .env
  • > គឺ​សរសេរ​ Override ​លើ file ចាស់។
  • >> គឺ​បន្ថែម​ទៅ​បន្ទាត់​ចុង​ក្រោយ​នៃ file។

2. ការស្វែងរក និង កែប្រែ

grep – ស្វែងរក​ពាក្យ​នៅ​ក្នុង File

នេះ​ជា Command មួយ​ដែល​មាន​ប្រយោជន៍​បំផុត។ វា​ស្វែងរក​លំនាំ​នៃ​អក្សរ (pattern of text)។

# ស្វែងរក​ការ​ប្រើប្រាស់ async function ទាំងអស់​ក្នុង file .js grep "async function" *.js # ស្វែងរក​គ្រប់​បន្ទាត់​ដែល​ import modules (ES6 style) grep "^import" *.js

find – ស្វែងរក File ឬ Folder

ប្រើ​វា​ដើម្បី​ស្វែងរក file តាម​ឈ្មោះ ប្រភេទ ឬ​ទំហំ។

# ស្វែងរក JavaScript file ទាំងអស់​ក្នុង directory src/ និង subdirectories របស់​វា find ./src -name "*.js" # ស្វែងរក test file ទាំងអស់​ដែល​បញ្ចប់​ដោយ .test.js find . -type f -name "*.test.js"

nano – Editor នៅលើ Terminal

nano គឺ​ជា editor ដែល​ងាយស្រួល​ប្រើ​ ដែល​អាច​ឱ្យ​យើង​កែប្រែ file នៅ​ក្នុង terminal បាន។

nano index.js

Command នេះ​នឹង​បើក file index.js ឱ្យ​យើង​កែប្រែ។

  • ចុច Ctrl + O ដើម្បី​រក្សាទុក (Save)។
  • ចុច Ctrl + X ដើម្បី​ចេញ។

3. Command មូលដ្ឋាន​របស់ Git

ខាងក្រោម​នេះ​គឺ​ជា​ Command ដែល​យើង​ប្រើ​ញឹកញាប់​ជាងគេ។

  • git status - មើល​ថា​មាន file ណាខ្លះ​បាន​ផ្លាស់ប្តូរ។
  • git add <file> - ត្រៀម file សម្រាប់​រក្សាទុក។
  • git commit -m "Message" - រក្សាទុក​ការ​ផ្លាស់ប្ដូរ​របស់​យើង​ជាមួយ​នឹង​សារ​បញ្ជាក់។
  • git log --oneline - មើល​ប្រវត្តិ​នៃ​ការ​រក្សាទុក​ទាំងអស់​ដោយ​ខ្លីៗ។
  • git pull - ទាញ​យក​ការ​ផ្លាស់ប្ដូរ​ថ្មីៗ​ពី server។
  • git push - បញ្ជូន​ការ​ផ្លាស់ប្ដូរ​ដែល​យើង​បាន​រក្សាទុក​ទៅកាន់ server។
  • git clone <url> - ចម្លង​ project ពី server មក​កុំព្យូទ័រ​យើង។

4. ការចាត់ចែង Text

awk – ទាញ​យក​ទិន្នន័យ​ពី​ Column ណា​មួយ

ស្រមៃ​ថា​យើង​មាន log file មួយ​ដែល​ទិន្នន័យ​ត្រូវ​បាន​បែងចែក​ដោយ​ដកឃ្លា។ awk អាច​ជួយ​ដក​យក​តែ column ដែល​យើង​ចង់​បាន។

# ពី Node.js server log, បង្ហាញ​តែ column ទីមួយ (timestamp) awk '{print $1}' server.log # បង្ហាញ IP address បើ​វា​នៅ column ទីបី awk '{print $3}' server.log

sed – ស្វែងរក និង​ជំនួស​ពាក្យ

sed គឺ​សម្រាប់​ស្វែងរក និង​ជំនួស​ពាក្យ​នៅ​ក្នុង stream ឬ file។

# ជំនួស 'development' ដោយ 'production' ក្នុង file .env # Command នេះ​គ្រាន់តែ​បង្ហាញ​លទ្ធផល, មិន​កែប្រែ file ដើម​ទេ sed 's/development/production/g' .env # ដើម្បី​កែប្រែ file តែម្ដង, ប្រើ -i sed -i 's/development/production/g' .env

jq – ធ្វើការ​ជាមួយ JSON

បើ​យើង​ធ្វើការ​ជាមួយ API ឬ config file ដូចជា package.json, jq គឺ​ជា​tool​មួយ​សម្រាប់​ចាត់ចែង JSON។

# បង្ហាញ package.json ឱ្យ​ស្អាត​ dễមើល cat package.json | jq '.' # យក​តម្លៃ​របស់ field "name" ក្នុង package.json cat package.json | jq '.name' # យក​ឈ្មោះ dependency ទាំងអស់​ពី package.json cat package.json | jq '.dependencies | keys[]'

5. Command សម្រាប់ Network ដែល​យើង​គួរ​ចេះ

ping – តើ Server កំពុង​ដំណើរការ​អត់?

ប្រើ ping ដើម្បី​ពិនិត្យ​មើល​ថា​តើ​យើង​អាច​តភ្ជាប់​ទៅ server បាន​ឬ​អត់។

ping google.com # Ping ចំនួន ៤ ដង​ហើយ​ឈប់ ping -c 4 google.com

បើ​វា​ដំណើរការ, យើង​នឹង​ឃើញ​ការ​ឆ្លើយតប​ជាមួយ​នឹង​ពេល​វេលា (ឧទាហរណ៍: 64 bytes from ... time=23.4 ms)។ បើ​អត់​ទេ, យើង​នឹង​ទទួល​បាន error ដូចជា Request timed outDestination Host Unreachable

curl – ធ្វើការជាមួយ APIs

curl គឺ​ជា​tool ​សម្រាប់​តេស្ត API ពី command line។

# ផ្ញើ GET request ទៅកាន់ health check endpoint curl http://localhost:8080/health # ផ្ញើ POST request ជាមួយ​នឹង​ JSON curl -X POST http://localhost:8080/users \ -H "Content-Type: application/json" \ -d '{"name": "new dev"}'

wget – ទាញ​យក File

ប្រើ wget ដើម្បី​ទាញ​យក file ពី URL។

wget https://example.com/some-file.zip

lsof និង netstat – តើ​កម្មវិធី​អី​កំពុង​ប្រើ Port ហ្នឹង?

បើ​យើង​ជួប error ដូចជា "port already in use" Command ទាំងនេះ​អាច​ជួយ​បាន។

# បង្ហាញ​មើល តើ​កម្មវិធី​មួយ​ណា​កំពុង​ប្រើ port 8080 lsof -i :8080

វា​នឹង​បង្ហាញ​យើង​ពី​ឈ្មោះ command និង PID ដែល​កំពុង​ប្រើ port នោះ។ បន្ទាប់មក​យើង​អាច​ប្រើ kill ដើម្បី​បញ្ឈប់​វា​បើ​ចាំបាច់។


យើង​មិន​ចាំបាច់​ត្រូវ​ចងចាំ​ Command ទាំង​អស់​នេះ​ក្នុង​ពេល​តែ​មួយ​ទេ។ វិធី​ល្អ​បំផុត​ដើម្បី​រៀន​គឺ​ចាប់ផ្ដើម​ប្រើ​វា​ក្នុង project ពិតៗ​របស់​យើង។

ចាប់ផ្ដើម​ពី​អ្វី​ដែល​ងាយៗ​សិន៖ ដូចជា​ការ​ផ្លាស់ទី​រវាង Folders, កែ​ config file, ពិនិត្យមើល logs, ឬ​ដំណើរការ​កម្មវិធី​របស់​យើង។

ពេល​ដែល​យើង​ប្រើ​វា​បាន​ស៊ាំ​ដៃ​ហើយ, យើង​នឹង​ឃើញ​ថា command line គឺ​ជា​ឧបករណ៍ ដែល យើង​អាច​បង្កើត script ផ្ទាល់ខ្លួន​សម្រាប់​ការ​ test, deploy, និង​តាមដាន​ការងារ​របស់​យើង។

CHHANG Bunthorn
CHHANG Bunthorn commented

Good sharing bong