管道符:管道符号用于把前一個指令的結果傳遞給另一條指令
示例:
1、統計一個檔案的行數
指令:cat /etc/passwd | wc -l

2、統計目前檔案夾下檔案個數
指令: ls | wc -l
3、統計某個目錄下所有檔案總數
指令: find -type f | wc -l
管道符在實際應用中經常用到。
作業控制有點類似windows下的背景,windows下可以按ctrl+Tab在不同程式間切換,liunx下也可以實作類似的功能,把正在執行的指令“挂起”到背景。
一個終端隻有一個前台,有時候
作業控制涉及的指令
ctrl+z:把指令暫定,在背景停止,可用fg恢複
ctrl+c:終止指令執行
fg:前台
bg:把程式放到背景
COMMAND &:把指令直接放到背景執行
jobs:檢視背景任務
screen:
操作示例
1、把正在執行的vim指令暫定
2、恢複暫停的指令
指令的執行恢複了。
3、有的指令支援在背景繼續運作,那麼我們可以把指令放到背景運作。
們把vmstat指令放到背景運作
可以看到他仍在不停的運作,但是我們仍可以輸入其他指令對系統進行操作。這和ctrl+z不一樣,ctrl+z程式就不動了。
4、job指令檢視背景的程式
有點兒亂,但是可以看出來有三個程式在跑,這時我們可以用fg n(序号)的方式把指令調到前台來然後把他關閉
比如,我把2号指令調到前台來然後關閉。
畫圈的地方就是我敲的指令“fg 2”隻是因為程式是在跑的,顯得有點亂。再用job檢視時程式2就沒了。
5、關閉背景的程式
指令
檢視程序pid:ps -aux
結束程序:kill pid
解釋一下,kill -9 +pid是強制結束的意思,我們強制把背景的兩個指令關掉了,再用job就看不到之前背景的那兩個指令了。
變量是一個程式設計中常見的概念,變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。這裡我們了解變量就是系統已經預置的一些特定數值或含義的代号,我們在寫shell時可以引用他們。
1、系統内置的變量
PATH=指令的路徑,builtin指令
HOME 使用者的家目錄root的home就是root,
PWD 表示目前目錄在哪裡
LOGNAME 你的登陸使用者名
HISTSIZE 指令曆史記錄數
SHELL 目前使用者的shell類型
HOSTNAME 主機名字
2、檢視系統預設變量
上面這些系統預置變量的值可以用下面兩條明明指令檢視
env指令,顯示系統的預設環境變量
set指令,顯示系統預設的全部變量
(這隻是一部分,後面還有很長)
3、使用者自定變量,XX=XX自定義變量
變量名規則:避免用大寫,系統很多預設變量是大寫字元串,你用大寫字元串很有可能就把系統預設變量給改變了,
自定義變量時名稱中可以有數字字母和下劃線,但是數字不能是第一位,比如你寫“1A=11”就會報錯
自定義變量示例:
1、輸入:test=888
然後我們看下變量的值就是888了。
2、變量值有特殊符号時需要用單引号括起來。比如/ . ..這些有特殊含義的東西,雙引号也行,但是建議用單引号,雙引号有時會出問題。示例
3、變量值累加,注意不是求和的意思,而是把變量的值依次顯示出來
注意上例中如果你用單引号引用,那麼$會脫意,顯示結果會變成 $a $b $c
4、全局變量,涉及到子shell,全局變量能傳遞到所有shell,不能在另外的終端下使用.
補充一下終端的知識,每一次我們通過ssh登入到系統時都會配置設定給你一個終端,在每個終端下,你還可以通過bash指令進入一個子shell
通常自定義的變量僅在一個shell中生效,稱為非全局變量。
w指令可以看到有哪些終端登入到了系統中
pstree可以檢視到系統程序情況,需要yum安裝psmisc工具才有
操作示例:
首先我們自定義一個非全局變量a=888
現在我們切換到一個子shell中
再看沒有a這個變量了
我們生成一個全局變量
指令 <code>export a=888</code>
這時這個a變量就可以用到這個終端下的所有程序了。
但是我們切換終端後,這個變量就傳遞不過來了
比如我們在看一個終端,沒了
注意變量傳遞是向下的,你在子shell中建立的變量,同樣不能傳遞至上層shell中
5、unset可以取消變量
幾個重要的環境變量
/etc/profile 使用者環境變量,互動,登入才執行,這個檔案預設了幾個重要的變量,例如PATH、USER、LOGNAME、MAIL、HOSTNAME等等。
/etc/bashrc 使用者不用登陸,執行shell就生效,這個檔案預設了umask以及PS1變量。
PS1就是我們登入系統時前面的字元串,其中
\u代表使用者名 \h代表hostname \W所在目錄名 \$就是$root使用者顯示為#
就是箭頭裡這個東東。
上面兩個檔案屬于系統級的配置檔案,一般情況下對所有使用者都有效,如果不是确切知道某個選項的作用,建議不要随意更改。
~/.bashrc 它運作時會調用系統層的/etc/.bashrc檔案
~/.bash_profile:該檔案定義了使用者的個人化路徑和環境變量。當使用者登入時會執行一次,你可以把一些shell放這裡
~/.bash_history:記錄使用者指令的曆史
~/.bash_logout 退出shell時,會執行該檔案。一般的可以放一些清理的shell放到這裡,每次logout是就會自動清理資訊。
這是都是使用者自己的配置檔案,配置檔案的.有點像windows的控制台和手機的設定中心,你可以調整一些系統的選項,預設的變量等等,這些操作不會影響系統和其他使用者的配置,比較安全。
配置檔案編輯好後可以用source指令激活,同時也可用. ~/.bash_profile 方式激活。
1、在~/.bash_logout檔案中加入echo 'i am good boy!指令
然後激活下~/.bash_logout檔案
然後我們退出終端
系統就執行了我們剛加到~/.bash_logout檔案中的指令。
2、修改PS1使其帶顔色
本文轉自 whytl 51CTO部落格,原文連結:http://blog.51cto.com/11934539/2060095