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 out ឬ Destination 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, និងតាមដានការងាររបស់យើង។