第二章 linux高級命令的簡單使用以及shell腳本的簡單制作

重定向;正則表達式;grep;sed;vim;yum;shell腳本

1)重定向

? ? 1)基本概念

  • 標準輸入?-0

標準輸出-1

標準錯誤-2

 

  • ?。尽 “演敵鲋囟ㄏ虻轿募?/li>

> 把錯誤重定向到文件

&> 把輸出和錯誤重定向到文件

  •  set –C 禁止將內容覆蓋已有文件,但可追加?; set +C 允許覆蓋?; >| file 強制覆蓋
  • ?。荆尽∽芳觾热莸轿募A

   >> 把錯誤內容到文件夾

  ?。Γ荆尽“演敵龊湾e誤追加到文件

  • cmd? errcmd? &> /data/all.log

? ? 2)tr?命令

  • -d?刪除
  • -s?把連續重復字符顯示為一個
  • [:alnum:]:字母和數字 [:alpha:]:字母 [:cntrl:]:控制(非打?。┳址?[:digit:]:數字
    [:graph:]:圖形字符 [:lower:]:小寫字母 [:print:]:可打印字符 [:punct:]:標點符號
    [:space:]:空白字符 [:upper:]:大寫字母 [:xdigit:]:十六進制字符
  • tr? “\n” ”? ”? ? ?\n是回車

? ? 3)?多行重定向

  • cat? << EOF? ?> f1? ? 結束時要在單獨一行輸入EOF結束多行重定向

? ?4)管道? |

  • ls |?tr? ? ‘a-z’? ? ‘A-Z’
  • 命令1 | tee [-a ] 文件名 | 命令2
    把命令1的STDOUT保存在文件中,做為命令2的輸入
    -a 追加

2)grep

1) grep: Global search REgular expression and Print out the line
作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行模式:由正則表達式字符及文本字符所編寫的過濾條件

2) grep [OPTIONS] PATTERN [FILE…

  • ? grep root /etc/passwd? ? root是關鍵詞?搜索含有root的行并顯示,root加顏色
  • grep “$USER” /etc/passwd? 弱引用?效果同上
  • grep ‘$USER’ /etc/passwd? ?強引用? 搜索 $USER
  • grep `whoami` /etc/passwd? ?反向單引號里面是命令且可以執行?grep會查找命令的輸出結果

3) grep命令選項

  • -v: 顯示不被pattern匹配到的行
  • -i: 忽略字符大小寫
  • -n:顯示匹配的行號
  • -c: 統計匹配的行數
  • -o: 僅顯示匹配到的字符串
  • -q: 靜默模式,不輸出任何信息
  • -A #: after, 后#行
  • -B #: before, 前#行
  • -C #:context, 前后各#行
  • -e:實現多個選項間的邏輯or關系
    grep –e ‘cat ’ -e ‘dog’ file
  • -w:匹配整個單詞
  • -F:相當于fgrep,不支持正則表達式

4) 基本正則表達式元字符

  • . 匹配任意單個字符
  • [] 匹配指定范圍內的任意單個字符
  • [^] 匹配指定范圍外的任意單個字符
  • [:alnum:] 字母和數字
  • [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
  • [:lower:] 小寫字母 [:upper:] 大寫字母
  • [:blank:] 空白字符(空格和制表符)
  • [:space:] 水平和垂直的空白字符 (比[:blank:]包含的范圍廣)
  • [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
  • [:digit:] 十進制數字 [:xdigit:]十六進制數字
  • [:graph:] 可打印的非空白字符
  • [:print:] 可打印字符
  • [:punct:] 標點符號

5)正則表達式(匹配次數)

  • * 匹配前面的字符任意次,包括0次
    貪婪模式:盡可能長的匹配
  • .*任意長度的任意字符
  • \? 匹配其前面的字符0或1次
  • \+ 匹配其前面的字符至少1次
  • \{n\} 匹配前面的字符n次
  • \{m,n\} 匹配前面的字符至少m次,至多n次
  • \{,n\} 匹配前面的字符至多n次
  • \{n,\} 匹配前面的字符至少n次

6)正則表達式(位置錨定

  • ^ 行首錨定,用于模式的最左側
  • $ 行尾錨定,用于模式的最右側
  • ^PATTERN$ 用于模式匹配整行
  • ^$?空行
  • ^[[:space:]]*$ 空白行
  • \< 或 \b 詞首錨定,用于單詞模式的左側
  • \> 或 \b 詞尾錨定;用于單詞模式的右側
  • \<PATTERN\> 匹配整個單詞

7)正則表達式( 分組 ?)

  • \(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理?例: \(root\)\+
  • 后向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身? ? \1,\2
  • 或者:\|

8) 擴展的正則表達式?(正則表達式去掉\)

  • 次數匹配:
    *:匹配前面字符任意次
    ?: 0或1次
    +:1次或多次
    {m}:匹配m次
    {m,n}:至少m,至多n次
  • 位置錨定:
    ^ :行首
    $ :行尾
    \<, \b :語首
    \>, \b :語尾
  • 分組:
    ()
    后向引用:\1, \2,
  • 或者:
    a|b: a或b
    C|cat: C或cat
    (C|c)at:Cat或cat

3)vim

1)vim打開文件

  • vim [OPTION]… FILE…
    +#: 打開文件后,讓光標處于第#行的行首,+默認行尾
    +/
    PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的
    行首
    –b file 二進制方式打開文件
    –d file1 file2… 比較多個文件
    -m file 只讀打開文件
  • ex file 或 vim –e 直接進入ex模式
  • 如果該文件存在,文件被打開并顯示內容
    如果該文件不存在,當編輯后第一次存盤時創建它

2)三種模式及模式的切換

  • 三種主要模式:
    1.命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
    2.插入(Insert)或編輯模式: 修改文本
    3.擴展命令(extended command )模式: 保存,退出等
  • Esc鍵 退出當前模式
  • Esc鍵 Esc鍵 總是返回到命令模式

3) 模式轉換

  • 命令模式 –> 插入模式
    i: insert, 在光標所在處輸入
    I:在當前光標所在行的行首輸入
    a: append, 在光標所在處后面輸入
    A:在當前光標所在行的行尾輸入
    o: 在當前光標所在行的下方打開一個新行
    O:在當前光標所在行的上方打開一個新行
  • 插入模式 ——–> 命令模式
    ESC
  • 命令模式 ——–> 擴展命令模式
    :
  • 擴展命令模式 ——–> 命令模式
    ESC,enter

4)關閉文件

  • 擴展模式:
    :q 退出? ? ?推薦使用? ??
    :q! 強制退出,丟棄做出的修改
    :wq 保存退出? ? ?推薦使用
    :x 保存退出
  • 命令模式
    ZZ: 保存退出
    ZQ:不保存退出

5) 擴展模式

  • 按“:”進入Ex模式
  • 創建一個命令提示符: 處于底部的屏幕左側
  • 命令:
    w 寫(存)磁盤文件
    wq 寫入并退出
    x 寫入并退出
    q 退出
    q! 不存盤退出,即使更改都將丟失
    r filename 讀文件內容到當前文件中
    w filename 將當前文件內容寫入另一個文件
    !command 執行命令
    r!command 讀入命令的輸出

6) 命令模式光標跳轉

  • 字符間跳轉:
    h: 左 l: 右 j: 下 k: 上=上下左右
    #COMMAND:跳轉由#指定的個數的字符
  • 單詞間跳轉:
    w:下一個單詞的詞首
    e:當前或下一單詞的詞尾
    b:當前或前一個單詞的詞首
    #COMMAND:由#指定一次跳轉的單詞數
  • 當前頁跳轉:
    H:頁首 M:頁中間行 L:頁底

7) 命令模式光標跳轉

  • 行首行尾跳轉:
    ^: 跳轉至行首的第一個非空白字符
    0: 跳轉至行首
    $: 跳轉至行尾
  • 行間移動:
    #G、擴展模式:# :跳轉至由#指定行
    G:最后一行
    1G, gg: 第一行
  • 句間移動:
    ):下一句 (:上一句
  • 段落間移動:
    }:下一段 {:上一段

8) 命令模式操作

  • 字符編輯:
    x: 刪除光標處的字符
    #x: 刪除光標處起始的#個字符
    xp: 交換光標所在處的字符及其后面字符的位置
    ~:轉換大小寫
    J:刪除當前行后的換行符
  • 替換命令(r, replace)
    r: 替換光標所在處的字符
    R:切換成REPLACE模式
  • 刪除命令:
    d: 刪除命令,可結合光標跳轉字符,實現范圍刪除
    d$: 刪除到行尾
    d^:刪除到非空行首
    d0:刪除到行首
  • dd: 刪除光標所在的行
    #dd:多行刪除
  • D:從當前光標位置一直刪除到行尾,留空行,等同于d$
  • 復制命令(y, yank):
    y: 復制,行為相似于d命令
  • yy:復制行
    #yy: 復制多行
  • Y: 復制整行
  • 粘貼命令(p, paste):
    p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼
    至當前光標所在處的后面
    P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼
    至當前光標所在處的前面

9) 擴展命令模式:地址定界

  • /pat1/,/pat2/
    從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結

    #,/pat/
    /pat/,$

10) 擴展命令模式:查找

  • /PATTERN:從當前光標所在處向文件尾部查找
    ?PATTERN:從當前光標所在處向文件首部查找
    n:與命令同方向
    N:與命令反方向

11) 擴展命令模式:查找并替換

  • 格式:s/要查找的內容/替換為的內容/修飾符
  • 查找內容可以使用格式,替換內容不能但是可以使用\1,\2后向引用
  • i: 忽略大小寫;g: 全局替換
  • 一般形式為s///(/符號可以替換為其他符號例如@;#;%使用文本中不含有的符號以防止混淆)

4)sed

1)地址定界

  • 不給地址:對全文進行處理
  • #: 指定的行,$:最后一行
    /pattern/:被此處模式所能夠匹配到的每一行
  • 地址范圍:
    #,#? ?幾行到幾行
    #,+#? 幾行到+幾
    /pat1/,/pat2/? 第一個關鍵詞到第二個關鍵詞
    #,/pat1/
    ? ?指定行到?關鍵詞
  • ~?步進? 1~2? 從第一行開始隔兩行,奇數;2~2? 取偶數

2)編輯命令

  • d: 刪除模式空間匹配的行,并立即啟用下一輪循環
  • p:打印當前模式空間內容,追加到默認輸出之后
  • a [\]text:在指定行后面追加文本;支持使用\n實現多行追加
  • i [\]text:在行前面插入文本
  • c [\]text:替換行為單行或多行文本
  • w /path/somefile: 保存模式匹配的行至指定文件
  • r /path/somefile:讀取指定文件的文本至模式空間中
    匹配到的行后
  • =: 為模式空間中的行打印行號
  • !:模式空間中匹配行取反處理

3)查找替換( 支持使用其它分隔符 )

  • s///;s@@@
  • g: 行內全局替換
    p: 顯示替換成功的行
    w
    /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

4)高級編輯

  • P:打印模式空間開端至\n內容,并追加到默認輸出之前
  • h: 把模式空間中的內容覆蓋至保持空間中
  • H:把模式空間中的內容追加至保持空間中
  • g: 從保持空間取出數據覆蓋至模式空間
  • G:從保持空間取出內容追加至模式空間
  • x: 把模式空間中的內容與保持空間中的內容進行互換
  • N:讀取匹配到的行的下一行追加至模式空間
  • d: 刪除模式空間中的行
  • D:如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,
    并不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間
    不包含換行符,則會像發出d命令那樣啟動正常的新循環

    示例: sed -n ‘n;p’ FILE? ? 顯示偶數行
    sed ‘1!G;h;$!d’ FILE? ? ? ? ? ? 倒序
    sed ‘N;D‘ FILE? ? ? ? ? ? ? ? ? ? ? 顯示最后一行 ?
    sed ‘$!N;$!D’ FILE? ? ? ? ? ? ? 顯示后兩行
    sed ‘$!d’ FILE? ? ? ? ? ? ? ? ? ? ? ?顯示最后一行 ?
    sed ‘G’ FILE? ? ? ? ? ? ? ? ? ? ? ? ??每行后加一個空行
    sed ‘g’ FILE? ? ? ? ? ? ? ? ? ? ? ? ? ?變成空行顯示出來
    sed ‘/^$/d;G’ FILE? ? ? ? ? ? ?每行后加一個空行
    sed ‘n;d’ FILE? ? ? ? ? ? ? ? ? ? ? ?顯示奇數行
    sed -n ‘1!G;h;$p’ FILE? ? ? ? 倒序

5)yum(以httpd為例)

1) 下載源碼并解壓縮
tar xvf httpd-2.4.29.tar.bz2 -C /usr/local/src/

2)安裝編譯相關工具及依賴的包
yum groupinstall “development tools”

yum install apr-devel apr-util-devel pcre-devel

3)./configure –prefix=/apps/httpd24 –sysconfdir=/etc/httpd24

4)make -j 4

5) make install

6)PATH變量
echo ‘PATH=/apps/httpd24/bin:$PATH’ > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh

7)使用軟件
apachectl 啟動服務

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92538

(0)
陽光和蘇陽光和蘇
上一篇 2018-03-17
下一篇 2018-03-17

相關推薦

  • linux基礎學習第十天(文件查找與壓縮)

    2016-08-12 授課內容: shell的流程控制 文件查找和壓縮 shell的流程控制: 過程式編程語言: 順序執行 選擇執行 循環執行(未講) 順序執行: if語句: 單分支 if 判斷條件; then 條件為真的分支代碼 fi 雙分支 if 判斷條件; then 條件為真的分支代碼 else 條件為假的分支代碼 fi 多分支 if CONDITIO…

    Linux干貨 2016-08-15
  • Zabbix 發現功能中文文檔

    說明:本文譯自 zabbix 官方文檔 Discovery 一節,包括 Network Discovery, Auto Registration和Low level discovery,同時對文章進行了補充以及更詳細的說明。適用于Zabbix 2.0 版本。 發現包括三種類型: 網絡發現 ( Network discovery) 主動客戶端自動注冊 ( Ac…

    Linux干貨 2015-03-12
  • 防護墻服務

    iptables的基本認識        Netfilter組件: 內核空間,集成在linux內核中 擴展各種網絡服務的結構化底層框架 內核中選取五個位置放了五個Hook(勾子)function(INPUT、OUTPUT、FORWARD、PREROUTING、POST ROUTING),而這五個hoot functio…

    2017-08-21
  • N25第二周作業

    第二周作業 一、Linux上的文件管理類命令有哪些,其常用的使用方法以及相關實例演示 演示用結構  [root@centos01 yanshi]# tree -a /tmp/yanshi/   /tmp/yanshi/ ├── a │   └── 1…

    Linux干貨 2016-12-14
  • Vim和nano的區別

    Vim和nano的區別 Linux下有很多文本編輯器,其中系統(不管哪個分支)都會自帶nano和vim這兩個最基本的編輯器。vim相當于vim的升級版。今天將重點分析一下vim與nano的各自功能及區別。 1.nano 直接在命令行中敲入nano newfile即可打開文件或新建文件。 可以看到第一行反白介紹了nano的版本號以及被編輯的文件名稱。接下來就是…

    2017-08-05
  • 馬哥教育網絡班22期+第1周課程練習 忍者亂太郎喻成

    1.計算機組成:  根據馮諾依曼的計算機結構分為四大塊:控制器,運算器, 存儲器,輸入輸出設備 控制器:對其他的組件進行控制 運算器:用于處理計算工作,不控制輸入和輸出 儲存器:用于暫時或長期存儲數據 輸入輸出:與外界進行交互 個人延伸: 我的理解這是一個在計算機研發之前的一個理論假象, 相對現在真實的計算機體系,這個分類會比較模糊。 運算器:cp…

    Linux干貨 2016-08-15
欧美性久久久久