Linux System Admin
Editors
(nano and vi)
Chatchai J.
2014-02-27
Editors
● มมี editor หลายตตัวใหห้เลลือกใชห้บน Linux
● ขขขึ้นอยยยู่กตับลตักษณะงานทมีที่ตห้องการ
● Programmer
– พตัฒนาบน local host แลห้วสยงไปใชห้ทมีที่ remote host
– GUI Editors หรลือ ใชห้ IDE (มมี editor ในตตัว)
Editors
● System / Network Admin
– ตรวจสอบ/แกห้ไข config file
– เขมียน script
● ใชห้งานบนเซซิรร์ฟเวอรร์ (remote host)
● ผยาน Secure shell connection
– Text editor (full screen)
Linux Text Editors
● Nano
● Vi
● Emacs
● มมีอลืที่นๆใหห้เลลือกอมีกมาก
$ apt­cache search editor
Editors
● Default editor คลือ nano
– มาจาก pico
– pico เปป็นสยวนหนขที่งของ pine package
● Freeware แตยไมยใชย open source license
– ใชห้สสาหรตับการอยาน/เขมียน mail
nano
● Full screen editor
● ใชห้ Cursor Navigation
● ไมยมมี search and replace
● มมี syntax hilight
nano
● ใชห้ Control Key สสาหรตับ basic text edit
– Save to file Ctrl-O
– Read from file Ctrl-R
– Exit from editor Ctrl-X
– Cut line(s) Ctrl-K
– Paste line(s) Ctrl-U
– Search Ctrl-W
emacs
● เปป็นทตัขึ้ง editor และ IDE สสาหรตับการพตัฒนา
ซอฟตร์แวรร์
● Full screen editor
● Programmable
● แตยผมไมยเคยใชห้อยยางจรซิงจตัง -_-”
vi
● Default editor กยอนทมีที่จะมมี nano
● มมีใชห้งานบน unix ททุกระบบ
● มมีความสตัมพตันธร์กตับ ed, ex, sed และเครลืที่องมลือ
อลืที่นๆ
● ความรห้ยู่เอาไปใชห้งานรยวมกตันไดห้
vi
● มมีหลาย version ใหห้เลลือกใชห้
– nvi
– vim
● vim-tiny
– elvis
● Default ทมีที่ตซิดตตัขึ้งคลือ vim-tiny
● ถห้าใชห้งานสสาหรตับการเขมียนโปรแกรมดห้วย
ควรตซิดตตัขึ้ง vim เพซิที่ม
Mode ของ vi
● โหมดในการทสางานมมี 3 (6) mode
– Normal Mode - Visual Mode
– Command line Mode - Select Mode
– Insert Mode - Ex Mode
● การทสางาน
$ vi file
● จะเรซิที่มใน Normal Mode
Quit from vi
● ไมยวยาจะอยยยู่ใน mode ใหน
[ESC] :q!
● จะยกเลซิกสซิที่งทมีที่กสาลตัง edit และกลตับสยยู่ shell prompt
[ESC] :wq
[ESC] :x
● จะ save สซิที่งทมีที่กสาลตัง edit และกลตับสยยู่ shell prompt
Quit from vi
● ตห้องการ save แตยใหห้อยยยู่ในชลืที่อไฟลร์อลืที่น
[ESC] :w /tmp/tempfile.txt
[ESC] :q!
● จะ save ลงไปในไฟลร์ชลืที่อ /tmp/tempfile.txt
เรซิที่มใชห้งาน vi
$ vi /tmp/test.sh
● จะเรซิที่มทสางานใน normal mode
● เพซิที่ม text เขห้าไปในไฟลร์ โดยการกด key
i – insert
a – append
● จะเปลมีที่ยนเปป็น insert mode
เรซิที่มใชห้งาน vi
● ออกจาก insert mode โดยใชห้ [ESC]
● ใน insert mode สามารถใชห้คมียร์ลยู่กศร, DEL,
BACKSPACE ไดห้
● ตห้องการ save ใหห้ใชห้
[ESC] :w
หยทุดแคยนมีขึ้
● ใน 5 slide ทมีที่ผยานมา
– วซิธมีการเรมียกใชห้ (vi file) – 1 slide
– วซิธมีการ quit – 2 slide
– การ edit – 1 slide
– การ save – 1 slide
● เกลือบเทยากตับการใชห้งานฟตังกร์ชตันหลตักของ nano
Editor
ทสาไมถขงจะกลตับไปใชห้ nano?
Editor
มาดยู่ vi กตันตยอ
Mode of VI
● Normal Mode
● Command Line Mode
● Insert Mode
● การใชห้งานโดยทตัที่วไปในการ edit file เราจะ
switch ไปมาระหวยาง mode เหลยานมีขึ้
Normal mode
● ใน Normal Mode เราจะไมยเหป็น key ทมีที่เราพซิมพร์
ลงไป แตย “โดยทตัที่วไป” เราจะเหป็น “ผลลตัพธร์”
ของ key นตัขึ้นๆทตันทมี
Command Line Mode
● จาก normal mode จะเปลมีที่ยนเปป็น command line mode
โดยการใชห้ key colon ':'
● cursor จะไปแสดงบรรทตัดลยางสทุด หลตังเครลืที่องหมาย
โคลอน พรห้อมทมีที่จะรตับคสาสตัที่ง สซิที่งทมีที่พซิมพร์จะมองเหป็น
● หลตังจากทสาคสาสตัที่งใน command line mode เสรป็จแลห้ว จะ
กลตับสยยู่ normal mode
Insert Mode
● จาก normal mode เมลืที่อใชห้ key
– A,a – append text
– I,i – insert text
– O.o – open new line
● กป็จะอยยยู่ใน insert mode จนกระทตัที่งกดปยทุม [ESC]
กป็จะกลตับ normal mode
motion
● ทดลอง normal mode
$ vi /etc/passwd
● การเคลลืที่อน cursor ไปในไฟลร์
J up
H L left right
K down
● เทมียบไดห้กตับคมียร์ลยู่กศร
Motion in normal mode
● 0 => ไป ตห้นบรรทตัด
● $ => ไป ทห้ายบรรทตัด
● Ctrl-F => forward == PgDn
● Ctrl-B => backward == PgUp
● มมีการเคลลืที่อนทมีที่ใน command mode อมีกหลาย key
แตยโดยสยวนใหญยแลห้ว ผมใชห้เทยานมีขึ้
motion รยวมกตับ command line mode
● การ edit config หรลือ source code ไฟลร์โดยทตัที่วไป
จะใชห้งานรยวมกตัน ระหวยาง normal mode กตับ
command line mode
● กยอนอลืที่น แสดง line number
:se nu
:set number
Motion ใน command line mode
● ไปบรรทตัดทมีที่ 20
:20
● ไปบรรทตัดสทุดทห้ายของไฟลร์
:$
● ไปบรรทตัดแรก
:1
ใชห้รยวมกตับ search
● หาคสาวยา 'bash'
/bash
:/bash
● หาแบบ backward
?bash
:?bash
Edit ใน normal mode
● x – delete character
● d? - delete บางอยยาง
– dd delete line
– dw delete word
– D ลบไปจน end-of-line
– ทดลอง dh, dj, dk, dl
Edit ใน normal mode
● เราสามารถระบทุการทสาซสขึ้าของคสาสตัที่งนตัขึ้นๆไดห้
โดยใสยตตัวเลขไปขห้างหนห้า เชยน
10dw – ลบ 10 คสา
10dd – ลบไป 10 บรรทตัด
ทดลอง edit
● ทดลองพซิมพร์
:1 เพลืที่อไปบรรทตัดทมีที่ 1
100dd ลบไป 100 บรรทตัด
u undo
:%d ลบททุกบรรทตัดโดยใชห้ command line
ทดลอง edit
● ทดลองพซิมพร์
10a จะเขห้าสยยู่ insertmode
1234567890 แลห้วเคาะ [ESC] เพลืที่อกลตับ
command line mode
● เกซิดอะไรขขขึ้น?
ทดลอง edit
● ใน normal mode การ delete แตยละครตัขึ้ง จะเกป็บ
ขห้อมยู่ลทมีที่ลบเขห้า buffer
● ขห้อมยู่ลใน buffer สามารถ paste กลตับมาไดห้โดยใชห้
key 'p'
● ขห้อมยู่ลสามารเกป็บเขห้า buffer โดยไมยตห้อง delete โดย
ใชห้ key 'y' – yank
ทดลอง edit
● ทดลองพซิมพร์
yy เกป็บขห้อมยู่ลทมีที่บรรทตัดนตัขึ้นเขห้า buffer
5p paste ขห้อมยู่ลใน buffer ซสขึ้า 5 ครตัขึ้ง
Edit ใน command line mode
● สยวนใหญยแลห้ว ผมจะใชห้ search กตับ replace
● จากขห้อมยู่ลของ /etc/passwd ทมีที่ edit ไปแลห้ว ใชห้
:e!
● เพลืที่อ restore ขห้อมยู่ลทมีที่แกห้ไขกลตับมา
● หรลืออาจจะใชห้ u ใน normal mode ไปเรลืที่อยๆ
Edit ใน command line mode
● เพซิที่ม เครลืที่องหมาย '#' หนห้าบรรทตัดทมีที่ 2 – 8
:2,8s/^/#/
● ':' คลือเขห้าสยยู่ command line mode
'2,8' ใหห้ทสาคสาสตัที่งตยอไปนมีขึ้ จากบรรทตัดทมีที่ 2 ถขงบรรทตัดทมีที่
8
's/^/#/' search หา ตห้นบรรทตัด และ replace ดห้วย #
Command line mode
● การใชห้งานในสยวนนมีขึ้ จะขขขึ้นอยยยู่กตับ regular
expression อยยยู่มาก
● ซขที่งจะพยู่ดถขงในเรลืที่อง regular expression ตยอไป
… slide ยตังไมยเสรป็จ ….
คสาสตัที่งอลืที่น
● อยานจากไฟลร์อลืที่น
:r /etc/group อยานจากไฟลร์ /etc/group
● เขมียนลงไฟลร์อลืที่น
:w /tmp/out.txt เขมียนลงไฟลร์ /tmp/out.txt

Editors for-linux

  • 1.
    Linux System Admin Editors (nanoand vi) Chatchai J. 2014-02-27
  • 2.
    Editors ● มมี editorหลายตตัวใหห้เลลือกใชห้บน Linux ● ขขขึ้นอยยยู่กตับลตักษณะงานทมีที่ตห้องการ ● Programmer – พตัฒนาบน local host แลห้วสยงไปใชห้ทมีที่ remote host – GUI Editors หรลือ ใชห้ IDE (มมี editor ในตตัว)
  • 3.
    Editors ● System /Network Admin – ตรวจสอบ/แกห้ไข config file – เขมียน script ● ใชห้งานบนเซซิรร์ฟเวอรร์ (remote host) ● ผยาน Secure shell connection – Text editor (full screen)
  • 4.
    Linux Text Editors ●Nano ● Vi ● Emacs ● มมีอลืที่นๆใหห้เลลือกอมีกมาก $ apt­cache search editor
  • 5.
    Editors ● Default editorคลือ nano – มาจาก pico – pico เปป็นสยวนหนขที่งของ pine package ● Freeware แตยไมยใชย open source license – ใชห้สสาหรตับการอยาน/เขมียน mail
  • 6.
    nano ● Full screeneditor ● ใชห้ Cursor Navigation ● ไมยมมี search and replace ● มมี syntax hilight
  • 7.
    nano ● ใชห้ ControlKey สสาหรตับ basic text edit – Save to file Ctrl-O – Read from file Ctrl-R – Exit from editor Ctrl-X – Cut line(s) Ctrl-K – Paste line(s) Ctrl-U – Search Ctrl-W
  • 8.
    emacs ● เปป็นทตัขึ้ง editorและ IDE สสาหรตับการพตัฒนา ซอฟตร์แวรร์ ● Full screen editor ● Programmable ● แตยผมไมยเคยใชห้อยยางจรซิงจตัง -_-”
  • 9.
    vi ● Default editorกยอนทมีที่จะมมี nano ● มมีใชห้งานบน unix ททุกระบบ ● มมีความสตัมพตันธร์กตับ ed, ex, sed และเครลืที่องมลือ อลืที่นๆ ● ความรห้ยู่เอาไปใชห้งานรยวมกตันไดห้
  • 10.
    vi ● มมีหลาย versionใหห้เลลือกใชห้ – nvi – vim ● vim-tiny – elvis ● Default ทมีที่ตซิดตตัขึ้งคลือ vim-tiny ● ถห้าใชห้งานสสาหรตับการเขมียนโปรแกรมดห้วย ควรตซิดตตัขึ้ง vim เพซิที่ม
  • 11.
    Mode ของ vi ●โหมดในการทสางานมมี 3 (6) mode – Normal Mode - Visual Mode – Command line Mode - Select Mode – Insert Mode - Ex Mode ● การทสางาน $ vi file ● จะเรซิที่มใน Normal Mode
  • 12.
    Quit from vi ●ไมยวยาจะอยยยู่ใน mode ใหน [ESC] :q! ● จะยกเลซิกสซิที่งทมีที่กสาลตัง edit และกลตับสยยู่ shell prompt [ESC] :wq [ESC] :x ● จะ save สซิที่งทมีที่กสาลตัง edit และกลตับสยยู่ shell prompt
  • 13.
    Quit from vi ●ตห้องการ save แตยใหห้อยยยู่ในชลืที่อไฟลร์อลืที่น [ESC] :w /tmp/tempfile.txt [ESC] :q! ● จะ save ลงไปในไฟลร์ชลืที่อ /tmp/tempfile.txt
  • 14.
    เรซิที่มใชห้งาน vi $ vi /tmp/test.sh ● จะเรซิที่มทสางานในnormal mode ● เพซิที่ม text เขห้าไปในไฟลร์ โดยการกด key i – insert a – append ● จะเปลมีที่ยนเปป็น insert mode
  • 15.
    เรซิที่มใชห้งาน vi ● ออกจากinsert mode โดยใชห้ [ESC] ● ใน insert mode สามารถใชห้คมียร์ลยู่กศร, DEL, BACKSPACE ไดห้ ● ตห้องการ save ใหห้ใชห้ [ESC] :w
  • 16.
    หยทุดแคยนมีขึ้ ● ใน 5slide ทมีที่ผยานมา – วซิธมีการเรมียกใชห้ (vi file) – 1 slide – วซิธมีการ quit – 2 slide – การ edit – 1 slide – การ save – 1 slide ● เกลือบเทยากตับการใชห้งานฟตังกร์ชตันหลตักของ nano
  • 17.
  • 18.
  • 19.
    Mode of VI ●Normal Mode ● Command Line Mode ● Insert Mode ● การใชห้งานโดยทตัที่วไปในการ edit file เราจะ switch ไปมาระหวยาง mode เหลยานมีขึ้
  • 20.
    Normal mode ● ในNormal Mode เราจะไมยเหป็น key ทมีที่เราพซิมพร์ ลงไป แตย “โดยทตัที่วไป” เราจะเหป็น “ผลลตัพธร์” ของ key นตัขึ้นๆทตันทมี
  • 21.
    Command Line Mode ●จาก normal mode จะเปลมีที่ยนเปป็น command line mode โดยการใชห้ key colon ':' ● cursor จะไปแสดงบรรทตัดลยางสทุด หลตังเครลืที่องหมาย โคลอน พรห้อมทมีที่จะรตับคสาสตัที่ง สซิที่งทมีที่พซิมพร์จะมองเหป็น ● หลตังจากทสาคสาสตัที่งใน command line mode เสรป็จแลห้ว จะ กลตับสยยู่ normal mode
  • 22.
    Insert Mode ● จากnormal mode เมลืที่อใชห้ key – A,a – append text – I,i – insert text – O.o – open new line ● กป็จะอยยยู่ใน insert mode จนกระทตัที่งกดปยทุม [ESC] กป็จะกลตับ normal mode
  • 23.
    motion ● ทดลอง normalmode $ vi /etc/passwd ● การเคลลืที่อน cursor ไปในไฟลร์ J up H L left right K down ● เทมียบไดห้กตับคมียร์ลยู่กศร
  • 24.
    Motion in normalmode ● 0 => ไป ตห้นบรรทตัด ● $ => ไป ทห้ายบรรทตัด ● Ctrl-F => forward == PgDn ● Ctrl-B => backward == PgUp ● มมีการเคลลืที่อนทมีที่ใน command mode อมีกหลาย key แตยโดยสยวนใหญยแลห้ว ผมใชห้เทยานมีขึ้
  • 25.
    motion รยวมกตับ commandline mode ● การ edit config หรลือ source code ไฟลร์โดยทตัที่วไป จะใชห้งานรยวมกตัน ระหวยาง normal mode กตับ command line mode ● กยอนอลืที่น แสดง line number :se nu :set number
  • 26.
    Motion ใน commandline mode ● ไปบรรทตัดทมีที่ 20 :20 ● ไปบรรทตัดสทุดทห้ายของไฟลร์ :$ ● ไปบรรทตัดแรก :1
  • 27.
    ใชห้รยวมกตับ search ● หาคสาวยา'bash' /bash :/bash ● หาแบบ backward ?bash :?bash
  • 28.
    Edit ใน normalmode ● x – delete character ● d? - delete บางอยยาง – dd delete line – dw delete word – D ลบไปจน end-of-line – ทดลอง dh, dj, dk, dl
  • 29.
    Edit ใน normalmode ● เราสามารถระบทุการทสาซสขึ้าของคสาสตัที่งนตัขึ้นๆไดห้ โดยใสยตตัวเลขไปขห้างหนห้า เชยน 10dw – ลบ 10 คสา 10dd – ลบไป 10 บรรทตัด
  • 30.
    ทดลอง edit ● ทดลองพซิมพร์ :1เพลืที่อไปบรรทตัดทมีที่ 1 100dd ลบไป 100 บรรทตัด u undo :%d ลบททุกบรรทตัดโดยใชห้ command line
  • 31.
    ทดลอง edit ● ทดลองพซิมพร์ 10aจะเขห้าสยยู่ insertmode 1234567890 แลห้วเคาะ [ESC] เพลืที่อกลตับ command line mode ● เกซิดอะไรขขขึ้น?
  • 32.
    ทดลอง edit ● ในnormal mode การ delete แตยละครตัขึ้ง จะเกป็บ ขห้อมยู่ลทมีที่ลบเขห้า buffer ● ขห้อมยู่ลใน buffer สามารถ paste กลตับมาไดห้โดยใชห้ key 'p' ● ขห้อมยู่ลสามารเกป็บเขห้า buffer โดยไมยตห้อง delete โดย ใชห้ key 'y' – yank
  • 33.
    ทดลอง edit ● ทดลองพซิมพร์ yyเกป็บขห้อมยู่ลทมีที่บรรทตัดนตัขึ้นเขห้า buffer 5p paste ขห้อมยู่ลใน buffer ซสขึ้า 5 ครตัขึ้ง
  • 34.
    Edit ใน commandline mode ● สยวนใหญยแลห้ว ผมจะใชห้ search กตับ replace ● จากขห้อมยู่ลของ /etc/passwd ทมีที่ edit ไปแลห้ว ใชห้ :e! ● เพลืที่อ restore ขห้อมยู่ลทมีที่แกห้ไขกลตับมา ● หรลืออาจจะใชห้ u ใน normal mode ไปเรลืที่อยๆ
  • 35.
    Edit ใน commandline mode ● เพซิที่ม เครลืที่องหมาย '#' หนห้าบรรทตัดทมีที่ 2 – 8 :2,8s/^/#/ ● ':' คลือเขห้าสยยู่ command line mode '2,8' ใหห้ทสาคสาสตัที่งตยอไปนมีขึ้ จากบรรทตัดทมีที่ 2 ถขงบรรทตัดทมีที่ 8 's/^/#/' search หา ตห้นบรรทตัด และ replace ดห้วย #
  • 36.
    Command line mode ●การใชห้งานในสยวนนมีขึ้ จะขขขึ้นอยยยู่กตับ regular expression อยยยู่มาก ● ซขที่งจะพยู่ดถขงในเรลืที่อง regular expression ตยอไป … slide ยตังไมยเสรป็จ ….
  • 37.
    คสาสตัที่งอลืที่น ● อยานจากไฟลร์อลืที่น :r /etc/group อยานจากไฟลร์/etc/group ● เขมียนลงไฟลร์อลืที่น :w /tmp/out.txt เขมียนลงไฟลร์ /tmp/out.txt