Linux系統 shell基礎(二)

一、管道符

管道符:管道符號用於把前一個命令的結果傳遞給另一條命令
示例:
1、統計一個文件的行數
命令:cat /etc/passwd | wc -l
Linux系統 shell基礎(二)
2、統計當前文件夾下文件個數
命令: ls | wc -l
Linux系統 shell基礎(二)
3、統計某個目錄下所有文件總數
命令: find -type f | wc -l
Linux系統 shell基礎(二)
管道符在實際應用中經常用到。

二、作業控制

作業控制有點類似windows下的後臺,windows下可以按ctrl+Tab在不同程序間切換,liunx下也可以實現類似的功能,把正在執行的命令“掛起”到後臺。
一個終端只有一個前臺,有時候

作業控制涉及的命令
ctrl+z:把命令暫定,在後臺停止,可用fg恢復
ctrl+c:終止命令執行
fg:前臺
bg:把程序放到後臺
COMMAND &:把命令直接放到後臺執行
jobs:查看後臺任務
screen:

操作示例
1、把正在執行的vim命令暫定
Linux系統 shell基礎(二)

2、恢復暫停的命令
Linux系統 shell基礎(二)
命令的執行恢復了。

3、有的命令支持在後臺繼續運行,那麼我們可以把命令放到後臺運行。
們把vmstat命令放到後臺運行
Linux系統 shell基礎(二)
可以看到他仍在不停的運行,但是我們仍可以輸入其他命令對系統進行操作。這和ctrl+z不一樣,ctrl+z程序就不動了。

4、job命令查看後臺的程序
Linux系統 shell基礎(二)
有點兒亂,但是可以看出來有三個程序在跑,這時我們可以用fg n(序號)的方式把命令調到前臺來然後把他關閉
比如,我把2號命令調到前臺來然後關閉。
Linux系統 shell基礎(二)
畫圈的地方就是我敲的命令“fg 2”只是因爲程序是在跑的,顯得有點亂。再用job查看時程序2就沒了。

5、關閉後臺的程序
命令
查看進程pid:ps -aux
結束進程:kill pid
Linux系統 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基礎(二)
set命令,顯示系統預設的全部變量
Linux系統 shell基礎(二)
(這只是一部分,後面還有很長)
3、用戶自定變量,XX=XX自定義變量
變量名規則:避免用大寫,系統很多預設變量是大寫字符串,你用大寫字符串很有可能就把系統預設變量給改變了,
附上一篇15條變量&方法命名的最佳實踐(轉載至legendmohe.net/2014/04/15/)
自定義變量時名稱中可以有數字字母和下劃線,但是數字不能是第一位,比如你寫“1A=11”就會報錯
Linux系統 shell基礎(二)

自定義變量示例:
1、輸入:test=888
Linux系統 shell基礎(二)
然後我們看下變量的值就是888了。
Linux系統 shell基礎(二)

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

3、變量值累加,注意不是求和的意思,而是把變量的值依次顯示出來
Linux系統 shell基礎(二)
Linux系統 shell基礎(二)
Linux系統 shell基礎(二)
注意上例中如果你用單引號引用,那麼$會脫意,顯示結果會變成 $a $b $c
Linux系統 shell基礎(二)

4、全局變量,涉及到子shell,全局變量能傳遞到所有shell,不能在另外的終端下使用.
補充一下終端的知識,每一次我們通過ssh登錄到系統時都會分配給你一個終端,在每個終端下,你還可以通過bash命令進入一個子shell
通常自定義的變量僅在一個shell中生效,稱爲非全局變量。

w命令可以看到有哪些終端登錄到了系統中
pstree可以查看到系統進程情況,需要yum安裝psmisc工具纔有

操作示例:
首先我們自定義一個非全局變量a=888
Linux系統 shell基礎(二)
現在我們切換到一個子shell中
Linux系統 shell基礎(二)
再看沒有a這個變量了
Linux系統 shell基礎(二)
我們生成一個全局變量
命令 export a=888
Linux系統 shell基礎(二)
這時這個a變量就可以用到這個終端下的所有進程了。

但是我們切換終端後,這個變量就傳遞不過來了
比如我們在看一個終端,沒了
Linux系統 shell基礎(二)

注意變量傳遞是向下的,你在子shell中建立的變量,同樣不能傳遞至上層shell中
Linux系統 shell基礎(二)

5、unset可以取消變量
Linux系統 shell基礎(二)

四、環境變量配置文件

幾個重要的環境變量
/etc/profile 用戶環境變量,交互,登錄才執行,這個文件預設了幾個重要的變量,例如PATH、USER、LOGNAME、MAIL、HOSTNAME等等。
/etc/bashrc 用戶不用登陸,執行shell就生效,這個文件預設了umask以及PS1變量。
PS1就是我們登錄系統時前面的字符串,其中Linux系統 shell基礎(二)
\u代表用戶名 \h代表hostname \W所在目錄名 \$就是$root用戶顯示爲#
Linux系統 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基礎(二)
然後激活下~/.bash_logout文件
Linux系統 shell基礎(二)
然後我們退出終端
Linux系統 shell基礎(二)
系統就執行了我們剛加到~/.bash_logout文件中的命令。

2、修改PS1使其帶顏色

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章