Bash的基礎特性(二)

Bash的基礎特性(二)

glob文件通配符 (* ; ? ; [ ] ; [^ ] )

  • 星號* 匹配任意所有字符的
    [root@lyp ~]# ls h*
    hello.sh hello.shbak
    ?匹配單個字符
    ls ???? 查看四個字符命名的文件
    [0-9]匹配數字
    [a-z] 字母 字母的順序安裝 a A b B c C… z Z 匹配的a-z
    [A-Z] 字母 字母的順序安裝 a A b B c C… z Z 匹配的A-Z 不要跟符號擴展混淆{A..Z}
    [wang] 匹配列表中的任何的一個字符 ls [wang]* 匹配的是w* a* n* g*
    [^wang] 匹配列表中的所有字符以外的字符 ls [^ab]* 查詢除了a或者b開頭的文件名

  • 常用幾種:
    [:digit:]:任意數字,相當于0-9
    [:lower:]:任意小寫字母
    [:upper:] : 任意大寫字母
    [:alpha:] : 任意大小寫字母
    [:alnum:]:任意數字或字母
    不常用的:
    [:blank:] : 匹配水平空白字符 touch ‘a b’
    [:punct:] : 匹配標點符號 touch ‘a..b’
    [:print:]:可打印字符
    [:cntrl:]:控制(非打?。┳址?
    [:graph:]:圖形字符
    [:xdigit:]:十六進制字符

I/O重定向及管道 ( > ; >> ; 2> ; 2>> ; &> ; &>> . < ; << . | . )

創建文件的時候內核或者內存產生一個記錄專門標識這個文件 fd(file descriptor)
生產常見的故障 開發 打開一個文件沒有執行關閉操作,文件描述符不停增加,內存可能會滿
文件描述符使用完了,這個時候就無法寫文件。

三種最常見的文件描述符去標識我們的三個設備
0 標準輸入(STDIN) 默認鍵盤(指令和數據)
1 標準輸出(STDOUT) 默認終端(顯示器)
2 標準錯誤輸出(STDERR) 默認終端(顯示器)

I/O(IN/Out)重定向,指的改變默認輸入輸出的位置

輸出重定向: > ; >>
  • 標準輸出重定向: >
[root@lyp test]# date > date.log  [root@lyp test]# cat date.log  Tue Mar 28 01:30:46 CST 2017 
  • 標準輸出追加重定向:>>
[root@magedu user]# date >> bash [root@magedu user]# date >> bash [root@magedu user]# cat bash Tue Mar 28 21:48:43 CST 2017 Tue Mar 28 21:48:58 CST 2017 
  • 錯誤輸出重定向: 2>
[root@lyp test]# fdfdfdfd > date.log bash: fdfdfdfd: command not found...
[root@lyp test]# fdfdfdfd 2> date.log [root@lyp test]# cat date.log bash: fdfdfdfd: command not found...
  • 錯誤輸出追加重定向 : 2>>
[root@lyp test]# fdfdfdfd 2>> date.log [root@lyp test]# fdfdfdfd 2>> date.log [root@lyp test]# fdfdfdfd 2>> date.log [root@lyp test]# cat date.log  bash: fdfdfdfd: command not found...
bash: fdfdfdfd: command not found...
bash: fdfdfdfd: command not found...
bash: fdfdfdfd: command not found...
  • &> &>> 將標準輸出和標準錯誤輸出(覆蓋|追加)同一個文件
[root@lyp test]# date &> date.log [root@lyp test]# cat date.log  Tue Mar 28 01:40:48 CST 2017 [root@lyp test]# date &>> date.log [root@lyp test]# cat date.log  Tue Mar 28 01:40:48 CST 2017 Tue Mar 28 01:41:14 CST 2017 [root@lyp test]# datefdfd &>> date.log [root@lyp test]# cat date.log  Tue Mar 28 01:40:48 CST 2017 Tue Mar 28 01:41:14 CST 2017 bash: datefdfd: command not found...
  • (cal 2004;datefdfd) > date.log
    錯誤輸出到終端;標準輸出到date.log中
輸入重定向 : <

先通過tr命令來引入輸入重定向的含義及應用

  • tr [OPTION]… SET1 [SET2]
    tr ‘a-z’ ‘A-Z’ < /etc/fstab
    -d
    [root@lyp test]# tr ‘a-z’ ‘A-Z’ < /etc/fstab > FSTASB.log
    [root@lyp test]# tr -d ‘0-9’ < /etc/fstab
    -c 取指定字符的補集
    [root@lyp test]# tr -d -c ‘0-9’ < /etc/fstab
    tr -d ‘0-9’ < ./fstab > ./fstab 是不會成功的
    -s “s“ 對重復字符去重
  • HERE Document : <<

    • cat << EOF
    • cat >> beijing.log << EOF
      將標準的輸入(下面的字)重定向到beijing.log
      cat >> shanghai.log << ‘EOF’
      where are you from,I’m from $SH
      EOF
      加引號與不加引號的區別:
      加引號(雙引號和單引號)輸入內容里面的變量是不會被替換;
      不加引號的話 輸入的內容里面變量會被替換;
      結束符不一定要使用EOF,可以使用其他任意字符。

寫一個腳本 腳本定義個配置文件,執行腳本的時候自動生成自定義的配置文件
#!/bin/bash

cat >> my.cnf << EOF 或者 ‘EOF’
a=b
b=c
echo $SHELL
EOF

管道

  • 管道 :將一個命令的輸出結果(標準輸出|錯誤輸出)作為另外一個命令輸入,連接程序,實現將前一個命令的輸出直接定向后一個程序當作輸入數據流。
    COMMAND1 | COMMAND2 | COMMAND3 | …
  • tee 就類似于三通的管道 ,經常使用tee分向輸入 。
    tee -a 對日志文件的追加操作
    ls | tee -a baoding.log | tr ‘a-z’ ‘A-Z’ ;
    生產中:日志輸出 | tee -a /tmp/logfile;
    調試生產某個應用的時候,一方面我想要看標準輸入的日志,一方面想把日志保存到某個日志文件里便于日后的排查

原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/72304

(0)
ss
上一篇 2017-04-01 19:16
下一篇 2017-04-01 19:20

相關推薦

  • Keepalived介紹 , 配置說明 , 及實際應用

    1. Keepalived介紹 Keepalived是一個基于VRRP協議來實現的服務高可用方案,可以利用其來避免IP單點故障,類似的工具還有heartbeat、corosync、pacemaker。但是它一般不會單獨出現,而是與其它負載均衡技術(如lvs、haproxy、nginx)一起工作來達到集群的高可用。 1.1 VRRP協議 VRRP全稱 Virt…

    Linux干貨 2016-11-04
  • 關于shell腳本基礎編程第四篇

                                    shell腳本基礎編程第四篇本章主要內容:函數 函數 function:     &n…

    系統運維 2016-08-24
  • N26-第三周博客

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只 顯示一次即可。 [yang@localhost /]$ who | cut -d" " -f 1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost tmp]# last | head -1 3、取出當前系…

    Linux干貨 2017-02-08
  • ansible部分功能詳解

    一. 架構: 組成     ansible core:     modules:     Core Module     Custom Module   Host Inventory: 主機清單       File   &nbs…

    Linux干貨 2016-11-11
  • LVS中nat和dr的原理與用法簡述

      LVS中nat和dr的原理與用法簡述 lvs-nat:   多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發; (1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP; (2)請求報文和響應報文都必須經由Director轉發;Director…

    Linux干貨 2016-10-30
  • N25-第三周作業

    N25第三周作業 博客作業 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@ip-172-31-25-9 ~]# who|awk '{print $1}'|sort -u ec2-user [root@ip-172-31-25-9&n…

    Linux干貨 2017-02-06

評論列表(1條)

  • renjin
    renjin 2017-04-05 15:44

    主要寫了bash的一些基礎特性,主要包括重定向的使用,內容很豐富,排版也挺好的

欧美性久久久久