linux學習篇8--- shell,bash講解 1

linux學習篇8---- 《鳥哥的Linux私房菜基礎學習篇(第三版)》讀書筆記


ps.bash爲shell中的一種 一般linux的默認shell爲bash

ps.bash中  \爲跳脫命令 如:\Enter  就是換行

  • 命令別名配置功能: (alias)

使用 alias 即可!你可以在命令列輸入 alias 就可以知道目前的命令別名有哪些了!也可以直接下達命令來配置別名呦:

alias lm='ls -al'  這樣輸入lm 就等於 ls -al了   

unalias lm
取消別名


Bash shell 的內建命令: type

[root@www ~]# type [-tpa] name
選項與參數:
    :不加任何選項與參數時,type 會顯示出 name 是外部命令還是 bash 內建命令
-t  :當加入 -t 參數時,type 會將 name 以底下這些字眼顯示出他的意義:
      file    :表示爲外部命令;
      alias   :表示該命令爲命令別名所配置的名稱;
      builtin :表示該命令爲 bash 內建的命令功能;
-p  :如果後面接的 name 爲外部命令時,纔會顯示完整文件名;
-a  :會由 PATH 變量定義的路徑中,將所有含 name 的命令都列出來,包含 alias
相當於whick命令


bash變量:

echo $variable 取變量  如 echo $PATH就是取出環境變量 若變量不存在的時候 輸出爲空

variable = value 爲變量賦值

變量的配置守則:

1.等號兩邊不能直接接空格符,如下所示爲錯誤: 『myname = VBird』

2.變量名稱只能是英文字母與數字

3.變量內容若有空格符可使用雙引號『"』或單引號『'』將變量內容結合起來,但

  • 雙引號內的特殊字符如 $ 等,可以保有原本的特性,如下所示:
    『var="lang is $LANG"』則『echo $var』可得『lang is en_US』
  • 單引號內的特殊字符則僅爲一般字符 (純文本),如下所示:
    『var='lang is $LANG'』則『echo $var』可得『lang is $LANG』
4.在一串命令中,還需要藉由其他的命令提供的信息,可以使用反單引號『`命令`』或 『$(命令)』。特別注意,那個 ` 是鍵盤上方的數字鍵 1 左邊那個按鍵,而不是單引號! 例如想要取得核心版本的配置:
『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』

5.若該變量爲擴增變量內容時,則可用 "$變量名稱" 或 ${變量} 累加內容,如下所示:
『PATH="$PATH":/home/bin』

6.取消變量的方法爲使用 unset :『unset 變量名稱』例如取消 myname 的配置:
『unset myname』

ps. echo $? 表示上一個命令的回傳值  如果不爲0的話 這上一個命令出錯


RANDOM

 我們可以透過這個隨機數文件相關的變量 ($RANDOM) 來隨機取得隨機數值

只要 echo $RANDOM 時,系統就會主動的隨機取出一個介於 0~32767 的數值。

[root@www ~]# declare -i number=$RANDOM*10/32768 ; echo $number
8   <== 此時會隨機取出 0~9 之間的數值喔!

環境變量和shell變量

環境變量相當於全局變量,適用於當前SHELL(父進程)和由父進程調用的子進程,如打開編輯器vi、腳本、應用或是再打開一個子shell。
shell變量就是當前shell使用的變量了,它只是“本地“有效,相當於本地變量,不適用於其他子進程,只在當前shell生命週期內有效。

[root@www ~]# export 變量名稱
可以將shell變量變爲環境變量


永久變量和臨時變量

管是自定義的變量還是通過export導爲環境變量的自定義變量都只是在shell生命週期內有效,這樣的變量就是臨時變量,如果我想設置一個變量使其永久生效怎麼辦呢?可以修改兩個配置文件:/etc/profile和~/.bashrc,前者對所有用戶有效,後者只對當前用戶有效。


影響顯示結果的語系變量 (locale)

[root@www ~]# locale -a
顯示所有的語系


  • read

要讀取來自鍵盤輸入的變量,就是用 read 這個命令了。這個命令最常被用在 shell script 的撰寫當中

[root@www ~]# read [-pt] variable
選項與參數:
-p  :後面可以接提示字符!
-t  :後面可以接等待的『秒數!』這個比較有趣~不會一直等待使用者啦!

範例一:讓用戶由鍵盤輸入一內容,將該內容變成名爲 atest 的變量
[root@www ~]# read atest
This is a test        <==此時光標會等待你輸入!請輸入左側文字看看
[root@www ~]# echo $atest
This is a test          <==你剛剛輸入的數據已經變成一個變量內容!

  • declare / typeset

declare 或 typeset 是一樣的功能,就是在『宣告變量的類型』。如果使用 declare 後面並沒有接任何參數,那麼 bash 就會主動的將所有的變量名稱與內容通通叫出來

[root@www ~]# declare [-aixr] variable
選項與參數:
-a  :將後面名爲 variable 的變量定義成爲數組 (array) 類型
-i  :將後面名爲 variable 的變量定義成爲整數數字 (integer) 類型
-x  :用法與 export 一樣,就是將後面的 variable 變成環境變量;
-r  :將變量配置成爲 readonly 類型,該變量不可被更改內容,也不能 unset

範例一:讓變量 sum 進行 100+300+50 的加總結果
[root@www ~]# sum=100+300+50
[root@www ~]# echo $sum
100+300+50  <==咦!怎麼沒有幫我計算加總?因爲這是文字型態的變量屬性啊!
[root@www ~]# declare -i sum=100+300+50
[root@www ~]# echo $sum
450         <==瞭乎??
範例四:讓 sum 變成非環境變量的自定義變量吧!
[root@www ~]# declare +x sum  <== 將 - 變成 + 可以進行『取消』動作
[root@www ~]# declare -p sum  <== -p 可以單獨列出變量的類型
declare -ir sum="450" <== 看吧!只剩下 i, r 的類型,不具有 x 囉!
ps.如果你不小心將變量配置爲『只讀』,通常得要註銷再登陸才能復原該變量的類型了! @_@



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