ระดับผู้อ่าน
:
ความรู้ด้านคอมพิวเตอร์
*น้อย-ปานกลาง
หมายเหตุ
:
ให้ลองทำตามไปด้วยในบางส่วน
สวัสดี
ครับ บทความนี้เพื่อเป็นการแชร์ประสบการณ์ที่เคยศึกษา
และรวบรวมข้อมูลการเขียนสคลิปนำมาบันทึกเอาไว้ทบทวนเวลาลืมคำสั่งหรือเทคนิค
ไปนะครับโดยศึกษาจากเว็บไซต์ต่างประเทศต่างๆรวบรวมเอาไว้
ส่วน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>
<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/