Bash Command ที่ควรรู้สำหรับ Data Scientist
หากคุณเคยใช้ OS อื่นไม่ใช่ Windows คงเคยได้ใช้ Bash กันมาก่อนอย่างแน่นอนไม่มากก็น้อย
Bash หรือ Bourne Again Shell เป็น default shell ในหลายๆ Linux Distribution ที่เรารู้จักกันดีเช่น Ubuntu กับบน Apple macOS (แต่หลังจาก macOS Catalina ก็เปลี่ยนมาใช้ zsh แทนแล้ว)
แต่ถึงอย่างนั้นผมก็คิดว่าเราควรเรียน Bash Scripting แบบเบื้องต้นกันไว้บ้าง เพราะมันมากับในหลายๆ OS ซึ่งจะทำให้เราสามารถใช้งานมันได้เลยโดยไม่ต้องลงอะไรเพื่มเลย
สำหรับการทำงานในสาย Data Scientist หรือ Data Engineer เราต้องทำการอ่าน Data แก้ไข ทำความเข้าไฟล์ตลอด บางทีไฟล์นั้นอาจจะไม่ได้อยู่ในเครื่องของคุณ แต่อยู่ใน Server ที่สามารถเข้าถึงได้โดยใช้ Command Line เท่านั้น มีโอกาสสูงที่โปรแกรมที่คุณเปิดเข้าไปเจอจะเป็น Bash
Basic Commands
1. การเปิด Manual
man
: หรือ manual เป็นคำสั่งที่ทุกคนควรรู้ มันคือคำสั่งที่เราสามารถพิมพ์ man <ชื่อ command>
เพื่อดู manual สำหรับ command นั้น ถ้าตอนนี้คุณยังไม่รู้จะพิมพ์ command อะไร ลองพิมพ์ man man
เพื่อดู manual ของ command man ก่อนก็ได้
กด q เพื่อออกจาก man page และสำหรับการ search คุณสามารถพิมพ์ /<สิ่งที่ต้องการ search>
เช่น /whatis
โดยสามารถกด n
เพื่อไปที่ match อันต่อไป หรือกด Shift+n
เพื่อกลับมา match ก่อนหน้า
2. การเปลี่ยนและดูข้อมูลของ Working directory
pwd
: เวลาเราอยากรู้ว่าตอนนี้เราอยู่ที่ directory (folder) ไหน คุณสามารถพิมพ์ pwd
เข้าไปใน bash แล้ว bash ก็จะตอบกลับมาเป็น Full path ของ directory ที่เราอยู่
ในที่นี้ผมอยู่ใน Folder home ของ macOS ซึ่งจะเรื่มต้นด้วย /Users/
ls
: สำหรับดูว่าใน Working directory มีไฟล์อะไรบ้าง คุณสามารถพิมพ์ ls
เพื่อแสดงรายชื่อของไฟล์ สำหรับดูไฟล์ให้ระเอียดมากยิ่งขึ้นสามารถพิมพ์ ls -l
หรือจะพิมพ์ ls -la
หากคุณต้องการแสดงไฟล์ที่เรื่มต้นด้วย . ด้วย
cd
: สำหรับการเปลี่ยน folder คุณสามารถทำการ cd <fullpath>
หรือทำการ cd แบบ relative ได้โดยการทำ cd ./<relative_folder>
หรือ cd ../
เพื่อออกไป folder ก่อนหน้า
3. การอ่านและหาข้อมูลในไฟล์
cat
: สำหรับการเปิดอ่านไฟล์ เช่น cat data.txt
bash ก็จะทำการปรินต์ตัวอักษรใน data.txt ออกมา
grep
: สำหรับการหาบรรทัดโดยใช้ regular expression สำหรับคนที่ไม่รู้ regular expression ให้ลองไปเล่นที่เว็บไซต์ regex101 ตัวอย่างเช่นเราต้องการหาบรรทัดที่มีคำว่า Bangkok ในไฟล์ data.txt เราสามารถทำการพิมพ์ cat data.txt | grep "Bangkok"
สิ่งที่เราทำตอนนี้คืออ่าน data จากไฟล์ data.txt ผ่าน command cat และทำการ pipe (การโยนข้อมูล) เข้าไปที่ command grep
head
: ถ้าเราต้องการอ่านบรรทัดแรกของไฟล์เราสามารถทำการพิมพ์ head -n <จำนวนบรรทัดที่ต้องการอ่าน> <ชื่อไฟล์>
เช่น head -n 5 data.txt
หรือจะ pipe เข้ามาก็ได้ cat data.txt | head -n 5
tail
: เหมือน head ด้านบน แต่อ่านจากบรรทัดล่างสุด
wc
: นับคำ -w นับบรรทัด -l หรือนับตัวอักษร -m เช่นหากคุณต้องการนับบรรทัดในไฟล์คุณสามารถพิมพ์ wc -l data.txt
หรือจะ pipe เข้ามาเหมือนเดิมก็ได้
sed
: อ่านและแก้ไขไฟล์โดยใช้ regular expression เช่นหากคุณต้องการเปลี่ยนคำว่า hi เป็น hello ในไฟล์ data คุณสามารถทำการพิมพ์ sed "s/hi/hello/g" data.txt
หลังจากนั้นคุณสามารถ redirect output เข้าไฟล์ได้ด้วยการต่อท้ายด้วย sed "s/hi/hello/g" data.txt > output.txt
หรือจะใช้ -i ก็ได้ sed -i "s/hi/hello/g" data.txt
สุดท้าย Bash ยังสามารถทำอะไรได้อีกเยอะ ไว้ว่างๆจะมาเขียนเรื่อง Bash Scripting ต่อนะครับ ระหว่างนี้สามารถเข้าไป Command Bash ทั้งหมดได้ที่ลิงค์นี้ครับ