1. 程式人生 > >Linux系統 shell基礎(二)

Linux系統 shell基礎(二)

很多 sts ctrl+ 技術 liunx 名稱 而是 進程 全局變量

一、管道符

管道符:管道符號用於把前一個命令的結果傳遞給另一條命令
示例:
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變量

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

1、系統內置的變量
PATH=命令的路徑,builtin命令
HOME 用戶的家目錄root的home就是root,
PWD 表示當前目錄在哪裏
LOGNAME 你的登陸用戶名
HISTSIZE 命令歷史記錄數

SHELL 當前用戶的shell類型
HOSTNAME 主機名字
2、查看系統預設變量
上面這些系統預置變量的值可以用下面兩條明明命令查看
env命令,顯示系統的預設環境變量
技術分享圖片
set命令,顯示系統預設的全部變量
技術分享圖片
(這只是一部分,後面還有很長)
3、用戶自定變量,XX=XX自定義變量
變量名規則:避免用大寫,系統很多預設變量是大寫字符串,你用大寫字符串很有可能就把系統預設變量給改變了,
附上一篇15條變量&方法命名的最佳實踐(轉載至legendmohe.net/2014/04/15/)
自定義變量時名稱中可以有數字字母和下劃線,但是數字不能是第一位,比如你寫“1A=11”就會報錯
技術分享圖片

自定義變量示例:
1、輸入:test=888
技術分享圖片
然後我們看下變量的值就是888了。
技術分享圖片

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

3、變量值累加,註意不是求和的意思,而是把變量的值一詞顯示出來
技術分享圖片
技術分享圖片
技術分享圖片
註意上例中如果你用單引號引用,那麽$會脫意,顯示結果會變成 $a $b $c
技術分享圖片

4、全局變量,涉及到子shell,全局變量能傳遞到所有shell,不能在另外的終端下使用.
補充一下終端的知識,每一次我們通過
w命令可以看到有哪些終端登錄到了系統中
pstree可以查看

5、unset可以取消變量
技術分享圖片

四、環境變量配置文件

幾個重要的環境變量
/etc/profile 用戶
/etc/bashrc 用戶不用登陸,執行shell就生效
~./bashrc
~/,bash_profile
~/.bash_history
~/.bash_logout 推出時會執行
PS1=定義前綴

Linux系統 shell基礎(二)