Command course# ตำแหน่งลัด
Submitted by gumara on 5. September 2007 - 5:34.
Posted in:
Posted in:
วันนี้กลับมาพบกับ อ.มะระ อีกครั้งในวิชา Command-line ครับ สำหรับวันนี้อาจารย์จะพาไปรู้จักตำแหน่งลัดต่างๆครับ ซึ่งจะมีประโยชน์มากๆในการใช้งานครับ
นักเรียนที่ใจร้อนอยากลงมือใช้คำสั่งแล้วใจเย็นครับ ครั้งหน้าได้แนะนำคำสั่งแรกกันแล้วแน่นอน
ตำแหน่งลัดที่จะนำมาแนะนำจะมีดังนี้ครับ
~ : จะเป็นตำแหน่งเอาไว้แทนโฟลเดอร์บ้านของเราครับ
. : จะใช้แทนตำแหน่งของโฟลเดอร์ที่เรากำลังทำงานอยู่ ณ ปัจจุบันครับ
.. : หมายถึงโฟลเดอร์ที่อยู่เหนือเราไปหนึ่งขั้นครับ
ตัวอย่างการใช้งานตำแหน่งลัดนะครับ สมมุติเราต้องการก๊อบไฟล์ไปไว้ที่โฟลเดอร์บ้าน แทนที่จะต้องบอกว่า ก๊อบไฟล์ ไว้ที่ /home/gumara เราก็สามารถบอกว่า ก๊อบไฟล์ ไว้ที่ ~ แบบนี้เลยครับ สะดวกมาก
นึกออกแค่นี้ครับ มีอย่างอื่นอีกไม๊หว่า เสนอกันที



. กับ $home
. กับ $home ต่างกันอย่างไรครับ
จะพิมพ์ว่
จะพิมพ์ว่า ~ กับ $home น่ะครับ ต่างกันอย่างไรครับ
เหมือนกัน
เหมือนกันนะผมว่า หรือจริงๆมันมีอะไรแตกต่างรึป่าวใครบอกที
Re: จะพิมพ์ ...
จะพิมพ์ว่า ~ กับ $home น่ะครับ ต่างกันอย่างไรครับ
ไม่ค่อยแม่นซะด้วย แต่ขอมั่วหน่อยครับ ...
ให้ผลลัพธ์เหมือนกัน แต่ถ้าใช้งานจริงผมก็เลือก ~ เพราะสั้นกว่า แต่ที่แตกต่างกันที่เห็นๆก็คือ ~ เป็น Reserve Key ส่วน home คือค่าตัวแปรในระบบ เวลาเรียกใช้ตัวแปรจะต้องมี $ นำหน้า ส่วนมากจะประยุกต์ใช้ใน script ต่างๆ

~username
ถ้าจะอ้างถึง home directory ของชาวบ้าน ก็ใช้ ~username ครับ เช่น
sudo rm -r ~gumara:Pแล้วมาลบบ
แล้วมาลบบ้านผมแล้วคืนนี้จะไปนอนไหนล่ะคับเนี่ย
คิดว่า $home
คิดว่า $home ที่เป็นค่าตัวแปรจะสามารถเปลี่ยนค่าตัวแปรได้ แต่ ~ คงไม่สามารถเปลี่ยนได้ ล่ะมั๊งครับ
ลองนี่นะครับ
$ echo ~
$ HOME=/tmp sh
$ echo ~
$ exit
$ echo ~
$HOME
$home ไม่มีนะครับ มีแต่ $HOME
ความแตกต่างคือ $HOME เป็นตัวแปร environment ส่วน ~ เป็น shortcut ของ shell ซึ่งเป็น command interpreter
เท่าที่ผมจำได้ ~ ดูเหมือนจะมีครั้งแรกใน C shell (csh) ของ BSD Unix ก่อนที่ shell อื่น ๆ จะใช้ตามจนกลายเป็นมาตรฐานกลาย ๆ ส่วนตัวแปรระบบ $HOME นั้น มีในทุกโพรเซสของยูนิกซ์ โปรแกรมที่เป็น binary ใด ๆ ที่ไม่ใช่ shell script ก็สามารถอ่านค่ามาใช้ได้ ในขณะที่ ~ เป็น feature ของเชลล์เท่านั้น
รูป ~user ก็เช่นกัน และเป็นที่มาของรูป URL http://website.com/~user ที่ใช้กันในอินเทอร์เน็ตด้วย
Re: $HOME
ตรวจสอบค่าตัวแปรด้วยคำสั่ง export จริงด้วยครับไม่มีตัวแปรชื่อ home มีแต่ตัวแปรชื่อ HOME แต่ว่าผมทดสอบด้วยคำสั่ง cd $home มันทำไมถึงโดดมาบ้านตัวเองได้ล่ะครับ แปลกดีนิ ...
ไม่ยากครั
ไม่ยากครับ สั่งแบบนี้เฉย ๆ ก็คือกลับบ้าน:
$ cd
ทีนี้
$ echo $home
$ echo "cd $home"
cd
$ cd $home
..กลับบ้าน..
ผมจะสั่งว่า "cd $pluto" ก็กลับบ้านผมเหมือนกัน ^_^
บน AIX
บน AIX ใช้ // แทน ~ ได้เช่นกัน ไม่แน่ใจ ubuntu ใช้ได้เหมือนกันมั้ย ยังไม่ได้ลอง
แนะเครื่องหมาย ` (เรียกว่า back quote) เอาไว้ครอบคำสั่งที่จะทำการประมาลผลย่อย .. งง หล่ะสิ .. ดูตัวอย่างครับ
ตัวอย่างการนับจำนวน process ชื่อ java
num=`ps -ef | grep java | wc -l`
echo Number of java process = `expr $num - 1`
ตัวอย่างข้างบนได้คำสั่งเพิ่มอีกคือ
ps ใช้แสดง process ที่ run อยู่
grep + ข้อความ ใช้คัดเอาเฉพาะบรรทัดที่มีข้อความนั้น
wc -l ใช้นับบรรทัด
expr ใช้คำนวนตัวเลข
มีตัวอย่า
มีตัวอย่างง่ายกว่านั้น
ถ้าคุณจะติดตั้ง headers ของเคอร์เนล
แทนที่จะสั่ง "sudo apt-get install linux-headers-2.6.20-15(หรือ -16)"
เราก็สั่ง "sudo apt-get install linux-header-`uname -r`"แทน
ถ้าเราลองสั่ง uname -r ดู จะได้รุ่นของเคอร์เนล
thx
ขอบคุณครับ ^^
Post new comment