Showing posts with label command options. Show all posts
Showing posts with label command options. Show all posts

Thursday, August 6, 2009

ไกลปืนเที่ยง: FreeBSD ---> command(3) (ต่อ)

ขอต่อจากตอนที่แล้วน่ะครับcommandsไม่อยากให้เลขตอนมันมากโดยไม่จำเป็น เลย เพียงแค่ เพิ่ม (ต่อ) ต่อท้าย เพราะอีกแง่มุมหนึ่ง ก็เป็นเรื่องต่อเนื่องจากตอนก่อน

mkdir

อันคำสั่งนี้ ที่ยกมานำเสนอ เป็นที่รู้จักคุ้นเคยกันดีอยู่แล้ว แต่ ที่ใคร่จะชี้ให้เห็นในคราวนี้ ก็เปน command options ต่างๆที่อาจจะแปลก ใหม่ สำหรับบางท่านเท่านั้น

คำสั่งนี้ จะ สร้าง สาระบบแฟ้ม ที่มีชื่อตามระบุไว้ตามลำดับไป ด้วย permission 'rwxrwxrwx' ที่จะถูกปรับแต่งทีหลังด้วยค่าของ umask ในกรณีที่ไม่กำหนด permission ให้กับคำสั่ง อนึ่ง ผู้ใช้ ต้องมี write permission ใน parent directory เพื่อใช้งานคำสั่งนี้

path สำหรับคำสั่ง ในกรณีที่ท่านต้องเรียกใช้งานจาก shell คือ /bin/mkdir

ไวยากรณ์คำสั่งคือ

mkdir [-pv] [-m mode]   directory_name ...

ที่ใคร่ขออนุญาตชี้แนะ ในกรณีนี้ คือ command option -p ซึ่งอนุญาตให้เราสร้าง directory ได้จาก ส่วนประกอบ ที่ แม้จะยังไม่ได้สร้างขึ้นมา ตัวอย่างเช่น ~/public_html/erp/config ซึ่งโดยปกติแล้ว การที่จะสร้าง config มาได้นั้น ต้องมี ~/public_html และ ~/pubcli_html/erp มาก่อน แต่กับ option นี้ สามารถ สร้างได้เลยในคราวเดียว แม้ส่วนที่ยังไม่สร้าง ก็จะสร้างให้ด้วย

command option   -m  mode นั้น ก็ไม่ยากแก่การคาดเดา เป็นการกำหนด permission mode แรกเริ่มให้ แทนที่จะใช้ 0755 ตามที่ระบบกำหนดให้เท่านั้นเอง

ไหนไหนก็ไหนไหน, ภาษาอังกฤษจากเพื่อนๆเธอบอกว่า แวแวอีส เอะ แวแว ก็มาจาก where where is a where where ตรงๆแหละ, ก็บอกแล้ว คำสั่งที่ตรงข้ามก็ได้แก่ rmdir(1) และคู่ ของคำสั่งนี้ก็คือ chdir(1)

ในการใช้งาน FreeBSD นั้น พี่พี่ท่าน สมควรได้ สัมผัส กับคำสั่งนี้ และ คู่ ของเขาอยู่มากกว่า ก็ขอยกมาให้ทราบไว้ก่อน รับรอง แค่การเตรียมการ ก่อนการใช้งาน GRASS ก็ได้ใช้แล้ว

อีก ๒ คำสั่ง ที่สมควรรับทราบไว้ ได้แก่ chmod(1) เอาไว้เปลี่ยน permission mode กับ chown(1) เอาไว้เปลี่ยนเจ้าของ เปลี่ยนกลุ่ม

แหม ซีงิต จริง ทำได้ยังงี้ก็ ...

มะไฟ เล็งเห็นแล้วว่า คำสั่งในชุดแรกที่ยกมานั้น ต้องได้ใช้งานแน่แน่ จึงคัดสรรค์มาเป็นพิเศษ มานำเสนอก่อนอื่น ต่อไป จะเป็นเรื่องที่เกี่ยวข้องกับ FreeBSD จริงๆซะที

Fri Aug 7 11:33:25 ICT 2009

Wednesday, August 5, 2009

ไกลปืนเที่ยง: FreeBSD ---> command(3)

ต้องขออภัยเพื่อนผองน้องพี่ ชาว FreeBSD ที่ห่างหายไปนาน

เรื่องที่นำเสนอวันนี้ เป็นคำสั่งที่จำเป็น สำหรับการใช้งานทั่วไปcommands รวมทั้ง command options ที่สมควรกำหนดไว้ก่อนเลย เพราะ FreeBSD นั้นทำงานในลักษณะของ multi users, multi programming ผลที่นึกไม่ถึงอาจเกิดขึ้น ตัวอย่างพื้นๆ คือการลบแฟ้ม เมื่อกดแป้นพิมพ์ Enter แล้ว ก็เป็นอันเลิกคิดที่จะ กู้แฟ้มนั้นกลับคืนมา ทั้งนี้ เพราะไม่มีทางทราบได้เลยว่า process ไหน ที่มาจับจอง inode ที่ว่างลงไปจากการที่เรา ลบแฟ้ม ทิ้ง การกำหนด -i , interactive option, เพื่อให้ผู้ใช้ สามารถหยุดยั้งคิดได้ จึงสมควรอยู่

อ้อ ขอทึกทักเอาว่า พี่พี่ต่างก็ใช้ csh , C shell, น่ะครับ สำหรับพี่พี่ที่ใช้ shell อื่นก็คงไม่มีปัญหา เพราะคงเข้าใจเรื่อง shell ที่ใช้ได้ดีพอควรแล้ว จะไม่ขอเขียนเรื่องของ shell ในนี้หละ

interactive mode

เพื่อให้เข้าใจว่า interactive mode นั้นเป็นอย่างไร อันดับแรก ก็ขอยกคำสั่ง ลบแฟ้ม มาให้ทราบก่อน ซึ่งเขามีรูปแบบ หรือ ไวยากรณ์คำสั่งแรกเริ่ม ดังนี้ ดูเอา จำเอาเน้าะ

rm filename

ก็อย่างที่เรียนให้ทราบแต่แรกแล้วว่า พอกด Enter ปุ้บ filename ก็หายวั้บไปเลย ซึ่งเราไม่ต้องการเช่นนั้น อย่างน้อย เราขอมีเวลายั้งคิดสักนิดหนึ่งก่อน เพราะ อาจเป็นไปได้ที่ ชื่อแฟ้ม มันใกล้เคียงกัน หรือสะดกชื่อแฟ้มผิดไป เช่น อยากลบแฟ้ม imid แต่ดันไปลบ imod ซึ่งสำคัญกว่า ถ้าใช้ interactive mode ก็จะเห็นข้อความที่จอ
remove imod ?
ขึ้นมา ก็ทำให้ทราบว่า เรากำลังจะลบสิ่งสำคัญออกไปน่ะ ยังดีกว่า พอกด Enter แล้วก็ ลบออกไปเลย ในกรณีนี้ ให้ตอบ n ไป แล้วกลับไปลบ imid ออกแทน

ใน interactive mode รูปแบบคำสั่งจะเป็นอีกอย่าง แบบนี้น่ะ

rm  -i   filename

กลุ่มคำสั่ง ที่ มะไฟ แนะให้ใช้งานใน interactive mode ก็มี rm ลบแฟ้ม, cp สำเนาแฟ้ม, mv โยกย้ายแฟ้ม

rm  -i   filename
cp  -i  src   dst
mv  -i  src   dst

alias

จากแนวคิดในเรื่อง interactive mode ทำให้เราต้อง เพิ่มการกดแป้นพิมพ์ ไปอีก ๓ เคาะ ไปเสียทุกครั้ง นับว่า ไม่สะดวกเลย แต่ csh เขามี facility ที่อำนวยความสะดวกให้ เรียกว่า alias ซึ่งเราสั่งซะทีเดียว ครั้งต่อไปที่เราเรียก ไม่ว่าจะเป็น rm mv หรือ cp ก็เท่ากับเราเรียก
rm -i
mv -i
cp -i

รูปแบบก็ง่ายๆ

alias rm    rm -i
alias cp    cp -i
alias mv    mv -i

~/.cshrc

การใช้บริการ alias ก็นับว่าสะดวกขึ้นมาก แต่ว่า เสียอยู่ว่า เราต้องมานั่งสั่งไปซะทุกครั้ง ที่ login เข้ามาทำงานนี่ซี บางทีที่ลืม ก็ทำเอาแย่ไปน่ะ

วิธีแก้ ก็มี โดยเอาคำสั่ง ที่แน่ใจ ว่า ต้องใช้งาน ทุกครั้งที่ login เข้ามาทำงาน นั้น อย่างของเราครั้งนี้ ก็พวก alias ทั้งหลาย ไว้ในแฟ้ม ~/.cshrc

แล้วเราจะแน่ใจยังไงว่า มันเป็นยังงั้นจริงๆ ?

วิธีตรวจสอบก็ง่ายๆ

alias

เท่านั้นเอง

ทำตามนี้ไปก่อนน่ะ มันเป็น ทริค สำหรับ เพิ่มข้อความ ทีละบรรทัด ต่อท้ายเอกสาร โดยไม่ต้องเรียก editor

% echo  alias  cp     cp  -i  >>  ~/.cshrc
% echo  alias  rm     rm  -i  >>  ~/.cshrc
% echo  alias  mv     mv  -i  >>  ~/.cshrc

แล้วก็ยังไม่ต้อง logout น่ะ แต่ให้สั่ง

% source  ~/.cshrc

แล้วลองสั่ง alias ดูซี อ้ออ้ออ้อ คงไม่เห็นความแตกต่าง ถ้าพี่ท่านทำ alias cp cp -i กับคณะ ไว้ก่อนหน้านี้แล้ว ถ้าเป็นยังงั้น ก็ให้สั่ง unalias ทั้งสามคำสั่งนั้นไปซะ ก่อนที่จะสั่ง source ดั่งว่า

/usr/share/skel/dot.cshrc

ดูเหมือนว่า จะมีประโยชน์ แต่ก็กับเราคนเดียวแหละน่อ จะให้ดี ให้มันเป็นยังงี้ทุกครั้ง ที่ เพิ่มผู้ใช้งานใหม่ เข้ามาในระบบเลยดีกว่า โดยไปแก้ที่แฟ้ม /usr/share/skel/dot.cshrc นี้เลย เพราะหน้าที่ของแฟ้มนี้คือ แปลงร่างเป็นแฟ้ม ~/.cshrc ให้กับผู้ใช้ในระบบนั่นเอง ที่เหลือ คงไม่ต้องแนะอะไรมาก สำหรับ แอ้ด เมืองมิน ที่เฉลียวฉลาด

ตั้งใจ จะเขียนเรื่องคำสั่งสักหลายๆคำสั่ง แต่พอเริ่มลงมือเข้า มันก็ลากไปเอง และ ไม่อยากให้ สายตาพี่พี่ล้า เลยต้องขอ น่ะ ขอยอ

ยอมีตั่ง
Wed Aug 5 17:42:19 ICT 2009

Wednesday, September 10, 2008

flags : ชายธง

ชายธง เปล่า มิได้หมายเอาคำว่า พื้นที่ชายธง หรือ ชาย ที่ชื่อ ธง แต่อย่างไร แต่หมายถึงคำว่า ปลายธง โดยตรงเลยทีเดียว
ถอดมาจากคำฝรั่งว่า _flags ที่ใช้ร่วมกับคำต่างๆในแฟ้ม /etc/rc.conf ซึ่งหมายถึง command line options นั่นเอง แลสืบเนื่องจาก ที่เขาเป็นส่วนของคำตอนท้ายสุดเสมอๆ จึงเลือกใช้ ชายธง แทนคำนี้ มากกว่าที่จะใช้ ปลายธง

เหตุผลไม่สมประกอบนักหรอก

ที่ต้องนำมาขึ้นเหลา เพราะดูว่าจะเป็นประโยชน์กับเพื่อนๆชาว BSD ที่ต้องเรียกคำสั่งใช้งาน พร้อมกับ options ต่างๆตั้งแต่แรกเริ่มเปิดเครื่อง เรียกว่า พอเปิดปุ้บ ก็ติดปั้บ อะไรทำนองนั้น

ตัวอย่างเช่นเราจะกำหนดว่า ให้เครื่องเราวิ่ง natd -m -u ซึ่งเรารู้อยู่ว่า เพียงแค่สั่ง

natd_enable="YES"

ในแฟ้ม /etc/rc.conf ก็ได้แล้ว แต่กับ option -m -u ล่ะ จะกำหนดยังไง
จากสัญชาติญานดิบ บอกได้ว่า น่าจะตามด้วยพวก _flags นี่แหละ เลยลองเดาดู โดยกำหนดอีกหนึ่งบรรทัด ในแฟ้มเดียวกันนั่นแหละ

natd_flags="-m -u"

แล้วก็สั่ง shutdown now ซึ่งพอเครื่องถามหา shell ก็เคาะ Enter ไปแล้วรีบตามด้วยคำสั่ง exit ทันที และเมื่อระบบเข้าสู่ภาวะปกติ ให้ login เป็น root แล้วตรวจดู process ด้วยคำสั่ง

# ps axw | grep natd | grep -v grep

เราจะพบทันที ดังนี้

2198 ?? Ss 0:00.68 /sbin/natd -m -u -n em0

ก็คงได้แนวคิดบ้างน่ะ และก็ อ้อ หากจะพอมีดีบ้าง ก็ขอยกให้เป็นของขวัญวันเกิดลูก เขาก็แล้วกัน


View My Stats