第六周小練習

詳細總結vim編輯器的使用并完成一下練習

vim編輯器的基本使用

vim模式: 
1、編輯模式(命令模式) 
2、輸入模式 
3、末行模式 

一、打開文件

vim /path/to/somefile 打開單個文件

如果文件存在為打開,否則保存退出時為新建

vim /path/to/somefile

vim +# : 打開文件,光標定位到自定行行首

vim + : 打開文件,光標定位到最后一行行首

vim +/PATTERN : 打開文件,定位第一次被PATTERN匹配的行的行首

例如: vim +12 /test/inittab 打開文件并定位到第12行

二、關閉文件

1、末行模式關閉文件

:q 退出

:wq 保存并退出

:q! 不保存退出

:w 保存

2、編輯模式下退出

ZZ 保存并退出

ZQ 不保存退出

3、末行模式

:/w /path/to/file 保存到指定路徑

三、移動關標(編輯模式)

1、逐字符移動:

h: 左

l: 右

j: 下

k: 上

#h: 想左移動#個字符(#表示移動指定數目的字符)

2、以單詞我I單位進行移動

w: 移至下一個單詞的詞首

e: 跳至當前或下一個單詞的詞尾

b: 跳至當前或前一個單詞的詞首

執行命令之前可以輸入指定數字表示需要執行幾次命令,例如:

#w #e #b

3w:向后移動到第3個詞首

3、行類跳轉:

0: 絕對字符

^: 行首的第一個非空白字符

$: 絕對行尾

H:當前屏幕的第一行行首

L:當前屏幕最后一行行首

4、行間跳轉

編輯模式

#G : 跳轉至第#行

G : 最行一行

gg:與 1G 作用相同,相當于行首

三、翻屏

Ctrl+f: 向下翻一屏

Ctrl+b: 向上翻一屏 before

Ctrl+d: 向下翻半屏 down

Ctrl+u: 向上翻一屏 up

四、刪除單個字符

x: 刪除出光標所在處的單個字符

#x: 刪除光標所在處及向后的共#個字符

五、刪除命令 d

命令模式下:

d命令跟跳轉符號

#d跳轉符:刪除光標所在跳出范圍共#個

#dw, #de, #db

dd:刪除當前光標所在行s

dd#: 刪除包含當前光標所在行內的#行

末行模式下:

#,#d:刪除從第幾行到第幾行

.d: 表示當前行

$d: 最后一行

+#d: 向下的#行

六、粘貼命令 p

    p: 如果刪除或復制為整行內容,則粘貼至光標所在行的下方,如果復制或刪除的內容為非整行,則粘貼貼至光標所在字符的后面

    P: 如果刪除或復制為整行內容,則粘貼至光標所在行的上方,如果復制或刪除的內容為非整行,則粘貼至光標所在字符的前面

七、復制命令 y

y命令跟跳轉符號

#y[跳轉符]:復制光標所在跳出范圍共#個

yy:復制當前光標所在行

八、替換:r

r: 替換單個字符

R: 替換模式,可以對一行來替換

九、撤銷編輯操作 

命令模式下

u: 撤銷前一次的編輯操作

連續u命令可以撤銷此前的n次操作

#u: 直接撤銷前#次編輯操作

撤銷最近一次的撤銷:Ctrl+r

十一、重復前一次的編輯操作

命令模式下按 .

十二、查找命令模式下

/PATTERN

?PATTERN

N

PATTERN:支持正則表達式

十三、查找并替換在末行模式下使用命令

ADDR1,ADDR2s@PATTERN@string@gi

1,$:第一行到最后一行

%: 表示全文

十四、使用vim編輯多個文件

vim FILE1 FILE2 FILE3…

十五、環境設置(只能末行模式)

1、顯示或取消顯示行號

:set number

:set nu

:set nonu

2、設定vim忽略或區分字符大小寫

:set ignorecase

:set ic

:set noic

3、設定自動縮進

:set autoindent

:set ai

:set noai

4、查找到的文本高亮顯示或取消

:set hlsearch

:set nohlsearch

5、語法高亮

:syntax on

:syntax off

5、查看所有環境指令

:set all

十六、配置文件

/etc/vimrc 全局

~/.vimrc 局部 如果沒有,可以手動創建

練習

1.復制/etc/rc.d/rc/sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的已至少一個空白字符開頭的行首加#

%s/^[[:space:]]\+/#&/g

2.復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符

%s/^[[:space:]]\+//g

3.刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行的#和空白字符

%s/^#[[:space:]]\+//g

4.為/tmp/grub.conf文件中前三行的行首加#號

1,3s/^/#&/

5.將/etc/yum.repos.d/Centos-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0改為1

%s/\(gpgcheck=\|enabled=\)0/\11/g

6.每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為性如etc-201504020202

crontab -e 
0 */4 * * * cp -a /etc /backup/etc-`date +%Y%m%d%H%M`

7.每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如,messages-20150402

crontab -e
0 0 * * 2,4,6 cp -a /var/log /backup/message_logs/messages-`date +%Y%m%d`

8.每天每兩小時去取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

crontab -e 
0 */2 * * * grep "^S" /proc/meminf >> /stats/memory.txt

9.工作日的工作時間內,每兩個小時執行一次echo "howdy"

crontab -e
0 9-18/2 * * 1-5 echo "howdy"

腳本編程練習

  1. 創建目錄/tmp/testdir當前日期時間

  2. 在此目錄創建100個空文件:file1-file100

#!/bin/bash
#
dirname="testdir$(date+%Y%m%d%H%M)"
mkdir /tmp/$dirname
for num in {1..100};do    
    touch /tmp/$dirname/file$num
done

3.  顯示/etc/passwd文件中位于第偶數行的用戶的用戶名

#!/bin/bash
#
sed '1~2d' /etc/passwd|cut -d: -f1

4.  創建10用戶user10-user19;密碼同用戶名

#!/bin/bash
#
for i in {10..19};do
  useradd  user$i
  echo "user$i"|passwd --stdin "user$i"
done

5.  在/tmp/創建10個空文件file10-file19

6.  把file10的屬主和屬組改為user10,一次類推

#!/bin/bash
#
for i in {10..19};do  
    touch /tmp/file$i  
    chown user10:user10 /tmp/file$i
done

原創文章,作者:N24-超,如若轉載,請注明出處:http://www.www58058.com/64240

(0)
N24-超N24-超
上一篇 2016-12-19
下一篇 2016-12-20

相關推薦

  • 9、varnish實現動靜分離、負載均衡、后端服務器健康狀態檢測

    varnish 4.0 版本 varnish實現動靜分離 # vim /etc/varnish/varnish.params VARNISH_LISTEN_PORT=80 –> 修改為80端口 # vim /etc/varnish/default.vcl backend html {    .host = “1…

    Linux干貨 2016-11-13
  • 進程的簡單概念

    什么是進程?進程是載入內存的一個指令集合。 PID代表進程號, centos7之前的第一個進程都為inet。centos7的第一個位systemd 進程優先級分為系統優先級和實時優先級,系統優先級0到139表示,值越大優先級越低。centos6用0到98表示值越大優先級越低 實時優先級用99到0表示,值越大優先級越高。 進程類型:守護進程和前臺進程。(倆者可…

    Linux干貨 2017-05-08
  • Homework Week-11 加密、CA及DNS

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 ——————————————————————&#…

    Linux干貨 2016-11-01
  • CentOS程序包管理

    對于Linux系統而言,其能執行的程序為二進制格式,而對于程序開發者而言,直接利用二進制開發程序是不太現實的,所以一般都是利用高級語言來進行軟件開發,其程序也即稱為源代碼;那么我們在對一個程序進行安裝、升級、卸載、 查詢、校驗等操作時,需要對每個源代碼進行編譯成為二進制程序,那么顯然是不太現實的。所以在各Linux發行版中一般都帶有程序包管理器。 所謂程序包…

    Linux干貨 2016-08-25
  • 馬哥教育網絡班21期-第5周課程練習

    第5周課程練習 1、 顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; # grep "^[[:space:]]\+" /boot/grub/grub.conf 2、 顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; # egrep "…

    Linux干貨 2016-08-02
  • LAMP基于rsyslog+loganalyzer實現日志集中管理及分析

    前言 作為一名運維工程師,查看分析系統日志是每天必做的功課,但每次查看日志都得一臺服務器一臺服務器的看,幾臺服務器還可以這么對付,但如果管理成百上千臺線上服務器,這種方法就捉襟見肘了。于是我們就需要用到日志服務器了,但是如何能讓它更直觀的顯示呢?loganalyzer是一個不錯的選擇,本文將講解如何使用rsyslog+loganalyze實現日志統一管理及分…

    Linux干貨 2015-04-27
欧美性久久久久