Linux20180423五周第四次課(4月23日)
8.6 管道符和作業控制
8.7/8.8 shell變量
8.9 環境變量配置文件
擴展
bashrc和bash_profile的區別 http://ask.apelearn.com/question/7719
簡易審計系統: http://www.68idc.cn/help/server/linux/2014042190951.html
關於PROMPT_COMMAND環境變量的含義 http://www.linuxnote.org/prompt_command-environment-variables.html
管道符和作業控制
管道府就是將前面輸出傳遞給後面的命令
比如
cat 1.txt | wc -l cat 1.txt |grep 'aaa'
這個就是將前面的內容傳給後面的wc命令去查看多少line
用法比較靈活,比如ls |wc -l 可以查看當前目錄下有多少文件
作業控制
作業就是當前的操作
ctrl z 就是暫停一個工作
比如 sleep 100 忽然就停了 這個時候可以ctrl z 停止
然後有一個命令交做 bg 後臺操作 fg 前臺顯示操作
可以看到 首先是被停止了 然後bg 到後臺運行了 查看目前的工作 jobs可以看到還在運行
bg fg如果不加id號的話,就是默認最後一個
shell變量
env 查看系統變量,通常都是大寫字母
set不僅僅是系統變量還有自定義變量,如果自己自定義了變量,在這裏就可以查看到。echo命令可以查看變量的值
註意單引號和雙引號的區別,單引號不會解析變量的內容
set | less 把set的結果傳到less命令中
也找到了a=111 這個自定義的變量
變量名命名規則
- 字母,數字,下劃線可以,首位不能是數字
- 變量值有特殊符號的時候,如果想顯示特殊符號就用單引號引起來。
單引號會將原樣輸出而雙引號會將變量值輸出
全局變量
w可以看到當前登陸的用戶和tty終端
echo $SSH_TTY可以查看當前本機使用的tty
如果不同的tty下創建的變量,是不能互相訪問的
所以可以從上面看出 TTY0創建$A變量的值 TTY2是無法訪問到的
如果是一個TTY下創建的新的bash下的bash也是無法訪問上一級bash的變量的,這種變量叫做本地變量 local
想把變量變成全局變量,需要使用export 變量=值 才行
export A 這個時候所有下層的bash就可以訪問到父級和爺級的變量了,但是反之如果子輩或孫輩創建的變量,父輩或者爺爺輩是不能訪問的,也就是全局變量是自上而下,而非自下而上
export 變量=值
取消變量 unset 變量名 記得變量名不包括$
環境變量的配置文件
配置文件要從兩個層面理解,一個是系統層面,就是一旦改動了全部的用戶都受影響。另一個是用戶層面,就是只是對當前用戶生效。
系統層面
etc/profile 用戶環境變量,交互,登陸才執行
etc/bashrc 用戶不用登陸,執行shell生效
用戶層面 用戶家目錄下 所謂的/. 這個點的作用就是source命令的作用,就是讓這個文件生效。但是不能執行這個文件。(調用順序 .bash_profile---->.bashrc----->/etc/bashrc)
~/.bashrc 系統/用戶執行shell腳本的時候啟用。不一定需要用戶登陸。 這個文件裏又會調用/etc/bashrc這個文件
~/.bash_profile 用戶登陸時候加載 有一些相關的設定都可以在用戶的這個文件裏定義 當然這樣定義的話只是針對當前用戶
這裏面會自動加載調用 .bashrc
~/.bash_history
~/.bash_logout 定義用戶退出的時候的操作。比如每次用戶退出的時候刪除所有的操作歷史,就可以把這個命令放到這個文件裏。
profile 和 bashrc的文件區別是 profile是用戶登陸的時候自動加載profile文件, 然後調用bashrc。bashrc是執行shell腳本的時候調用bashrc裏的配置。
$PS1變量,指的就是用戶登錄後命令行左側顯示的信息。
u 用戶 h hostname W 最後一層 當然也可以改
當我們登陸的時候,shell界面的左邊會顯示出一串東西。
第一個是當前用戶
第二個是@
第三個是hostname
第四個所在目錄的最後一個層級目錄
如果把PS1變量的值改了換可以看看 比如W換成w
或者去掉方括號
也可以加顏色
PS2是用在另一個shell終端裏面的。mysql命令行使用的就是PS2
Linux20180423五周第四次課(4月23日)