/* scrip for google analytic */

Ads 468x60px

วันพุธที่ 30 กันยายน พ.ศ. 2558

"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 3


ระดับผู้อ่าน : ความรู้ด้านคอมพิวเตอร์ *น้อย-ปานกลาง   

หมายเหตุ : ให้ลองทำตามไปด้วยในบางส่วน
สวัสดี ครับ บทความนี้เพื่อเป็นการแชร์ประสบการณ์ที่เคยศึกษา และรวบรวมข้อมูลการเขียนสคลิปนำมาบันทึกเอาไว้ทบทวนเวลาลืมคำสั่งหรือเทคนิค ไปนะครับโดยศึกษาจากเว็บไซต์ต่างประเทศต่างๆรวบรวมเอาไว้ ส่วนmainหลักเว็บไซต์ที่จะเอามาเขียน ก็จะเอาเว็บไซต์ linuxcommand เอา มาเป็นหลักเพราะผมรู้สึกว่า อ่านเว็บไซต์นี้แล้ว ค่อนข้างนำคำสั่งที่จำเป็นและใช้บ่อยมาสอน ส่วนถ้าเป็น  Tip เล็กๆน้อยๆต่างๆก็จะอ้างอิงเอาไว้ให้ผู้ที่สนใจ ติดตามกันไปถ้าอยากศึกษาใน เวอร์ชั่นอังกฤษ

จากบทที่แล้วบทที่ 2 ได้กล่าวถึงวิธีการต่างๆเบื้องต้น ในการสร้างไฟล์ เก็บไฟล์ไว้ที่ไหนถึงจะใช้งานได้ 

 ทำ อะไรให้กับระบบไฟล์ของ linux จึงจะใช้งานไฟล์ที่เราเขียนขึ้นมาได้อย่างสมบูรณ์ รวมถึง Execute ไฟล์นั้นทำอย่างไรไปแล้ว ถ้าผู้ที่สนใจยังไม่ทราบ ก็ลองย้อนกลับไปอ่าน ก่อนได้ครับ

 


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

echo 

คำสั่ง echo เป็นคำสั่งที่ทำหน้าที่แสดงผล ในส่วนของ Argument ที่เราทำการป้อนเข้าไปในหนึ่งบรรทัดพร้อมทั้ง ขึ้นบรรทัดใหม่ให้ทันที




 
เปรียบเทียบ ได้กับการส่งเสียงออกไปแล้วสะท้อนกลับมา (รูปภาพเป็นการยกตัวอย่าง ไม่ใช่ซะทีเดียว ) คำสั่งการแสดงผลไม่ได้มีแต่ echo เพียงอย่างเดียวเท่านั้น ยังมีคำสั่ง print อีกด้วยแต่ความสามารถไม่เหมือนกัน มีข้อแตกต่างไปตามการใช้งาน จะอธิบายให้ฟังในภายหลัง ลองดู man ด้านล่างกันก่อน





ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส




root@root:~# help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.
    
    Display the ARGs, separated by a single space character and followed by a newline, on the standard output.
    
    Options:
      -n do not append a newline
      -e enable interpretation of the following backslash escapes
      -E explicitly suppress interpretation of backslash escapes
    
    `echo' interprets the following backslash-escaped characters:
      \a alert (bell)
      \b backspace
      \c suppress further output
      \e escape character
      \E escape character
      \f form feed
      \n new line
      \r carriage return
      \t horizontal tab
      \v vertical tab
      \\ backslash
      \0nnn the character whose ASCII code is NNN (octal) NNN can be 0 to 3 octal digits
      \xHH the eight-bit character whose value is HH (hexadecimal).  HH can be one or two hex digits
    
    Exit Status:
    Returns success unless a write error occurs.


ในบรรทัด echo: echo [-neE] [arg ...] ก็เทียบได้กับ 
รูปแบบการใช้คำสั่ง echo [options] [string, variables...] นี้

ก็ขึ้นกับว่าจะใช้ option อะไรและ รหัสคำสั่งพิเศษอะไร(escape character)เพื่อให้เหมาะสมกับงาน


OPTION  
- n คือ ทำให้ผลลัพท์ไม่ต้องขึ้นบรทัดใหม่
- e คือ ทำให้ตัวแปรภาษา(interpreter)สามารถใช้ escape  character ได้
- E คือ ทำให้ยกเลิก escape character โดยที่จะต้องใส่ escape character และ arg ไว้ใน "..." (Quotes) ด้วย

ตัวอย่างลองนำไปประยุกษ์ได้เลย

\a  เมื่อใส่แล้วจะเกิดเสียง

root@root:~# echo -e "abcd \a efg"
abcd  efg
\b backspace 1 ครั้ง
root@root:~# echo -e "abcd \befg"
abcdefg
\c ตัดข้อความหลังจาก \c ทิ้งทั้งหมด
root@root:~# echo -e "abcd \c efg"
abcd root@root:~# 
 
\e เป็น escape character
root@root:~# echo -e "abcd \e efg"
abcd   efg
 
\E เป็น escape character
root@root:~# echo -e "abcd \E efg"
abcd   efg
 
\f การขึ้นหน้าใหม่
root@root:~# echo -e "abcd \f efg"
abcd 
      efg
 
\n การขึ้นบรรทัดใหม่
root@root:~# echo -e "abcd \n efg"
abcd 
 efg
 
\r carriage return คือ กลับไปเริ่มต้นใหม่
root@root:~# echo -e "abcd \r efg"
 efg 
 
\t เว้นวรรคแนวนอน ประมาณ 6 เคาะ
root@root:~# echo -e "abcd \t efg"
abcd   efg
 
\v เว้นวรรคแนวนอน
root@root:~# echo -e "abcd \v efg"
abcd 
      efg
 
\\ ใส่ backslash
root@root:~# echo -e "abcd \\ efg"
abcd \ efg
 
\0nnn ใส่รหัสascii ฐาน 8 โดยเปลี่ยนค่าที่ nnn
root@root:~# echo -e "abcd \0100 efg"
abcd @ efg
root@root:~# echo -e "abcd \0444 efg"
abcd $ efg
root@root:~# echo -e "abcd \0555 efg"
abcd m efg
 
\xHH ใส่ 8-bit character ฐาน 16 โดยเปลี่ยนค่าที่ HH
root@root:~# echo -e "abcd \x23 efg"
abcd # efg
root@root:~# echo -e "abcd \x25 efg"
abcd % efg
root@root:~# echo -e "abcd \x27 efg"
abcd ' efg
root@root:~# echo -e "abcd \x28 efg"
abcd ( efg

คำ สั่ง echo เป็นเพียงแค่โปรแกรมการแสดงผลเท่านั้น ไม่สามารถนำมาประมวลผลทางคณิตศาสตร์ได้ เป็นการแสดงข้อความออกมาให้อ่าน แสดงค่าสตริงในตัวแปร การใส่ข้อความสร้างเป็นไฟล์ เป็นต้น


Example แสดงข้อความ



 
ผมจะยกตัวอย่างงานหนึ่ง ถ้าเป็นสมัยก่อนก็อาจจะมีประโยชน์พอสมควร สมัยนี้ก็ไม่แน่ ถ้ามีวิธีดัดแปลงก็อาจจะมีประโยชน์ก็ได้ 

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



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส





สมมติว่าอยากสร้างเว็บเพจขึ้นมาเพจหนึ่ง โดยเพียงคลิ๊กเดียวขึ้นทำอย่างไร ถ้าที่เห็นเลย โปรแกรม IDE หลายตัวต้องมีแน่นอน ปุ่ม "FILE"



ไม่ใช่ นี่มัน ฟาย.....
กด สร้างไฟล์ใหม่ขึ้นจากโปรแกรม 

 

จากภาพด้านบนก็จะได้ ไฟล์ html ออกมา
เช่นกันครับ ที่เราจะทำกันก็เป็นแบบนีี้ แต่ทำอย่างไรมาดูกัน

html ตัวอย่าง

<html>
<head>
    <title>
    The title of your page
    </title>
</head>

<body>
    Your page content goes here.
</body>
</html>
 
เมื่อเอามาใช้ร่วมกับ Echo แล้วเขียนเป็น Scriptจะได้แบบนี้
 
#!/bin/bash

# sysinfo_page - A script to produce an html file

echo "<html>"
echo "<head>"
echo "  <title>"
echo "  The title of your page"
echo "  </title>"
echo "</head>"
echo ""
echo "<body>"
echo "  Your page content goes here."
echo "</body>"
echo "</html>"  
 
หรืออีกวิธี ไม่จำเป็นต้องใช้ Echo ทุกบรรทัด 

#!/bin/bash

# sysinfo_page - A script to produce an HTML file

echo "<html>
 <head>
   <title>
   The title of your page
   </title>
 </head>
 
 <body>
   Your page content goes here.
 </body>
 </html>"


วิธีสร้างไฟล์โดยไม่ต้อง create file ที่หน้า desktop


จะใช้คำสั่ง echo ร่วมกับ character > และ >>


โดยมีข้อแตกต่างกับดังนี้


> เป็นการ save ทับไฟล์เดิม ถ้ายังไม่มี ก็จะสร้างไฟล์ขึ้นใหม่
>> เป็นการ เพิ่มข้อความเข้าไปในไฟล์เดิมถ้ายังไม่มี ก็จะสร้างไฟล์ขึ้นใหม่


ลองทำความเข้าใจกับภาพด้านล่างดูนะครับ 



หรือยังมีอีกวิธี คือ การเขียน script ใช้กับคำสั่ง cat 

โดยคำสั่ง cat นี้จะมีหน้าที่
1.แสดงผลข้อความที่อยู่ใน file บน screen terminal
2.ก็อปปี้ ข้อความของไฟล์ได้
3.การรวมไฟล์
4.การสร้างไฟล์ใหม่






cat filename
cat options filename
cat file1 file2
cat file1 file2 > newcombinedfile  
 
ตามลำดับ ก็ให้นำไฟล์ที่สร้างขึ้นมาเขียนแบบนี้ก็ได้ 
 
#!/bin/bash

# sysinfo_page - A script to produce an HTML file

cat << _EOF_
<html>
<head>
    <title>
    The title of your page
    </title>
</head>

<body>
    Your page content goes here.
</body>
</html>
_EOF_

 
EOF คืออะไร 
  ย่อมาจาก End Of File ซึ่งจะทำให้รู้ว่า ไฟล์สิ้นสุดที่ตรงไหน 
ถ้าไม่มี EOF จะเป็นยังไงกันล่ะ ดังภาพด้านล่างครับ
 


 
มันจะขึ้นข้อความว่า 
 
./textfile2.html: line 17: warning: 
here-document at line 5 delimited by 
end-of-file (wanted `_EOF_') 
 
จะต้องใส่ให้เรียบร้อย 
(Tip&Trick)
(.) dot เป็นสัญลักษณ์บ่งบอกให้ shell รู้ว่าไฟล์ของ path ปัจจุบันนั้นจะถูก execute ก็คือ ถ้าเราต้องการจะ exe ไฟล์ที่ทำการอนุญาตให้สามารถ รันได้ จะต้องใส่part ไว้ด้านหน้าชื่อไฟล์ เช่น /testfile.html ดังนั้นถ้าเราต้องการจะรันไฟล์นั้นๆก็ให้ใส่ dot ลงไปด้วย ก็คือ ./testfile.html
 
ความแตกต่างระหว่าง คำสั่ง echo กับ printf 
ทั้ง สองคำสั่งนี้ล้วนใช้ในการแสดงผล ทั้งสองคำสั่ง เท่าที่ศึกษาเขามันแตกต่างตรงที่ echo มีความเร็วในการแสดงผลมากกว่า เพราะไม่ต้องมาคำนวนผล แต่ส่วน
ความแตกต่างของ printf จะใช้คำสั่งแบบมีรูปแบบดังตัวอย่างด้านล่าง เหมือนกันใช้ในภาษา c


vech="Car"
printf "%s\n" $vech
printf "%1s\n" $vech
printf "%1.1s\n" $vech
printf "%1.2s\n" $vech
printf "%1.3s\n" $vech
printf "%10.3s\n" $vech
printf "%10.1s\n" $vech
no=10
printf "%d\n" $no
big=5355765
printf "%e\n" $big
printf "%5.2e\n" $big
sales=54245.22
printf "%f\n" $sales
printf "%.2f\n" $sales
 
 
 


ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



สรุปบทความ

ใน บทความนี้ก็จะกล่าวถึง การใช้ echo ในการแสดงผลต่างๆ สามารถนำมาใช้การเขียนสคลิปเพื่อแสดงผลออกให้เห็นเอาต์พุตที่เราต้องการ พร้อมยกตัวอย่างให้เห็นว่าถ้าเอาไปสร้างโปรแกรม จะเอาไปใช้เพื่ออะไร และยังมีตัวอย่างให้ลองทำตามดู เพื่อความเข้าใจและมีภาพประกอบแสดงผลลัพธ์ให้เห็น กระทั่งยังมีอีกคำสั่ง ก็คือคำสั่ง cat ที่ใช้ในการอ่านไฟล์ รวมข้อความของทั้งสองไฟล์ได้ การใช้คำสั่งทั้งสองนี้ ขึ้นอยู่กับวัตถุประสงค์ครับ
บทความในครั้งถัดไป จะเขียนถึงเรื่อง การสร้างตัวแปรและค่าคงที่ กฎการตั้งชื่อ และ Environment Variablesต่างๆ , การนำคำสั่งมาใช้ร่วมกับการเขียน script, shell function และ การใช้ if 
ในส่วนของ tip&trick ครั้งถัดไป

Relative Path, shell แต่ละแบบ ครับ

credit of picture




Reference

http://www.unix.com/shell-programming-and-scripting/36980-differenc-between-print-echo.html 

http://www.computerhope.com/unix/uecho.htm 

http://bash.cyberciti.biz/guide/Echo_Command

http://www.cyberciti.biz/faq/howto-use-cat-command-in-unix-linux-shell-script/
 
 
Blogger Templates