Linux基礎學習3

  • 2019 年 10 月 8 日
  • 筆記

目錄

Linux基礎學習3

cat 顯示文本

-E 顯示結尾的$符  -n 對顯示的每一行進行編號  -b 對非空行進行編號  -s 對連續的空行進行壓縮  ###cat (默認)正序顯示    ### tac 倒序顯示

less 分屏顯示文本

向下翻一屏 空格    向下翻一行 回車    q 退出    / 文本  搜索文本    n 向下查找 N向上查找    less 是man命令的默認分頁器

more 分頁顯示文件

默認情況下顯示讀取的百分比    讀取完成自動退出    q 退出    -d 顯示翻屏和退出的提示

head 顯示文件的前面的內容

默認顯示前10行    -# 顯示前#行    -n # 顯示前#行    -c # 顯示前#個字元

tail 顯示文件的後面的內容

默認顯示後10行    -# 顯示後#行    -n # 顯示後#行    -c # 顯示後#個字元,換行符也是一個字元

cut 切割

cut OPTION... [FILE]...  -c 按照字元切割  tail passwd |cut -c2-5  -d 指定切割符,默認是tab  -f # 顯示第#個欄位  #,#,# 顯示離散的多個  #-# 表示連續的  1-5,7 可以結合使用  tail passwd |cut -d: -f1-5,7  tail passwd |cut -d: -f1-5  tail passwd |cut -d: -f1,3,5

paste 合併

默認是相同行合併到一起,默認是tab鍵    -d 執行間隔符    -s 將所有的行按照列來顯示    paste  a.txt b.txt    paste  -d: a.txt b.txt    paste  -s a.txt b.txt 

wc 用來對文本進行統計

[root@localhost test]#wc b.txt   4  5 20 b.txt  行數  單詞數 位元組數 文件名  -l 只顯示行數  -w 只顯示單詞數  -c 只顯示位元組數  -m 只顯示字元數  -L 顯示文件中最長行的長度

sort 排序

Usage: sort [OPTION]... [FILE]...    or:  sort [OPTION]... --files0-from=F  默認是按照字母排序  -r 倒序  -R 隨機排序  -n 按照數字排序  -f 忽略大小寫  -t 指定分隔符  -k # 指定按照第#個欄位進行排序  sort -t: -k3 passwd  sort -nt: -k3 passwd 

uniq合併相同的行

  • 相鄰
  • 完全一樣
-c 顯示相同的行出現的次數  -d 只顯示重複的行  -u 顯示從沒有重複過的行  cut -d" " -f4 d|sort |uniq -c    pv page    uv user

diff 對比文件

[root@localhost test]#echo "123" >> f  [root@localhost test]#diff d f  11a12  > 123  [root@localhost test]#echo "1234" >> d  [root@localhost test]#diff d f  12c12  < 1234  ---  > 123

chown 用來修改所有者和組

Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...    or:  chown [OPTION]... --reference=RFILE FILE...  chown wu c  修改屬主  chown wu:wu c 修改屬主和屬組  chown root.root c  chown :wu c 直接屬組  chown -R wu test 遞歸修改  chown --reference=c d

chgrp 修改文件的屬組

Usage: chgrp [OPTION]... GROUP FILE...    or:  chgrp [OPTION]... --reference=RFILE FILE...

許可權

9位表示許可權    3組    3位表示一組    --- --- ---    - 文件許可權可以讀以下定義      - 屬主  u    - 屬組  g    - 其他  o    - 全部 a    - 每個文件的許可權      - r 讀    - w 寫    - x 執行    - 對於文件來說      - r 可以使用文本查看工具來查看裡面的內容    - w 可以修改文本的內容    - x  執行可以直接./file    - 對於目錄來說      - r 可以使用ls等文件查看的命令查看    - w 可以創建文件,也可以刪除    - x 可以cd進入    - 數字表示      --x      001 1      -w-      010  2      r--      100  4      rw-      110 6      rwx      111 7      r-x      101 5      -wx      011 3

修改許可權

  • 可以直接修改某一類用戶的許可權
chmod u+x c 增加  chmod u-x c 刪除  chmod u=r c 直接賦值

shabang —》 解釋器

  • 可以直接使用數字表示
  • 可以基於某個文件來修改

設定特殊許可權

chattr +i 不能刪除、不能修改、不能變更    lsattr 查看屬性    chattr +a 只能追加數據

vi/vim

打開文件

vim [option] …. file….

+# 直接定位到第#行  +/pattern 打開文件後,直接定位到第一個匹配到patter的地方  -b 以二進位方式打開文件  -d file1 file2 對比打開多個文件  -m file 只讀方式打開文件  -e 直接以末行模式打開

模式

- 命令模式:可以游標,可以粘貼、複製文本,默認  - 插入模式或者編輯模式:可以修改文本  - 末行模式(擴展命令模式):保存、退出等等  - esc 退出當前的模式

模式之間切換

- 命令模式- 插入模式    - i 游標所在處插入    - I 在當前游標所在的行的行首插入    - a 游標所在位置的後面插入    - A 在當前游標所在的行尾插入    - o 在當前游標所在的行的下一行(新開)插入    - O 在當前游標所在的行的上一行(新開一行)插入  - 插入模式- 命令模式    - esc  - 命令模式 -- 末行模式    - :  - 末行模式 -- 命令模式    - esc esc    - esc enter

關閉文件

- 末行模式    - :w 保存    - :q 退出    - :wq 保存並退出    - :q! 強制退出    - :wq!強制保存退出    - :x 保存並退出  - 命令模式    - ZZ 保存退出    - ZQ 不保存退出

擴展命令行模式

- 按":" 來進入  - w 寫入  - q 退出  - wq 保存並退出  - q! 強制退出  - x 保存並退出  - r file 讀入文件  - w file 另存為  - !command 直接執行命令  - r!command 直接把命令的結果寫到文件中

命令模式跳轉

- 字元之間跳轉    - l 向右    - h 向左    - j 向下    - k 向上  - 單詞間跳轉    - w 下一次的單詞的詞首    - e 當前詞的詞尾或者下一個單詞的詞尾    - b 當前詞的詞首或者上一詞的詞首    - # command 直接跳轉#個單詞  - 頁面間跳轉    - H 頁首    - L 頁尾    - M 頁中    - zt 將游標所在行移動到螢幕的頂端    - zb 將游標所在行移動到螢幕的底部    - zz 將游標所在行移動到螢幕的中間  - 行首行尾之間跳轉    - ^ 跳轉到當前游標所在行的第一個非空字元    - 0(數字) 跳轉到行首    - $ 跳轉到行尾  - 行間移動    - #G 跳轉到第#行    - 在命令擴展模式下,直接:# 跳轉到對應的行    - G 直接到最後一行    - gg 跳轉到第一行    - 1G 跳轉到第一行  - 段落之間跳轉(空行)    - { 上一段    - } 下一段  - 翻屏    - ctrl+f 向文件尾部翻一屏    - ctrl+b 向文件首部翻一屏    - ctrl+d 向文件尾部翻半屏    - ctrl+u 向文件首部翻半屏

命令模式編輯

- 字元編輯    - x 刪除游標所在處的字元    - #x 刪除#個字元    - xp 將游標所在處的字元和後面的字元互換位置    - ~ 將游標所在的位置大小寫互換    - J 刪除當前行的換行符  - 替換    - r 替換當前游標所在處的字元    - R 進入替換模式  - 刪除    - d 刪除,需要跟字元跳轉結合    - d$ 刪除到行尾,刪除當前位置    - d0 刪除到行首,當前位置不刪除    - d^ 刪除到非空字元    - dw 刪除一個單詞    - de 向後刪除一個單詞    - db 向前刪除一個單詞    - dd 刪除正行    - # dd 刪除#行    - dG 刪除到結尾    - dgg 刪除到開頭    - D 相當於d$  - 複製    - y,也可以跟字元跳轉結合    - y$    - y0    - y^    - yw    - ye    - yb    - yy 一正行    - #yy 複製#行    - yG 複製到結尾    - ygg 複製到開頭    - Y 複製整行  - 粘貼    - p 如果是整行的話,則粘貼到當前游標所在行的下一行,否則粘貼到游標的後面    - P 如果是整行的話,則粘貼到當前游標所在行的上一行,否則粘貼到游標的前面  - 改變,刪除以後並將模式切換成插入模式    - c 可以跟游標的跳轉做結合    - c$    - c0    - c^    - cw    - ce    - cb    - #command    - cc 刪除正行並插入    - C 相當於c$  - #[i|I|a|A|o|O]string esc 將string粘貼#次  - 搜索    - /pattern 從當前游標往下搜索    - ?pattern 從當前游標往上搜索    - n 同命令相同的方向    - N 同命令相反的方向  - 撤銷    - u 撤銷最近的修改    - # u 撤銷最近的#次修改    - ctrl +r 撤銷之前的撤銷動作    - .  重複最後一次操作    - #. 最後一次操作重複執行#次

命令擴展模式

地址定界    :start,end    # 具體到第#行    #,# 第#行到第#行    #,+n 從第#開始,到第#+n行結束  1,+2 ==>1,3    . 表示當前游標所在的行    $ 表示最後一行    $-1 表示倒數第二行    % 表示全文    /pat1/,/pat2/ 從第一個pat1匹配到的地方,到pat2第一次匹配到的地方    #,/pat/ 從第#行開始,到第一次被pat匹配到的地方    /pat/,$ 從第一次被pat匹配到的到結尾    可以使用的命令    - d  - y  - w file 重新另存為文件  - r file 將文件的內容寫到匹配到的下一行

查找並替換

- 要使用地址定界來進行查找  - s 在擴展命令模式下使用為替換  - 格式: s/要查找的內容/要替換的內容/裝飾器  - 要查找的內容可以使用正則  - 替換的內容不能為正則    - 可以為分組:%s/(nfs.*)/#1/    - 1表示第一個分組內的內容    - 2    - 3    - & 可以代表前面匹配到的內容  - 裝飾器    - i 忽略大小寫    - g 表示全部替換    - gc 每一次替換之前都要詢問是否替換  - 分隔符還可以使用    - @    - #

可視化

- v 面向字元  - V 面向行的  - ctrl +v 面向塊  - 可以結合所有的跳轉鍵進行結合  - 對突出顯示部分可以使用刪除、複製、變更、過濾、替換、另存為等等

打開多個文件

vim file1 file2 file3    :next 下一個    :prev 上一個    :first 第一個    :last 最後一個    :qall 退出全部    :wall 保存全部    :wqall 保存並退出全部    :xall 保存並退出全部

使用多個窗口

vim -o 水平分隔    vim -O 垂直分隔    切換ctrl+w 加上上下左右箭頭

單文件切割

ctrl+w,s 水平切割    ctrl+w,v 垂直切割    ctrl+w,q 取消相鄰的窗口    ctrl+w,o 取消全部窗口

vim工作特性

配置文件    - 全局有效:/etc/vimrc  - 對當前用戶有效: ~/.vimrc  - 行號:set nu  取消 set nonu  - 忽略大小寫(搜索) set ic 取消set noic  - 自動縮進(同上一行) set ai 取消set noai  - 設置高亮顯示(搜索到的內容) set hls  取消set nohls  - 語法高亮 syntax on  取消 syntax off  - 文件格式    - windows格式 set fileformat=dos    - unix set fileformat=unix  - 添加標識線: set cul 取消標識線 set nocul  - 獲取幫助: set all  - 獲取幫助資訊:    - :help    - :help topic    - vimtutor

find

是linux裡面的一個實時查找工具,通過制定路徑完成文件查找    find [options] ..... [查找路徑] [查找條件] [處理動作]    查找路徑:查找的位置,默認是當前文件夾    查找條件:制定查找的標準,文件名、大小、類型、日期等等    處理動作:對符合條件的文件做什麼操作,默認是輸出到螢幕上

查找條件

  - 根據文件名查找      - -name  指定名稱,可以使用正則      - -iname 忽略大小寫      - -links n 引用次數為n的文件      - -regex 後面跟完整路徑,而不是文件名, 必須整個路徑完全匹配  - 制定搜索的層級      - -maxdepth  level 最大的搜索深度,指定的目錄為第1層      - -mindepth level 最小的搜索深度,包括level層    - 根據屬主、屬組來查找      - -user username 查找屬主為username的文件      - -group groupname 查找屬組為groupname的文件      - -uid id 查找屬主為id的文件      - -gid id 查找屬組為id的文件      - -nouser 查找沒有屬主的文件      - -nogroup 查找沒有屬組的文件    - 根據文件類型 -type      - d 目錄      - f 文件      - l 符號鏈接      - s 套接字      - b 塊設備      - c 字元設備      - p 管道文件    - 空文件或者空目錄      - -empty    - 條件      - 與 -a      - 或 -o      - 非 -not    - 摩根定律      - 非(A或者B)  非A 且非B      - 非(A且B)非A或非B      - 排除目錄      - -path    [root@localhost test]#find /etc -name *_config    /etc/ssh/ssh_config    /etc/ssh/sshd_config    [root@localhost test]#find /etc -path /etc/ssh -name *_config        - 按照大小來查找    - -size # (#-1,#] 不包括#-1,包括#    - -size -# [0,#-1] 包括#-1    - -size +# (#,......)  - 按照時間來查找    - -atime # [#,#+1)    - -atime -# (0,#)    - -atime +# [#+1,....]    - 查找7天以後的文件 find -atime +7    - -mtime    - -ctime    - 以分鐘為單位      - -amin      - -mmin      - -cmin

處理動作

- -print 默認的處理動作,顯示在螢幕上  - -ls 類似於ls -l 顯示長格式  - -delete 刪除查找到的文件  - -fls file 將查找的結果以長格式保存到文件中  - -ok command {} ; 對每一個查找到的文件執行command命令,在執行命令之前要先提示用戶是否要執行  - -exec command {} ; 對查到的每一個文件執行command命令,不需要確認,一次性交給後面命令處理

xargs

- 有的命令不支援管道  - 命令參數過長  - xargs 將管道前面的內容一條一條的交給後面命令處理  - 一般會跟find使用

grep

  • Linux 三?客 grep awk sed
  • grep [option] "模式" file
  • option
--color=auto 對匹配到的行添加顏色  -v 取反  -i 不區分大小寫  -n 查找的內容增加行號  -c 列印匹配到的行數  -o 只顯示匹配到的文字  -q 靜默模式  -A # after 向下顯示#行  -B # before 向上顯示#行  —C # context 上下分別顯示#行  -e 或者 grep -e 'user' -e 'root' passwd  -E 擴展正則表達式  -F 不使用正則表達式  -r 遞歸  -w 匹配整個單詞

正則表達式元字元

  • 字元匹配
    • . 任意單個字元
    • [] 匹配指定範圍內的任意單個字元 [0-9] [a-z] [A-Z]
    • [^] 取反
    • [:upper:] 大寫字母
    • [:lower:] 小寫字母
    • [:alnum:] 字母和數字
    • [:alpha:] 大小寫字母
    • [:digit:] 數字
    • [:black:] 空白
    • [:punct:] 標點符號
  • 匹配次數
    • * 表示任意次數
    • .* 任意字元任意次數
    • ? 表示0或者1次
    • + 至少一次
    • {n} 表示n次
    • {m,n} 最少m次,最多n次
    • {n,} 至少n次
    • {,n} 至多n次
  • 位置錨定
    • ^ 開頭
    • $結尾
    • ^$ 空行

    grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 顯示不以#開頭並且不是空行

  • 分組 grep "(c|C)at" a
  • 向後引用
    • 1 前面第一個括弧出現的內容匹配完成之後再後面在出現一次
    • 2
  • 擴展正則表達式
    • 與正則表達式的區別是不需要轉義

壓縮

gzip

  • 壓縮文件
gzip [option]... file  -c 將壓縮結果輸出到螢幕,保留原來的文件  gzip -c passwd > passwd.gz  -1-9 指定壓縮比,默認9  -d 解壓  zcat 不解壓的情況下查看壓縮比內的內容  gunzip 解壓

bzip2

  • bzip [option] file
直接壓縮  bunzip2 解壓  -k 保留原來的文件  -d 解壓  -1-9 指定壓縮比  bzcat 不解壓的情況下查看壓縮包的內容

xz

  • xz [option] file
unxz 解壓  -k 保留原來的文件  -d 解壓  -1-9 指定壓縮比  xzcat 不解壓直接查看

zip

zip [option] zipfile 要壓縮的文件  zip -r network.zip /etc/sysconfig/network-scripts  unzip network.zip

tar

歸檔工具

歸檔  tar cpvf etc.tar /etc  c 創建  v 顯示過程  f 指定歸檔文件  p 把原來的屬性也帶過來  tar -r -f etc.tar /etc 追加  tar -t -f etc.tar 查看歸檔文件內的內容  tar xf etc.tar  解壓文件  tar xf etc.tar -C  -z 使用gzip壓縮  -j 使用bzip2壓縮  -J 使用xz壓縮  --exclude 排除文件

split

split -b 指定大小 文件(只能為文件) 切割以後的名字  -d 指定後綴為數字  -a 指定後綴幾位  cat 切割後的文件 > 新文件

作 者:郭楷豐

出 處:https://www.cnblogs.com/guokaifeng/