1.1 BIOS check I/O ว่าพร้อมทำงานหรือไม่
1.2 MBR (Master Boot Record) อยู่ที่ตำแหน่ง 0 x 0 มีหน้าที่ 2 อย่าง คือ
1.) เก็บตำแหน่ง Boot loader (ชี้บอกว่า boot loader อยู่ที่ไหน)
2.) บอกข้อมูลการแบ่ง Partition ของ harddisk
MBR ตัวนี้สำคัญมาก ถ้า harddisk ตรงส่วนที่เก็บข้อมูลนี้เสียไป จะหา boot loader ไม่เจอ หรือ จะไม่ได้สามารถ access partition ได้ เพราะมองไม่เห็น partition ไม่รู้ว่าตำแหน่งที่สั่งให้ไปดึงข้อมูลอยู่ตรงไหน (เหมือนไม่มีแผนที่ ไปไหนไม่ถูก)
1.3 GRUB Linux ใช้ Boot loader ที่ชื่อว่า GRUB (Grand Unified Boot Loader) Unified (หนึ่งเดียว) คือ โหลดได้ทั้ง Linux, Windows, iOS ได้หมด
1.4 Kernel จะเรียกอุปกรณ์ต่างๆ ที่จำเป็นมา เตรียมให้พร้อมใช้งาน เช่น wireless
kernel อยู่ที่ /boot/vmlinuz
สิ่งที่ kernel ทำสุดท้ายก็คือ สร้าง process ที่ 0 ขึ้นมา เราเรียกว่า init
1.5 init เมื่อ init เสร็จแล้ว จะได้ Parent Shell ขึ้นมา เพื่อรอคำสั่งทำงาน
ทุกครั้งที่มีการสั่ง run หรือเริ่มการทำงาน, shell จะ สร้าง parent terminal ขึ้นมา แต่ภายในนั้น จะประกอบไปด้วย script จำนวนมาก การ run แต่ละ script จะเปิด terminal ใหม่ขึ้นมา เราเรียกว่า child เมื่อ child ทำงานเสร็จ ก็จะส่งผลลัพธ์กลับไปที่ parent กระบวนการดังกล่าวเรียกว่า Folk
การ init, การสร้าง parent shell และ child เป็นข้อดีของ Linux อย่างหนึ่ง ในเรื่องของความปลอดภัย ดังนั้นถ้า child error เราก็เพียงปิด child ตัวนั้นไป และการรันแต่ละครั้งจะมี child เยอะมาก ถ้ามี virus ระบบจะเจ๋งก็ต่อเมือสามารถทำลาย parent ได้ แต่ยากที่จะหา parent เจอ
STDIN = Standard Input เช่น keyboard, mount
STDOUT = Standard Output เช่น monitor
4.1 vi editor ค่อนข้างให้ยาก มีแต่ text กับ text
4.3 gedit editor จะมี syntax hilight ให้ แต่ละภาษา ทำให้ใช้งานง่ายขึ้น
script ที่เราเขียน เรียกว่า bash file คือไฟล์ที่ run บน bash มีกฎกติกาการเขียนเล็กน้อย
1. บรรทัดแรกสุด ต้องพิมพ์
เพื่อบอกให้ shell รู้ว่า code ที่จะเขียนต่อไปนี้จะต้อง ถูกประมวลผลโดย interpreter ใด
[ interpreter คือ ตัวที่เอาไว้ใช้ปฎิบัติงานตาม code script ไปทีละบรรทัด อ่านแล้วปฏิบัติตามเลย ไม่ต้อง compile ]
ต้องกำหนดให้ user มีสิทธิ์ execute
โจทย์ข้อ 1. พิมพ์ a b c ออกทางหน้าจอ
#!/bin/bash
for i in a b c
do
echo $i
done
#!/bin/bash
for i in "a b c"
do
echo $i
done
#!/bin/bash
name="ant ae oat"
for i in $name
do
echo $i
done
โจทย์ข้อ 2. พิมพ์เลข 1-10
#!/bin/bash
for i in $(seq 1 10)
do
echo $i
done
โจทย์ข้อ 3. พิมพ์เลข 1-10 เฉพาะเลข คู่
#!/bin/bash
for i in $(seq 1 5)
do
echo $((i*2))
done
โจทย์ข้อ 4. พิมพ์ชื่อไฟล์ทั้งหมดที่อยู่ใน folder
#!/bin/bash
file=$(ls)
for i in $file
do
echo $i
done
โจทย์ข้อ 5. ถ้า parameter ที่ใส่เข้าไปเป็น cat ให้แสดง yes
#!/bin/bash
if_[_"$1"_=_"cat"_]_; then
echo "yes"
fi
วิธีการทดสอบ script นี้
> ./script_if cat
** หมายเหตุ cat ที่ใส่เข้าไปคือ parameter $1
โจทย์ข้อ 6. หาชื่อไฟล์ที่มีคำว่า "se" อยู่
#!/bin/bash
for f in $(ls)
do
if_[_$(echo $f | grep "se" -c)_=_1_]_; then
echo $f" is here"
fi
done
คำสั่ง Bash Shell Commands
http://www.mediacollege.com/linux/command/shell-command.html