天天看點

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

管道符:管道符号用于把前一個指令的結果傳遞給另一條指令

示例:

1、統計一個檔案的行數

指令:cat /etc/passwd | wc -l

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

2、統計目前檔案夾下檔案個數

指令: ls | wc -l

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

3、統計某個目錄下所有檔案總數

指令: find -type f | wc -l

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

管道符在實際應用中經常用到。

作業控制有點類似windows下的背景,windows下可以按ctrl+Tab在不同程式間切換,liunx下也可以實作類似的功能,把正在執行的指令“挂起”到背景。

一個終端隻有一個前台,有時候

作業控制涉及的指令

ctrl+z:把指令暫定,在背景停止,可用fg恢複

ctrl+c:終止指令執行

fg:前台

bg:把程式放到背景

COMMAND &:把指令直接放到背景執行

jobs:檢視背景任務

screen:

操作示例

1、把正在執行的vim指令暫定

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

2、恢複暫停的指令

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

指令的執行恢複了。

3、有的指令支援在背景繼續運作,那麼我們可以把指令放到背景運作。

們把vmstat指令放到背景運作

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

可以看到他仍在不停的運作,但是我們仍可以輸入其他指令對系統進行操作。這和ctrl+z不一樣,ctrl+z程式就不動了。

4、job指令檢視背景的程式

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

有點兒亂,但是可以看出來有三個程式在跑,這時我們可以用fg n(序号)的方式把指令調到前台來然後把他關閉

比如,我把2号指令調到前台來然後關閉。

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

畫圈的地方就是我敲的指令“fg 2”隻是因為程式是在跑的,顯得有點亂。再用job檢視時程式2就沒了。

5、關閉背景的程式

指令

檢視程序pid:ps -aux

結束程序:kill pid

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

解釋一下,kill -9 +pid是強制結束的意思,我們強制把背景的兩個指令關掉了,再用job就看不到之前背景的那兩個指令了。

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

變量是一個程式設計中常見的概念,變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。這裡我們了解變量就是系統已經預置的一些特定數值或含義的代号,我們在寫shell時可以引用他們。

1、系統内置的變量

PATH=指令的路徑,builtin指令

HOME 使用者的家目錄root的home就是root,

PWD 表示目前目錄在哪裡

LOGNAME 你的登陸使用者名

HISTSIZE 指令曆史記錄數

SHELL 目前使用者的shell類型

HOSTNAME 主機名字

2、檢視系統預設變量

上面這些系統預置變量的值可以用下面兩條明明指令檢視

env指令,顯示系統的預設環境變量

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

set指令,顯示系統預設的全部變量

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

(這隻是一部分,後面還有很長)

3、使用者自定變量,XX=XX自定義變量

變量名規則:避免用大寫,系統很多預設變量是大寫字元串,你用大寫字元串很有可能就把系統預設變量給改變了,

自定義變量時名稱中可以有數字字母和下劃線,但是數字不能是第一位,比如你寫“1A=11”就會報錯

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

自定義變量示例:

1、輸入:test=888

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

然後我們看下變量的值就是888了。

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

2、變量值有特殊符号時需要用單引号括起來。比如/ . ..這些有特殊含義的東西,雙引号也行,但是建議用單引号,雙引号有時會出問題。示例

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

3、變量值累加,注意不是求和的意思,而是把變量的值依次顯示出來

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案
Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案
Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

注意上例中如果你用單引号引用,那麼$會脫意,顯示結果會變成 $a $b $c

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

4、全局變量,涉及到子shell,全局變量能傳遞到所有shell,不能在另外的終端下使用.

補充一下終端的知識,每一次我們通過ssh登入到系統時都會配置設定給你一個終端,在每個終端下,你還可以通過bash指令進入一個子shell

通常自定義的變量僅在一個shell中生效,稱為非全局變量。

w指令可以看到有哪些終端登入到了系統中

pstree可以檢視到系統程序情況,需要yum安裝psmisc工具才有

操作示例:

首先我們自定義一個非全局變量a=888

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

現在我們切換到一個子shell中

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

再看沒有a這個變量了

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

我們生成一個全局變量

指令 <code>export a=888</code>

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

這時這個a變量就可以用到這個終端下的所有程序了。

但是我們切換終端後,這個變量就傳遞不過來了

比如我們在看一個終端,沒了

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

注意變量傳遞是向下的,你在子shell中建立的變量,同樣不能傳遞至上層shell中

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

5、unset可以取消變量

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

幾個重要的環境變量

/etc/profile 使用者環境變量,互動,登入才執行,這個檔案預設了幾個重要的變量,例如PATH、USER、LOGNAME、MAIL、HOSTNAME等等。

/etc/bashrc 使用者不用登陸,執行shell就生效,這個檔案預設了umask以及PS1變量。

PS1就是我們登入系統時前面的字元串,其中

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

\u代表使用者名 \h代表hostname \W所在目錄名 \$就是$root使用者顯示為#

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

就是箭頭裡這個東東。

上面兩個檔案屬于系統級的配置檔案,一般情況下對所有使用者都有效,如果不是确切知道某個選項的作用,建議不要随意更改。

~/.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!指令

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

然後激活下~/.bash_logout檔案

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

然後我們退出終端

Linux系統 shell基礎(二)一、管道符二、作業控制三、shell變量四、環境變量配置檔案

系統就執行了我們剛加到~/.bash_logout檔案中的指令。

2、修改PS1使其帶顔色

 本文轉自 whytl 51CTO部落格,原文連結:http://blog.51cto.com/11934539/2060095

繼續閱讀