1. 程式人生 > >八(2)管道符和作業控制、shell變量、環境變量配置文件

八(2)管道符和作業控制、shell變量、環境變量配置文件

shell變量

管道符、作業控制

技術分享圖片

管道符 | :把前面命令的的輸出交給後面命令的輸入

技術分享圖片


暫停任務:ctrl+ z (臨時暫停,仍到後臺 ,調回前臺 fg


jobs 可以把暫停的任務列出來。

技術分享圖片

fg +id號就能把相應暫停任務調回前臺。 fg 2


bg 把任務放到後臺


sleep 1000 暫停1000秒

sleep 100 & 加上&可以把運行任務如直接放到後臺執行

shell變量

技術分享圖片

1.命令 env 列出系統預設的全部系統變量(變量都是大寫字母)

技術分享圖片

2.命令 set 可以查看到系統預設的變量,也可以看到用戶自定義的變量。


3.自定義變量:

變量名的規則:字母、數字及下劃線,首位不能為數字

技術分享圖片

4.變量值有特殊符號時需要用單引號括起來

技術分享圖片

技術分享圖片

采用雙引號會出錯)

使用雙引號擴起一個變量時,它會進行解釋變量的值

技術分享圖片


5.全局變量

技術分享圖片

怎麽把一個自定義的變量變為全局變量?

(1)export 變量名=變量值

export cansheng=handsome

這樣定義的變量就是全局環境變量

這裏的全局變量是向下關系的,就是在當前終端(bash)生成一個全局變量,當我們在打開一個子shell(執行命令bash)時,輸出這個全局變量是可以的。但是在子shell下生成一個全局變量,在父級打開該全局變量則無效。關系不可逆轉


環境變量配置文件(工作中不常用)

技術分享圖片


1./etc/profile 和 /etc/bashrc 盡可能不去修改

要修改的話就修改用戶家目錄下的profile和bashrc

用戶家目錄下的profile和bashrc 是 .bash_profile 或者是 .bashrc

vim .bash_profile (這裏是當前用戶下的 .bash_profile)

技術分享圖片技術分享圖片

技術分享圖片

技術分享圖片

(/etc 是系統下的profile是針對所有用戶的)

只要執行一個shell腳本就會自動加載bashrc


2.PS1 在/etc/bashrc下定義

PS1和我們命令行中前面的那部分有關

技術分享圖片


技術分享圖片

PS1='[\u@\h \W]\$' 可以改:如PS1='《\u@\h \W>\$'

技術分享圖片

拓展

1.<

【.bash_profile 與 .bashrc 的區別】
.bash_profile is executed for login shells

, while .bashrc is executed for interactive non-login shells.


【login shell 與 non-login shell 的區別】
1、當你直接在機器login界面登陸、使用ssh登陸或者su切換用戶登陸時,.bash_profile 會被調用來初始化shell環境
Note:.bash_profile文件默認調用.bashrc文件
.bash_profile中有如下內容
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
2、當你不登陸系統而使用ssh直接在遠端執行命令,.bashrc 會被調用
3、當你已經登陸系統後,每打開一個新的Terminal時,.bashrc 都會被再次調用。

若要配置環境變量之類,最保險是寫在 .bashrc 文件中。因為不管是登陸還是不登陸,該文件總會被調用!


>


2.簡易審計系統: http://www.68idc.cn/help/server/linux/2014042190951.html

<

有時候我們需要對線上用戶操作記錄進行歷史記錄待出現問題追究責任人,,但Linux系統自帶的history命令用戶有自行刪除權限,那怎麽設置可以讓用戶的操作記錄實時記錄,並保證普通用戶無權刪除呢?本文教你一招

1.mkdir -p /usr/local/domob/records/

chmod 777 /usr/local/domob/records/

chmod +t /usr/local/domob/records/

2.vi /etc/profile 在最後添加下面的代碼

if [ ! -d /usr/local/domob/records/${LOGNAME} ]

then

mkdir -p /usr/local/domob/records/${LOGNAME}

chmod 300 /usr/local/domob/records/${LOGNAME}

fi

export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history"

export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'

>






八(2)管道符和作業控制、shell變量、環境變量配置文件