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
下一篇 2017-04-01

相關推薦

  • 文本處理工具

    一、文本處理工具的分類:     查看全部內容:more、less、cat、tac、rev     截取文件內容:head 、tail     抽取文件內容:cut     抽取關鍵字:grep、eg…

    Linux干貨 2016-08-08
  • iptables

    1.開啟防火墻systemctl start firewalld2.清空所有的默認規則,定義自己的規則iptables -F 查看此時的iptablesiptables -nL Chain INPUT (policy ACCEPT)target prot opt source destination Chain FORWARD (policy ACCEPT)…

    Linux干貨 2017-07-26
  • 磁盤管理(二)之swap、dd工具使用

    磁盤管理(二)之swap、dd工具使用   一、掛載點和/etc/fstab   (1)配置文件/etc/fstab,當系統啟動時,自動加載該文件,會把寫在配置文件里面的所有掛載點全部自動掛載上去,只要按照格式寫,就不會丟失。   (2)文件掛載配置文件,如下圖:    &nbs…

    Linux干貨 2016-08-29
  • 文本處理sed

    文本處理sed Sed介紹:          處理文本的工具sed ,Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,…

    Linux干貨 2017-05-04
  • RAID特性詳解,及RAID創建詳細操作

    寫在前面–命令總覽:創建RAID:mdamd  -C [-l級別  -n盤數量  -cchunk  -a是否詢問] 查看RAID: mdadm –D   停止RAID:mdadm –S  管理RAID:-f標記損壞  -r刪除  -a添加 watch&nbs…

    Linux干貨 2016-02-14
  • SNAT,DNAT,端口轉發

    利用iptables配置NAT

    2018-03-01

評論列表(1條)

  • renjin
    renjin 2017-04-05 15:44

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

欧美性久久久久