天天看點

vim、find 的使用bash環境變量

    今天我給大家帶來的是VIM,find,指令的使用和bash環境變量的一些内容。

  • vim指令

    vi指令是UNIX作業系統和類UNIX作業系統中最通用的全屏純文字編輯器。Linux中的vi編輯器叫vim,它是vi的增強版,與vi編輯器完全相容,而且實作了很多增強功能。

    vi編輯器有三種模式:輸入模式,指令模式(編輯模式)和末行模式,(預設打開指令模式)

    vim、find 的使用bash環境變量

     文法:   vi(選項)(參數)

      參數解釋:

  1. Ctrl+u:向檔案首翻半屏;
  2. Ctrl+d:向檔案尾翻半屏;
  3. Ctrl+f:向檔案尾翻一屏; 
  4. Ctrl+b:向檔案首翻一屏; 
  5. Esc:從編輯模式切換到指令模式; 
  6. ZZ:指令模式下儲存目前檔案所做的修改後退出vi; 
  7. :行号:光标跳轉到指定行的行首; 
  8. :$:光标跳轉到最後一行的行首;
  9. x或X:删除一個字元,x删除光标後的,而X删除光标前的; 
  10. D:删除從目前光标到光标所在行尾的全部字元; 
  11. dd:删除光标行正行内容;
  12. ndd:删除目前行及其後n-1行;
  13. nyy:将目前行及其下n行的内容儲存到寄存器?中,其中?為一個字母,n為一個數字;
  14. p:粘貼文本操作,用于将緩存區的内容粘貼到目前光标所在位置的下方;
  15. P:粘貼文本操作,用于将緩存區的内容粘貼到目前光标所在位置的上方;
  16. /字元串:文本查找操作,用于從目前光标所在位置開始向檔案尾部查找指定字元串的内容,查找的字元串會被加亮顯示;
  17. ?name:文本查找操作,用于從目前光标所在位置開始向檔案頭部查找指定字元串的内容,查找的字元串會被加亮顯示; 
  18. a,bs/F/T:替換文本操作,用于在第a行到第b行之間,将F字元串換成T字元串。其中,“s/”表示進行替換操作;
  19. a:在目前字元後添加文本; 
  20. A:在行末添加文本; 
  21. i:在目前字元前插入文本;
  22. I:在行首插入文本;
  23. o:在目前行後面插入一空行;
  24. O:在目前行前面插入一空行;
  25. :wq:在指令模式下,執行存盤退出操作; 
  26. :w:在指令模式下,執行存盤操作;
  27. :w!:在指令模式下,執行強制存盤操作; 
  28. :q:在指令模式下,執行退出vi操作;
  29. :q!:在指令模式下,執行強制退出vi操作;
  30. :e檔案名:在指令模式下,打開并編輯指定名稱的檔案;
  31. :n:在指令模式下,如果同時打開多個檔案,則繼續編輯下一個檔案;
  32. :f:在指令模式下,用于顯示目前的檔案名、光标所在行的行号以及顯示比例;
  33. :set number:在指令模式下,用于在最左端顯示行号; 
  34. :set nonumber:在指令模式下,用于在最左端不顯示行号;
  • find指令

    find和localte都查找工具他們的差別:

    locate: 非實時查找工具;依賴于事先建構的索引;索引的建構是在系統較為空閑時自動進行(周期性任務);手動更新此資料庫(updatedb);查找速度快;模糊查找;

    locate -i 忽略大小寫

    find:實時查找;查找速度略慢;精确查找;用來在指定目錄下查找檔案

    find 文法

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

查找路徑:預設為目前路徑;

查找條件:指定的查找标準,可以根據檔案名、大小、屬主屬組、類型等進行;預設為找出指定路徑下的所有檔案;

處理動作:對符合條件的檔案做什麼操作;預設為輸出至螢幕;

     查找條件介紹:

  1. 根據檔案名進行查找:

       -name "檔案名稱": 支援使用glob;

       -iname "檔案名稱":不區分字元大小寫,支援使用glob;

       -regex "PATTERN":以PATTERN比對整個檔案路徑字元串,而不僅僅是檔案名稱;

  1.  根據屬主、屬組查找:

                    -user USERNAME: 查找屬主為指定使用者的檔案;

                    -group GROUPNAME:   根據組查找

                    -uid UserID: 查找檔案的屬主指定uid的檔案;

   -gid GroupID:  查找檔案屬組GID的檔案

                    -nouser: 查找沒有屬主的檔案;

   -nogroup:查找沒有屬組的檔案;

  1. 根據檔案類型進行查找:

指令參數:-type TYPE

f: 普通檔案

d: 目錄

l: 符号連結

b: 塊裝置

c: 字元裝置

p: 命名管道

s: 套接字

  1. 根據組合查找條件:

與條件:-a

或條件:-o

非條件:-not, !

  1. 根據檔案大小來查找:

-size [+|-]#UNIT

機關:k, M, G

下面是5大小的檔案的各種解釋:

vim、find 的使用bash環境變量
  1. 根據時間戳:

       以“天”為機關

-atime 用、戶最近一次通路時間。

-mtime  檔案最後一次修改時間。

-ctime   檔案屬性(例如權限等)最後一次修改時間。

以“分鐘”為機關

-amin   

-mmin

-cmin

下面是時間的表示方法:

vim、find 的使用bash環境變量
  1. 根據檔案的權限:

-perm [/|-]MODE

MODE: 精确權限比對

/MODE:任何一類對象(u,g,o)的任何一位權限符合條件即可;隐含或條件;

-MODE:為每一類對象指定的每一位權限都必須同時存在方為符合條件;隐含與條件;

  1. 處理動作:

-print: 預設處理動作列印到螢幕

-ls:類似于對查找到的每個檔案做"ls -l"的操作;

-delete: 删除查找到的檔案;

-fls /path/to/somefile:查找到的檔案的詳細路徑資訊儲存至指定檔案中;

-ok COMMAND {} \;

對每個檔案執行指定的指令之前需要使用者事先确認;

-exec COMMAND {} \;

無需使用者确認;

  • bash環境變量的簡單介紹:

    配置檔案,生效範圍劃分,存在兩類:

全局配置:/etc/profile, /etc/profile.d/*.sh/etc/bashrc

個人配置:~/.bash_profile ,~/.bashrc

    按功能劃分,存在兩類:

profile類:為互動式登入的shell提供配置

/etc/profile, /etc/profile.d/*.sh

~/.bash_profile

                功用和作用:

(1) 定義環境變量,例如PATH、PS1

(2) 運作指令或腳本

                bashrc類:為非互動式登入shell提供配置

/etc/bashrc

~/.bashrc

(1) 定義指令别名;alias

(2) 定義本地變量;

環境變量:作用範圍目前shell程序及其子程序

本地變量:作用範圍目前shell程序

定義本地變量:

name=value

        檢視:set

        定義環境變量:

export name=value

declare -x name=value  x  指定的變量會成為環境變量

        檢視:env, printenv, export

        撤消變量:unset name

        引用變量:${name}, $name

        bash中的引用符号:

'': 強引用,變量替換不會發生

"":弱引用

``: 指令引用

        shell登入類型:

互動式登入:

直接通過終端進行的登入;

通過su -l Username指令實作的使用者切換;

                非互動式登入:

圖形界面下打開的指令行視窗;

執行腳本;

su Username;

         最重要的是配置檔案作用次序:

        su -l username/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

        su username~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

         編輯配置檔案定義的新配置如何生效?

(1) 重新登入;

(2) 讓目前shell程序去重新讀取指定的配置檔案;

source   /PATH/TO/SOMEFILE

. /PATH/TO/SOMEFILE

下面是一些練習試題:

  1. 複制/etc/grub.cfg配置檔案至/tmp目錄,用查找替換指令删除/tmp/grub.cfg檔案中的行首的空白字元;
%s/^[[:blank:]]/#/g      
vim、find 的使用bash環境變量
  1. 複制/etc/rc.d/init.d/functions檔案至/tmp目錄,用查找替換指令為/tmp/functions的每行開頭為空白字元的行的行首加一個#; 原有空白字元保留;
%s/^[[:blank:]]/#&/g      
vim、find 的使用bash環境變量
  1. 替換/tmp/functions檔案中的/etc/sysconfig/init為/var/log;
%s#/etc/sysconfig/init#/var/log#g      
vim、find 的使用bash環境變量
  1. 删除/tmp/functions檔案中是以#開頭,且#後面至少跟了一個空白字元的行的行首#;
%s/^#\([[:space:]]\+\)/\1/g      
vim、find 的使用bash環境變量
  1. 查找/var目錄屬主為root,且屬組為mail的所有檔案;
find /var -user root -a -group mail -ls      
  1. 查找/usr目錄下不屬于root、bin或hadoop的所有檔案;
find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls      
  1. 查找/etc目錄下最近一周内其内容修改過,且屬主不為root或hadoop的所有檔案;
find /etc/ -atime -7  -a ! \( -user root -o -user hadoop \) -ls      
  1. 查找目前系統上沒有屬主或屬組,且最近一周内曾被通路過的所有檔案;
find /etc/ -atime -7  -a -nouser -a  -nogroup  -ls      
  1. 查找/etc目錄下大于20k且類型為普通檔案的所有檔案;
find /etc/ -size +20k -a -type f -ls      
  1. 查找/etc目錄下所有使用者都沒有寫權限的檔案;
find /etc  -! -perm /222  -ls      
  1. 查找/etc目錄下至少有一類使用者沒有執行權限的檔案;
find /etc -perm /111  -type f -ls      
  1. 查找/etc/init.d目錄下,所有使用者都有執行權限,且其它使用者擁有寫權限的檔案;
find /etc/init.d  -perm  -111 -a -perm -002 -ls      
chmod u+s /tmp/cat      
# chmod g+s /test/data
# chmod g+w /test/data
# chmod o+t /test/data      

繼續閱讀