Vim 基礎

文本編輯類型:

    全屏編輯器: Vim, Vi, Nano

    行編輯器: sed

打開操作:

    +#:打開文件直接讓光標處於第#行, 直接使用+,會在文件最末尾

編輯操作:

    i(insert), a(append), o(open打開一個新行) , I (行首輸入),A(行尾) ,O(上方打開 一個新行) ,c (change),C

    #command:一次跳過指定的字符

    單詞間跳轉w(下一個), b(前一個), e(當前或下一個)

    ^ 行首第一個非空白字符

    0 行首

    $ 行尾

行間移動

    #G:跳轉到#指定行

    G:最後一行

    gg, 1g:第一行

    (  ) :句間移動

    {}:行間移動

編輯命令

    x:刪除光標處的字符

    #x: 刪除光標所在處的後#幾個字符

    p: 粘貼

    d: 刪除   d$, d0,dw ,de ,dw,db,d^

    dd:刪除所在行

    p: 粘貼當前行的所在行的下方

    P:粘貼當前行的所在行的上方

    y:複製(yank):

    ye ,yw, yb

    yy:複製行

    #yy 複製多行

改變命令

    c:修改

    編輯命令 --- 輸入命令

替換命令

    r:替換光標所在處的字符(不常用 ) 如ra 替換bbc 爲abc

可視化模式

    v:按字符選定

    V:按行選定

撤銷操作

    u(undo):撤銷此前操作

    撤銷撤銷: ctrl +r (restore)

翻屏操作:

    ctrl +f

    ctrl + b

    ctrl + d   向尾部翻半屏

    ctrl + u  向首部翻半屏

    vimtutor 教程

vim末行模式

    內建

    地址定界

        :start_pos,end_pos例如1,3從1到3 行

    .:當前行

    $:最後一行

    %:全文 相當於1,$

    /pat1/,/pat2/:從第一次被 pat1 匹配到的行到第一次被pat2匹配到的結束

    查找

    /pattern 從當前光標所在處向文件尾部查找

    ?pattern 從當前光標所在處向文件首部查找

                n:與命令同方向

                N:與命令反方向

  查找與替換

    s:  在末行模式操作

            s/要查找的內容/替換爲的內容/修飾符

        可以使用模式

         修飾符:i 忽略大小寫

                g:全局替換,默認情況下,每一行只替換第一次出現.例如 1,$s/e\(..\)0/E\1O/g,    %s/r..t/&er/g(&爲引用前面的r..t)

        可以替換分隔符爲#,@,等

 多文件模式

    vim  file1 file2,file3 ....

    :next

    :prev

    :first

    :last

    :wall

    :qall

窗口分割模式:

    vim -o|-O FILE1  FILE2

    -o水平分割

    -O:垂直分割

    在窗口間切換:ctrl + w, arrow

    在單文件切割: ctrl +w ,s,水平分割, ctrl +w ,v,垂直分割

定製VIM的工作特性

    全局:/etc/vimrc

    個人:~/.vimrc

 末行:當前進程有效

顯示等號:set nu       set nonu

 匹配:set showmatch簡寫 set sm , set nosm

自動縮進:set ai      set noai

高亮搜索: set hlsearch   highlight  set nohisearch

語法高亮: syntax on    syntax off

忽略大小寫: set ic   set noic

    

bash 測試

    -e:文件是否存在

   存在及類別測試

    -b: 存在且爲塊設備文件   -p -c  -S -l -d   -h 

    -z:如果 string 的長度爲 0 則爲真。

    -nt :file1 新於 file2 , -ot :file1 舊於 file2

文件查找:在文件系統上找到符合條件的文件

    文件查找:locate, find

    非實時查找:locate(依賴於是否存在索引,索引構建過程需要遍歷整個根文件系統,消耗系統資源。查找速度快,模糊查找。)

          locate 要查找的文件file

    實時查找:find.通過遍歷指定路徑下的文件系統完成文件查找。查找速度略慢,精確查找

          find [OPTION]  查找路徑 查找條件  處理動作

           查找路徑:指定具體查找路徑,默認爲當前目錄

           查找條件:默認爲找出指定路徑下的所有文件

                -name "文件名稱", 支持glob  * . ?    find ./ -name "*.sh"(嚴格區分文件大小寫)  -iname:忽略大小寫

                -regex "模式" :   支持使用正則表達式。

                -user USERNAME :查找指定用戶的文件   find ./ -user cwb -ls

                -group GROUPNAME

                -uid UserID  -gid Gid

                -nouser:用戶被刪除了,沒有屬主的文件

                -nogroup      這些操作應該去做,找到將其刪除,防止別人趁虛而入

               -type TYPE: f   d  l  s b c  p

                組合查找 -not  -a  -o   # find ./ -type f  \( -user cwb -o -user root \) -ls  如果整個條件取反時, -a 要變- o 或者-o變成-a

       根據大小來查找

        -size [+|-]   k m g

        #UNIT :(#-1, # ]

        -#UNIT :(#-1, # ]

        +#UNIT :(#-1, # ] ,以上的都算

    根據時間戳查找

        以天查找  -atime

            -ctime

            -mtime     find ./ -mtime +3  3天之前修改過的,  -3 3天修改過的

         以分鐘 -amin -cmin -mmin

    -perm 精確查找 find ./ -perm 644 -ls (精確匹配權限)。find ./  -perm /+222 -ls(至少有222權限中的一個) find ./  -perm /-222 -ls(每一類對象都必須同時擁有爲其指定的權限標準)

        -print :顯示到屏幕

        -ls 找到的文件執行"ls -l"

        -delete 刪除找到的文件

        -fls /path/to/somefile :查找到所有文件的長格式信息保存到指定文件中

        -ok COMMAND {}  \;  對查找到的每個文件執行由COMMAND指定的命令(交互式的,要求用戶確認) {}:用於查找到文件名稱自身。 find ./ -cmin -5 -exec mv {} {}.new \;

        -exec COMMAND {}  \; 

        find . -name "*.txt" -print                          在當前目錄中查.txt文件並顯示
find . -name "[A-Z]*" -print                         查以大寫字母開頭的文件
find . -name "[a-z][a-z][0--9][0--9].txt" -print     查以兩個小寫字母和兩個數字開頭的txt文件
find . -size +1000000c -print                        查長度大於1Mb的文件
find . -size 100c -print                             查長度爲100c的文件
find . -size +10 -print                              查長度超過期作廢10塊的文件(1塊=512字節)
find . -name "host*" -print                          查以host開頭的文件
find . -name "ap*" -o -name "may*"                   查找以ap或may開頭的文件
find . -name "tom.txt" [!] -ftype vfat               查找名稱爲tom.txt且文件系統類型不爲or爲vfat的文件
find . -name "wa*" -type l                           查找名爲wa開頭且類型爲符號鏈接的文件
find . [!] -type d -print                            查找非目錄或者目錄文件
find . -empty                                        查找大小爲0的文件或空目錄
find . -name "passwd*" -exec grep david {} \         看是否存在david用戶
find . -perm 755 -print -exec ls -l {} \             查所有用戶都可讀寫執行的文件
find . -name "tmp.txt" -exec cat {} \                查找temp.txt文件並查看
find . -name "tmp.txt" -ok rm {} \                   查找temp.txt文件並刪除
find . -mtime -2                                     在.下查最近兩天內改動過的文件
find . -atime -1                                     查1天之內被存取過的文件
find . -mmin +60                                     在.下查60分鐘前改動過的文件
find . -amin +30                                     查最近30分鐘前被存取過的文件
find . -user david                                   列出.目錄內屬於用戶david的文件或目錄
find . -uid +501                                     列出.目錄內用戶的uid大於501的文件或目錄
find . -group david                                  列出.組內爲david的文件或目錄
find . -gid 501                                      列出.組內id爲501的文件或目錄

# find /etc/ -not -perm /+222 -ls 都沒有寫權限。
suid sgid sticky  chmod 4777 /tmp/a.txt
       

        

        

    

    

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章