1.學習shell腳本以前的基礎知識

什麼是shell】linux

簡單點理解,就是系統跟計算機硬件交互時使用的中間介質,它只是系統的一個工具。實際上,在shell和計算機硬件之間還有一層東西那就是系統內核了。正則表達式

linux發佈版本(Redhat/CentOS)系統默認安裝的shell叫作bash,即Bourne Again Shell,它是sh(Bourne Shell)的加強版本。Bourn Shell 是最先行起來的一個shell,創始人叫Steven Bourne,爲了記念他因此叫作Bourn Shell,簡稱sh。那麼這個bash有什麼特色呢?shell

1)記錄命令歷史bash

命令保存在用戶的家目錄中的.bash_history文件中。有一點須要你知道的是,只有當用戶正常退出當前shell時,在當前shell中運行的命令纔會保存至.bash_history文件中。less

與命令歷史有關的有一個有意思的字符那就是」!」了。經常使用的有這麼幾個應用:(1)!! (連續兩個」!」),表示執行上一條指令;(2)!n(這裏的n是數字),表示執行命令歷史中第n條指令,例如」!100」表示執行命令歷史中第100個命令;(3)!字符串(字符串大於等於1),例如!ta,表示執行命令歷史中最近一次以ta爲開頭的指令。工具

[root@share22 ~]# !!
cd ~
[root@share22 ~]# history |grep 200
  200  ping -c 10 -i 2 202.199.186.26
 1003  history |grep 200
[root@share22 ~]# !200
ping -c 10 -i 2 202.199.186.26
PING 202.199.186.26 (202.199.186.26) 56(84) bytes of data.

--- 202.199.186.26 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 18000ms

[root@share22 ~]# !c
cd ~

2)指令和文件名補全code

按tab鍵,它能夠幫你補全一個指令,也能夠幫你補全一個路徑或者一個文件名。連續按兩次tab鍵,系統則會把全部的指令或者文件名都列出來。進程

3)aliascrontab

經過alias把一個經常使用的而且很長的指令別名一個簡潔易記的指令。若是不想用了,還能夠用unalias解除別名功能。直接敲alias會看到目前系統預設的alias :文檔

[root@share22 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

4)通配符

在bash下,可使用*來匹配零個或多個字符,而用?匹配一個字符。

[root@share22 etc]# ls -d a*
adjtime  aliases  aliases.db  alternatives  anacrontab  asound.conf  audisp  audit  avahi
[root@share22 etc]# ls -d a????
audit  avahi

5)輸入輸出重定向

輸入重定向的命令是<,輸出重定向的命令是>,另外還有錯誤重定向2>,以及追加劇定向>>

1,標準輸入

語法:命令< 文件將文件作爲命令的輸入

[root@share22 etc]# cat < yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0

2,標準輸出

語法:命令> 文件將命令的執行結果送至指定的文件中。

[root@share22 etc]# ls -l > list

3,追加記錄

[root@share22 etc]# ls -l >> list

4,將錯誤信息輸出到指定文件

[root@share22 etc]# find /home -name lost* 2> err_result

5,將標準輸出與錯誤信息分別輸出到指定文件

[root@share22 etc]# find /home -name lost* >result 2> err_result

6,將全部屏幕信息輸出到一個文件

[root@share22 etc]# find /home -name lost* >& all_result
[root@share22 etc]# find /home -name lost* >all_result 2>&1
[root@share22 etc]# find /home -name lost* 2>all_result 1>&2

,7,避開錯誤信息

[root@share22 test]# find /home -name lost* 2>/dev/null

6)管道符

管道符」|」,把前面的命令運行的結果丟給後面的命令。

7)做業控制

當運行一個進程時,你可使它暫停(按Ctrl+z),而後使用fg命令恢復它,利用bg命令使他到後臺運行,你也可使它終止(按Ctrl+c)。

變量

使用env命令便可所有列出系統預設的所有系統變量。使用set命令把系統預設的及用戶自定義變量都顯示出來。

linux shell中的特殊符號

1. * :表明零個或多個字符或數字。

2. ? :只表明一個任意的字符

3. # :這個符號在linux中表示註釋說明的意思,即」#」後面的內容linux忽略掉。

4. \ :脫意字符,將後面的特殊符號(例如」*」 )還原爲普通字符。

5. | :管道符,符號前面命令的結果丟給符號後面的命令。通常針對文檔操做的命令比較經常使用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等,其中grep, sed, awk爲正則表達式必須掌握的工具。

相關文章
相關標籤/搜索