หัวข้อ: Solaris 2.6 (User)
ชื่อเรื่อง: คำสั่งทั่วไปของ SunOS
พิมพ์: 26 พย 42
update: 30 พย 42 21:50pm (ครั้งที่ 2)

คำสั่งทั่วไปของ SunOS
แปลง Solaris 2.6 [Next page] [Section contents page]
  1. คำสั่งของ SunOS (Basic SunOS Commands)
  2. Prompt ของคำสั่ง (The Command Prompt)
  3. วิธีการป้อนคำสั่ง (Entering Command)
  4. เมื่อพิมพ์คำสั่งผิด จะแก้อย่งไร (Correcting Typing Mistakes)
  5. วิธีการป้อน คำสั่งหลาย ๆ คำสั่ง ในบรรทัดเดียวกัน (Entering Multiple Commands and Long Commands)
  6. วิธีการเรียก คำสั่งเก่า ๆ มาใช้งาน (Repeating The Previous Commands)
  7. การเพิ่มออปชั่นให้กับคำสั่ง (Adding Command Options)
  8. การจัดการกับ Output ของคำสั่ง (Redirecting and Piping Command Output)
  9. วิธีการสั่งให้คำสั่งทำงานอยู่เบื้องหลัง (Running Command in The Background)
  10. ดูรายละเอียดของคำสั่งด้วยคำสั่ง man (Displaying Manual Pages with man)
  11. ใช้คำสั่ง whatis เพื่อดูว่าคำสั่งนั้นทำงานเกี่ยวกับอะไร (Displaying a One-line Summary with whatis)
  12. หาคำสั่งที่ต้องการด้วยคำสั่ง apropos (Keyword Lookup with apropos)

คำสั่งของ SunOS (Basic SunOS Commands)

ในบทนี้ เราจะมาพูดถึงคำสั่งเบื้องต้น ทั่วไปของ SunOS กัน มาดูสิว่า มีอะไรบ้าง
สิ่งที่บทความนี้ จะกล่าวถึง ในหน้านี้ เช่น วิธีการป้อนคำสั่ง ต่าง ๆ เพื่อให้ OS ทำงาน , เมื่อ พิมพ์คำสั่งผิด จะแก้อย่างไร เป็นต้น

Prompt ของคำสั่ง (The Command Prompt)

prompt คือสิ่งแรกที่เห็นเมื่อเรา login เข้าไป ใช้ระบบ งานในระบบปฎิบัติการ unix ซึ่งรูปร่าง หรือ ลักษณะ ของ prompt ขึ้นอยู่กับว่า เรากำลัง ใช้ shell อะไรอยู่ หรือ ขึ้น อยู่กับว่า Admin ของระบบ เขากำหนด ให้หน้าตา ของ prompt มีหน้าตาเป็น อย่างไร (สุดแท้แต่ความพิสวาทส่วนบุคคลครับ)
ซึ่ง prompt โดยปกติทั่วไป ของ SunOS จะเป็น dolla sign ($)

วิธีการป้อนคำสั่ง (Entering Command)

เมื่อใดก็ตามที่คุณเห็น command prompt นั่นหมายความว่า ระบบปฎิบัติการ พร้อมที่จะรับคำสั่งจากท่าน เพื่อนำไปประมวลผล ลองป้อนคำสั่ง date ตามตัวอย่างนี้ดูนะครับ (พิมพ์คำว่า date แล้วเคาะ Enter)
$date
Mon Feb 3 10:12:51 PST 1992
$

สิ่งที่คุณเห็นคือ ระบบปฎิบัติการเขาจะ แสดงวันเดือนปี และ วันที่ ปัจจุบัน มาให้คุณ , ทีนี้ เรามาลองป้อนคำสั่ง เหมือนเดิม กันนะครับ แต่ให้เริ่มพิมพ์คำสั่ง ด้วยตัวพิมพ์ใหญ่ ดังนี้ครับ
$Date
Date: Command not found.
$

ผลที่ได้ตามมาคือ ระบบปฎิบัติการเขาไม่รู้จัก คำสั่งดังกล่าว ทั้งนี้เนื่องจาก ตัวพิมพ์เล็ก และตัวพิมพ์ใหญ่ บน Unix นั้น แตกต่างกันครับ ดังนั้นเวลา ระบบปฎิบัติการเขานำคำสั่ง ที่เราป้อนเข้าไป เพื่อไปประมวลผล เขาก็หาคำสั่ง Date ไม่เจอ
โดยปกติแล้ว คำสั่งบน Unix ส่วนมากจะเป็นตัวพิมพ์เล็ก ทั้งหมดครับ

เมื่อพิมพ์คำสั่งผิด จะแก้อย่งไร (Correcting Typing Mistakes)

สมมุติว่า คุณพิมพ์คำสั่ง Date แต่ก่อนที่คุณจะกด Enter ปรากฎว่าคุณรู้ตัวว่าทำผิด (บางคนอาจไม่รู้) และก็ต้องการจะแก้ คำสั่งดังกล่าวใหม่ ทั้งนี้ตราบใดที่ คุณยังไม่เคาะคีย์ Enter ระบบปฎิบัติการก็จะยังไม่นำ คำสั่งของคุณไปประมวลผล วิธีการแก้ ทำได้สองวิธีครับคือ
  1. กดคีย์ Delete หรือ Backspace เพื่อกลับไปลบตัวที่ผิด
  2. กด Ctrl+U เพื่อลบคำสั่งทั้งบรรทัด แล้วก็ป้อนคำสั่งใหม่ทั้งหมดครับ

วิธีการป้อน คำสั่งหลาย ๆ คำสั่ง ในบรรทัดเดียวกัน (Entering Multiple Commands and Long Commands)

ในหัวขัอนี้เรามาดูวิธีการ พิมพ์คำสั่งหลาย ๆ คำสั่งในบรรทัดเดียวกัน และ วิธีการ ป้อนคำสั่งที่ยาว ๆ ไม่สามารถพิมพ์ ได้ในบรรทัดเดียวได้ จะมีวิธีการอย่างไร เชิญ...ครับท่าน
   สำหรับคำสั่งของ Unix นั้นในบรรทัดเดียวเราสามารถ พิมพ์ได้หลาย ๆ คำสั่ง โดยใช้เครื่องหมาย semicolon (;) คั่นระหว่างคำสั่งแต่ละตัว เช่น ผมต้องการป้อนคำสั่ง date และ logname ไว้ในบรรทัดเดียวกัน สามารถทำได้ดังนี้ครับ
$date;logname
Mon Feb 3 10:19:25 PST 1992
jong
$

สิ่งที่คุณเห็นคือ (ตัวอักษรและตัวเลข...ฮา) วันเดือนปี และ เวลาของระบบปฎิบัติการ (จากคำสั่ง date) และ อีกหนึ่งบรรทัด คือชื่อ login name ของผู้ใช้ระบบคนนั้น (จากคำสั่ง logname) (คนไหน?) ก็คนที่ key คำสั่งงัยครับ ถ้าไม่รู้ว่าเป็นใคร ก็ลองส่องกระจก ดูนะครับ อิ อิ

ต่อไปเรามาดูวิธีการป้อนคำสั่ง ที่ยาวววววววว กันนะครับ สมมุติว่ามีคำสั่งหนึ่ง ที่ยาวมาก (เวลาอ่านโปรดเน้นเสียงตรงคำว่า 'มาก' เพื่ออรรถรสในการอ่าน) สามารถทำได้ดังนี้ครับ
$date; \
logname

Mon Feb 3 10:19:25 PST 1999
jong
$

ในที่นี้ คำสั่งที่ยกมา ไม่ได้ยาวครับ แต่เราสามารถ ใช้ได้เหมือนกัน คือคำสั่งที่ยาว ๆ นั้นเราจะใช้ backslash (\) เป็นตัวบ่งบอกว่า เรา ขอต่อคำสั่งในอีกบรรทัดหนึ่งนะ อะไรทำนองนั้นแหละครับ (บางสิ่งเราเข้าใจ แต่อธิบายยาก เนอะ)

วิธีการเรียก คำสั่งเก่า ๆ มาใช้งาน (Repeating The Previous Commands)

Note:-
วิธีการที่จะกล่าวในที่นี้ เราจะกล่าวถึงเฉพาะที่ ใช้ใน C shell เท่านั้นนะครับ


ในกรณีของ C shell วิธีการที่เราจะนำคำสั่ง เก่ากลับมาประมวลผล (ถ้าเทียบกับ dos ก็คือ doskey) สามารถทำได้ง่าย ๆ ครับ คือให้เราพิมพ์ !! ลงไปแล้วก็กดคีย์ Enter สิ่งที่ระบบปฎิบัติการ จะทำคือ เขาจะนำเอาคำสั่งล่าสุดที่เรา key ลงไปกลับมาประมวลผล ให้เรา เช่นล่าสุดเราได้ใช้คำสั่ง date วิธีการที่จะเรียกคำสั่ง กลับมาใช้ทำได้ดังนี้ครับ
example%!!
date
Mon Feb 3 10:26:20 PST 1999
example%

เราสามารถกลับไปเรียกใช้ คำสั่งเก่า ได้ตามต้องการ โดยวิธีการเรียก คำสั่งก็เพียงแค่พิมพ์ !x , โดยที่ x คือค่าของลำดับที่ ของคำสั่งที่เราต้องการ ซึ่งค่าหมายเลยของ x สามารถดูได้โดย ใช้คำสั่ง history ดูครับ
เมื่อคุณพิมพ์คำสั่ง history สิ่งที่เห็น จะมีหน้าตาคล้าย ๆ แบบนี้ครับ
example%history
1 pwc
2 clear
3 ls -l
4 cd /usr/home/worker
5 logname
6 date


อีกวิธีหนึ่งที่เราสามารถเรียกคำสั่งเก่า ๆ กลับมาใช้ได้ ก็โดยการใช้ตัวเลขที่เป็น เลขลบมาตามหลังเครื่องหมาย ! ซึ่งจะเป็นการ นำคำสั่งที่นับมาจากท้ายของ list ที่ได้จาก คำสั่ง history มาประมวลผลให้เราครับ ตัวอย่างก็เช่น
example%!-2
logname
hankw
example%


ซึ่งเป็นการนำเอาคำสั่งที่นับจากท้ายขึ้นมา แล้วเอาตัวที่สองมาทำงานครับ

การเพิ่มออปชั่นให้กับคำสั่ง (Adding Command Options)

หลายๆ คำสั่งบน Unix มักจะมีออปชั่นให้เราครับ ออปชั่นคืออะไรหรือ ง่าย ๆ ครับ ถ้าเทียบกับ dos เช่นเราพิมพ์คำว่า dir /s ตรง /s นั่นละครับเราเรียกว่า เป็น ออปชั่นของคำสั่ง ใน Unix ก็มีเหมือนกันครับ โดยส่วนมากแล้ว คำสั่งมักจะมีออปชั่นให้เราเลือกใช้ แต่ก็ไม่ทุกคำสั่งหรอกครับ โดยปกติแล้ว ออปชั่นบน Unix จะเป็นตัวอักษร ตัวเดียวโดดๆ แต่หนึ่งคำสั่ง สามารถมีได้หลาย ๆ ออปชั่นครับ
เราสามารถนำออปชั่นดังกล่าวมาใช้ร่วมกับคำสั่งได้ โดยการเติม dash (-) นำหน้า ออปชั่น นั้น ตามท้ายคำสั่ง ตัวอย่าง เช่นดังนี้ครับ
$date -u
Mon Feb 3 11:06:51 GMT 1999
$

ออปชั่น -u ของคำสั่ง date จะทำให้ date แสดงเวลาที่ Greenwich Mean Time แทนที่จะเป็นเวลาบนเครื่อง ที่ local ของเราครับ
ลองใช้คำสั่ง date กับ date -u ดูนะครับ ดูสิว่าผลของเขา ที่นำ มาแสดงให้เราดูนั้นต่างกันอย่างไร
   ในกรณีที่คำสั่งมีหลาย ๆ ออปชั่น เราสามารถนำออปชั่น หลายๆ ตัวมาใช้งานร่วมกันได้ (เว้นแต่บางกรณีที่เป็นบางตัวที่บอกว่า ห้ามใช้ร่วมกัน) เช่นอาจจะมี ออปชั่น a และ ออปชั่น b ผมสามารถใช้ออปชั่นได้ สองวิธีครับ คือ -a -b และ -ab

การจัดการกับ Output ของคำสั่ง (Redirecting and Piping Command Output)

   โดยปกติแล้ว เมื่อเราใช้คำสั่ง สั่งให้ระบบปฎิบัติการ ทำงานอะไรสักอย่างหนึ่ง เช่นบอกให้เขาแสดงวันที่ สิ่งที่เขาจะทำก็คือ แสดงวันที่ ออกมาที่หน้าจอให้เรา ใช่ไหมครับ สิ่งที่เขาแสดงออกมา เราเรียกว่า เป็นผลของคำสั่งครับ หรือถ้าทับศัพท์เราก็เรียกว่า Output
   เราสามารถนำผลของคำสั่งที่ได้ ไปเก็บเป็นไฟล์ หรือ ส่งเป็นพารามิเตอร์เพื่อส่งไปให้ คำสั่งอื่น ๆ ทำงานก็ได้ครับ วิธีการสั่งให้ระบบปฎิบัติการ เนาเอาค่าของผลคำสั่งที่ได้ ไปสร้างเป็นไฟล์ แทนที่จะแสดงผลมาที่หน้าจอ เราสามารถใช้เคื่องหมายมากกว่า (>) ต่อท้ายคำสั่งแล้วก็ตามด้วยชื่อไฟล์ ที่ต้องการให้สร้างดังนี้ครับ
$date > sample.file
$

   จากตัวอย่างดังกล่าวสิ่งที่ระบบปฎิบัติการทำคือ เขาจะนำผลที่ได้ จากการประมวลผลของคำสั่ง date ไปสร้างเก็บในไฟล์ใหม่ชื่อว่า sample.file ซึ่งถ้าเราดูข้อความของไฟล์ ด้วยคำสั่ง more จะได้ข้อความคล้าย ดังนี้ครับ
$more sample.file
Mon Feb 3 10:19:25 PST 1999
$

(ดูรายละเอียดของคำสั่ง more ได้ที่การทำงานเกี่ยวกับไฟล์และไดเรกทอรี)
บางครั้งเรามีความจำเป็นที่ต้องการนำเอา ผลของคำสั่งที่ได้ จากคำสั่งหนึ่ง ส่งค่าไปเป็นพารามิเตอร์ให้กับอีกคำสั่งหนึ่ง เพื่อนำไปทำงานต่อไป วิธีการดังกล่าวนี้เราเรียกว่า pipeline ครับ ซึ่งจะมีสัญญลักณ์ตัวหนั่ง ที่เข้ามาเกี่ยวข้อง คือตัว vertical bar (|) เราจะเรียกตัวนี้ว่า pipe
   มองง่าย ๆ ครับว่า ตัว pipe ตัวนี้เปรียบเสมือนเป็นท่อ ที่เป็นทางเดินของผลของคำสั่งหนึ่งไปสู่ อีกคำสั่งหนึ่ง เสมือนเป็นท่อนน้ำ ให้น้ำเดินจากถังที่หนึ่งไปถังที่สอง อะไรทำนองนั้นละครับ

   ตัวอย่างเช่น ผมต้องการสั่ง date แล้วนำผลของคำสั่งที่ได้ ให้พิมพ์ออกไปที่เครื่องพิมพ์ แทนที่จะแสดงมาที่หน้าจอ หรือเก็บไว้เป็นไฟล์ ผมสามารถทำได้ดังนี้ครับ

$date | lp
$

สิงที่ระบบปฎิบัติการเขาทำคือ ประมวลผลคำสั่ง date แล้วนำผลที่ได้ ส่งไปพิมพ์ที่เครื่องพิมพ์ครับ

วิธีการสั่งให้คำสั่งทำงานอยู่เบื้องหลัง (Running Command in The Background)

   ในบางครั้งคำสั่งที่เราสั่งให้ระบบปฎิบัติงาน ทำงาานตามที่เราต้องการนั้น ใช้เวลานานมาก ซึ่งตราบใดก็ตาม ที่ระบบปฎิบัติการทำงานตามที่เราสั่งยังไม่เสร็จ เขาจะไม่คืน prompt มาให้เราคืน จนกว่าเขาจะทำงานเสร็จแล้ว นั่นละเขาถึงจะคืน prompt มาให้เรา ทีนี้เรื่องมันมีอยู่ว่า สมมุติว่าเราต้องการ prompt คืนมาทันที เพื่อสั่งให้ระบบปฎิบัติการทำงานอย่างอื่น ๆ ที่เราต้องการอีก แม้ว่า จะยังทำตามคำสั่งแรกไม่เสร็จก็ตาม จะทำอย่างไร
   วิธีการที่จะทำให้ ระบบปฎิบัติการคืน prompt มาให้เราทันทีหลังจากสั่งงานเขาไป แม้จะยังทำงานไม่เสร็จก็ตาม ก็คือเราบอกเขาว่า ให้เขาทำงานที่สั่งไปนะ ในโหมด background นะ คือเหมือนกับ ให้ทำงานอยู่เบื้องหลังอะไรทำนองนั้นละครับ วิธีการสั่งก็ให้พิมพ์คำสั่งเหมือนปกติ เพียงแต่เราใส่ตัว ampersand (&) ต่อท้ายคำสั่งที่เราต้องการ ให้ทำงานในโหมดของ background เช่น ตัวอย่างดังนี้ครับ
$bigjob &
[1]   21414
$

ตอนนี้คำสั่งของเรา (bigjob) จะทำงานในโหมดของ backgroun หลังจากเราพิมพ์แล้ว ระบบปฎิบัติการจะคืน prompt มาให้เราทันทีครับ ส่วนตัวเลขที่เห็น (21414) เป็น หมายเลขประจำตัวของ โปรเซส หรือก็คือตัวที่ทำงานคำสั่งที่เราสั่งไปนั่นละครับ หลังจากนั้นระบบปฎิบัติการก็จะทำงานไปเรื่อย ๆ ครับ จนกว่าจะเสร็จ และเมื่อเสร็จ แล้วเขาจะมีข้อความเตือนออกมาเมื่อเราเคาะคีย์ Enter หรือหลังจากเราสั่ง คำสั่งตัวถัด ๆไป ข้อความจะคล้าย ๆ ดังนี้ครับ
$date
Mon Feb 3 10:23:25 PST 1999
[1]    + Done    bigjob
$

ในการทำงานแบบ background นี้เมื่อเรา logout ออกจากระบบ งานของเราจะถูก terminate ทันที แต่ถ้าเราต้องการให้การทำงานตามคำสั่งดังกล่าว ยังคงทำอยู่ ไปเรื่อย ๆ แม้ว่าเรา จะ logout ออกจากระบบ แล้วก็ตาม เราสามารถทำได้โดยการใช้คำว่า nohup (no hangup) นำหน้าคำสั่งที่เราต้องการ ซึ่งจะเป็นตัวที่บอกให้ระบบปฎิบัติการทำงานตาม คำสั่งดังกล่าวไปเรื่อย ๆ จนกว่าจะเสร็จ แม้ว่าเราจะได้ logout ออกจากระบบไปแล้วก็ตาม ตัวอย่างข้างล่างนี้ครับ
$nohup bigjob &
[1]   21414
$


ดูรายละเอียดของคำสั่งด้วยคำสั่ง man (Displaying Manual Pages with man)

   ในระบบปฎิบัติการ Unix นั้นมีคำสั่งให้เราใช้งาน เป็นจำนวนมาก จำกันไม่หวาดไม่ไหว สมมุติว่าท่านจำได้ว่าคำสั่งนั้น มันสะกดอย่างไรได้ แต่ไม่รู้ว่ามีรายละเอียดการทำงานเป็นอย่างไร หนทางหนึ่งที่ช่วยได้ คือบน unix มีคำสั่งที่ช่วยให้เราสามารถดู รายละเอียดของคำสั่งต่าง ๆ ได้ครับ คำสั่งนั้นคือ man ซึ่งโดยปกติคำสั่งนี้จะแสดงรายละเอียดของคำสั่ง รายละเอียดพร้อมทั้งตัวอย่างของคำสั่งนั้น ๆ ด้วยครับ ท่านสามารถ เคาะคีย์ space bar เพื่อดูข้อมูลหน้าถัด ๆ ไปได้ หรือกด q เพื่อกลับสู่ command prompt ได้ครับ ตัวอย่างการใช้งานอยู่ข้างล่างนี้ครับ
$man man


ใช้คำสั่ง whatis เพื่อดูว่าคำสั่งนั้นทำงานเกี่ยวกับอะไร (Displaying a One-line Summary with whatis)

บน unix มีอยู่คำสั่งหนึ่งครับที่เขาสามารถสรุปหน้าที่ของคำสั่งต่าง ๆ ให้เราได้ สั้น ๆ ว่าคำสั่งที่เราอยากรู้นั้นทำงานเกี่ยวกับอะไร หรือมีหน้าที่อย่างไร ตัวอย่างการใช้งานอยู่ข้างล่างนี้ ส่วนตัวเลขที่เห็นอยู่ในวงเล็บนั้น มันเป็นตัวบ่งบอกว่า คำสั่งนั้น อยู่ใน section ไหน ซึ่งคำสั่งต่าง ๆ ของ unix นั้นจะแบ่งออกเป็นกลุ่ม ๆ หรือเป็น section ไปคำสั่งของ user ทั่วไปส่วนมาก จะจัดอยู่ใน section ที่ 1 ครับ
$whatis date
date  (1)       -display or set the date

หาคำสั่งที่ต้องการด้วยคำสั่ง apropos (Keyword Lookup with apropos)

ใน unix มีอีกคำสั่งหนึ่งครับที่สามารถช่วยเราได้ ในกรณีที่เราแบบ คลับคล้าย คลับคลาว่า เอคำสั่งนี้มันสะกดอย่างไรนะ แบบนี้หรือเปล่านะ แบบนั้นหรือเปล่านะ แต่ก็รู้ว่ามันต้องมีคำนี้แน่ ๆ เลย คำสั่งหนึ่งที่ช่วยเราได้ตรงนี้คือ คำสั่ง apropos เขาสามารถช่วยเราได้ โดยการหาคำสั่งที่มีคำที่เราป้อนเข้าไปออกมาให้ทั้งหมด ลักษณะการทำงาน จะเหมือนกับเราค้นหาอะไรสักอย่างหนึ่งนั่นละครับ ตัวอย่างการใช้งานข้างล่างครับ
$apropos date
$apropos who
$apropos execute


แปลง Solaris 2.6 [Next page] [Section contents page]


[ณ บ้านไร่ชายทุ่ง]

ข้าวในแปลงอื่น ๆ

กลับแปลง Solaris 2.6 สำหรับผู้ใช้งานทั่วไป

สงวนลิขสิทธิ์(c) 1999 ณ บ้านไร่ชายทุ่ง
1