亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2619 | 回復(fù): 0
打印 上一主題 下一主題

[轉(zhuǎn)]Linux 變數(shù)設(shè)定規(guī)則 $ [系統(tǒng)變數(shù) 大寫(xiě) $PATH ---> 查閱變數(shù)內(nèi)容 echo] [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-10-27 23:04 |只看該作者 |倒序?yàn)g覽

Linux 變數(shù)設(shè)定規(guī)則 $ [系統(tǒng)變數(shù) 大寫(xiě) $PATH ---> 查閱變數(shù)內(nèi)容 echo]


  • 變數(shù)與變數(shù)內(nèi)容以等號(hào)『=』來(lái)連結(jié);
  • 等號(hào)兩邊不能直接接空白字元;
  • 變數(shù)名稱(chēng)只能是英文字母與數(shù)字,但是數(shù)字不能是開(kāi)頭字元;
  • 若有空白字元可以使用雙引號(hào)『 " 』或單引號(hào)『 ' 』來(lái)將變數(shù)內(nèi)容結(jié)合起來(lái),但須要特別留意, 雙引號(hào)內(nèi)的特殊字元可以保有變數(shù)特性,但是單引號(hào)內(nèi)的特殊字元?jiǎng)t僅為一般字元;
  • 必要時(shí)需要以跳脫字元『 \ 』來(lái)將特殊符號(hào) ( 如 Enter, $, \, 空白字元, ' 等 ) 變成一般符號(hào);
  • 在一串指令中,還需要藉由其他的指令提供的資訊,可以使用 quote 『 ` command` 』;(特別特別注意,那個(gè) ` 是鍵盤(pán)上方的數(shù)字鍵 1 左邊那個(gè)按鍵,而不是單引號(hào)!)
  • 若該變數(shù)為擴(kuò)增變數(shù)內(nèi)容時(shí),則需以雙引號(hào)及 $變數(shù)名稱(chēng) 如:『 "$PATH":/home』繼續(xù)累加內(nèi)容;
  • 若該變數(shù)需要在其他子程序執(zhí)行,則需要以 export 來(lái)使變數(shù)變成環(huán)境變數(shù), 如『export PATH』;
  • 通常大寫(xiě)字元為系統(tǒng)預(yù)設(shè)變數(shù),自行設(shè)定變數(shù)可以使用小寫(xiě)字元,方便判斷 ( 純粹依照使用者興趣與嗜好 ) ;
  • 取消變數(shù)的方法為:『unset 變數(shù)名稱(chēng)』。
  • 在變數(shù)的設(shè)定當(dāng)中,單引號(hào)與雙引號(hào)的用途有何不同?
  • 單引號(hào)與雙引號(hào)的最大不同在於雙引號(hào)仍然可以保有變數(shù)的內(nèi)容,但單引號(hào)內(nèi)僅能是一般字元 ,而不會(huì)有特殊符號(hào)。
    環(huán)境變數(shù)的說(shuō)明: env |export
    範(fàn)例一:列出目前的 shell 環(huán)境下的所有環(huán)境變數(shù)與其內(nèi)容。
    [root@linux ~]# env
    HOSTNAME=googol.tw         
    SHELL=/bin/bash            
    TERM=xterm                 
    HISTSIZE=1000              
    USER=root                  
    LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:
    or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=0
    0;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=
    00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;3
    1:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00
    ;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
    ENV=/root/.bashrc         
    MAIL=/var/spool/mail/root  
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:
    /root/bin                  
    INPUTRC=/etc/inputrc      
    PWD=/root                  
    LANG=en_US.UTF-8           
    HOME=/root                 
    _=/bin/env                 env 是 environment (環(huán)境) 的簡(jiǎn)寫(xiě)啊~ 上面的例子當(dāng)中,是列出來(lái)所有的環(huán)境變數(shù)。當(dāng)然,如果使用 export 也會(huì)是一樣的內(nèi)容~ 只不過(guò), export 還有其他額外的功能就是了,我們等一下再提這個(gè) export 指令。 那麼上面這些變數(shù)有些什麼功用呢?底下我們就一個(gè)一個(gè)來(lái)分析分析!

    • HOME : 代表使用者的家目錄。還記得我們可以使用 cd ~ 去到使用者的家目錄嗎?或者利用 cd 就可以直接回到使用者家目錄了。那就是取用這個(gè)功能啦~ 有很多程式都可能會(huì)取用到這個(gè)變數(shù)的值喔!
    • SHELL : 告知我們,目前這個(gè)環(huán)境使用的 SHELL 是哪支程式? 如果是 bash 的話,預(yù)設(shè)是 /bin/bash 的啦!
    • HISTSIZE : 這個(gè)與『歷史命令』有關(guān),亦即是, 我們?cè)?jīng)下達(dá)過(guò)的指令可以被系統(tǒng)記錄下來(lái),而記錄的『筆數(shù)』則是由這個(gè)值來(lái)設(shè)定的。
    • ENV : 這個(gè)使用者所使用的個(gè)人化環(huán)境設(shè)定檔的讀取檔案。
    • MAIL : 當(dāng)我們使用 mail 這個(gè)指令在收信時(shí),系統(tǒng)會(huì)去讀取的郵件信箱檔案 (mailbox)。
    • PATH : 就是執(zhí)行檔搜尋的路徑啦~目錄與目錄中間以冒號(hào)(:)分隔, 由於檔案的搜尋是依序由 PATH 的變數(shù)內(nèi)的目錄來(lái)查詢(xún),所以,目錄的順序也是重要的喔。
    • LANG : 這個(gè)重要!就是語(yǔ)系檔案囉~很多資料都會(huì)用到他, 舉例來(lái)說(shuō),當(dāng)我們?cè)趩?dòng)某些 perl 的程式語(yǔ)言檔案時(shí),他會(huì)主動(dòng)的去分析語(yǔ)系資料檔案, 如果發(fā)現(xiàn)有他無(wú)法解析的編碼語(yǔ)系,可能會(huì)產(chǎn)生錯(cuò)誤喔!一般來(lái)說(shuō),我們中文編碼通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,這兩個(gè)編碼偏偏不容易被解譯出來(lái),所以,有的時(shí)候,可能需要修訂一下語(yǔ)系資料。 這部分我們會(huì)在下個(gè)小節(jié)做介紹的!
    • RANDOM : 這個(gè)玩意兒就是『隨機(jī)亂數(shù)』的變數(shù)啦!目前大多數(shù)的 distributions 都會(huì)有亂數(shù)產(chǎn)生器,那就是 /dev/random 這個(gè)檔案。 我們可以透過(guò)這個(gè)亂數(shù)檔案相關(guān)的變數(shù) ($RANDOM) 來(lái)隨機(jī)取得亂數(shù)值喔。在 BASH 的環(huán)境下,這個(gè) RANDOM 變數(shù)的內(nèi)容,介於 0~32767 之間,所以,你只要 echo $RANDOM 時(shí),系統(tǒng)就會(huì)主動(dòng)的隨機(jī)取出一個(gè)介於 0~32767 的數(shù)值。萬(wàn)一我想要使用 0~9 之間的數(shù)值呢?呵呵~利用 declare 宣告數(shù)值類(lèi)型, 然後這樣做就可以了:
      [root@linux ~]# declare -i number=$RANDOM*10/32767 ; echo $number
      8   
    其他所有的變數(shù)說(shuō)明: set
    而除了這些環(huán)境變數(shù)之外,還有沒(méi)有什麼重要的變數(shù)呢?當(dāng)然有! 我們?cè)?bash 的環(huán)境下,其實(shí)還有一些挺重要的變數(shù),這些變數(shù)是『在這個(gè) shell 環(huán)境下有效』的, 如果是在『子程序』,這些變數(shù)值就不會(huì)相同了。 那麼如何觀察目前 shell 環(huán)境下的所有變數(shù)呢?很簡(jiǎn)單啊,就用 set 即可!set 這個(gè)指令除了會(huì)將環(huán)境變數(shù)列出來(lái)之外,其他我們的自訂變數(shù),與所有的變數(shù),都會(huì)被列出來(lái)喔!資訊多好多。 底下僅列出幾個(gè)重要的內(nèi)容。
    [root@linux ~]# set
    BASH=/bin/bash           
    BASH_VERSINFO=([0]="3" [1]="00" [2]="16" [3]="1" [4]="release"
    [5]="i386-redhat-linux-gnu")      
    BASH_VERSION='3.00.16(1)-release'
    COLORS=/etc/DIR_COLORS.xterm      
    COLUMNS=115              
    HISTFILE=/root/.bash_history      
    HISTFILESIZE=1000        
    HISTSIZE=1000            
    HOSTTYPE=i386            
    IFS=$' \t\n'            
    LINES=35                 
    MACHTYPE=i386-redhat-linux-gnu   
    MAILCHECK=60            
    OLDPWD=/home            
    OSTYPE=linux-gnu         
    PPID=20046               
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
                            
    PS1='[\u@\h \W]\$ '      
    RANDOM=13586            
    SUPPORTED=zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8
    name=VBird               
    $                        
    ?                        一般來(lái)說(shuō),不論是否為環(huán)境變數(shù),只要跟我們目前這個(gè) shell 的操作介面有關(guān)的變數(shù), 通常都會(huì)被設(shè)定為大寫(xiě)字元,也就是說(shuō),『基本上,在 Linux 預(yù)設(shè)的情況中,使用{大寫(xiě)的字母}來(lái)設(shè)定的變數(shù)一般為系統(tǒng)內(nèi)定需要的變數(shù)』。

    • PS1:(提示字元的設(shè)定)
      這是 PS1 (數(shù)字的 1 不是英文字母!),這個(gè)東西就是我們的『命令提示字元』! 當(dāng)我們每次按下 [Enter] 按鍵去執(zhí)行某個(gè)指令後,最後要再次出現(xiàn)提示字元時(shí), 就會(huì)主動(dòng)去讀取這個(gè)變數(shù)值了。上頭 PS1 內(nèi)顯示的是一些特殊符號(hào),每個(gè)版本 bash 的 PSI 變數(shù)內(nèi)的特殊符號(hào)可能有些許的差異, 你應(yīng)該主動(dòng)的以 man bash 去查詢(xún)一下相關(guān)的變數(shù)。底下我列出 FC4 的環(huán)境下, 預(yù)設(shè)的 bash 的 PS1 變數(shù)內(nèi)的特殊符號(hào)代表意義:

      • \d :代表日期,格式為 Weekday Month Date,例如 "Mon Aug 1"
      • \H :完整的主機(jī)名稱(chēng)。舉例來(lái)說(shuō),鳥(niǎo)哥的練習(xí)機(jī) linux.dmtsai.tw ,那麼這個(gè)主機(jī)名稱(chēng)就是 linux.dmtsai.tw
      • \h :僅取主機(jī)名稱(chēng)的第一個(gè)名字。以上述來(lái)講,就是 linux 而已, .dmtsai.tw 被省略。
      • \t :顯示時(shí)間,為 24 小時(shí)格式,如: HH:MM:SS
      • \T :顯示時(shí)間,12 小時(shí)的時(shí)間格式!
      • \A :顯示時(shí)間,24 小時(shí)格式, HH:MM
      • \u :目前使用者的帳號(hào)名稱(chēng);
      • \v :BASH 的版本資訊;
      • \w :完整的工作目錄名稱(chēng)。家目錄會(huì)以 ~ 取代;
      • \W :利用 basename 取得工作目錄名稱(chēng),所以?xún)H會(huì)列出最後一個(gè)目錄名。
      • \# :下達(dá)的第幾個(gè)指令。
      • \$ :提示字元,如果是 root 時(shí),提示字元為 # ,否則就是 $ 囉~
        OK!所以,由預(yù)設(shè)的 PS1 內(nèi)容為: '\[\u@\h \W\]\$ ' 就可以瞭解為何我們的提示字元會(huì)是: [root@linux ~]# 了吧!好了,那麼假設(shè)我想要有類(lèi)似底下的提示字元:

          [root@linux /home/dmtsai 16:50 #12]#
          ,那個(gè) # 代表第 12 次下達(dá)的指令。 那麼應(yīng)該如何設(shè)定 PS1 呢?可以這樣。
          [root@linux home]# PS1='[\u@\h \w \A #\#]\$ '
          [root@linux /home 17:02 #85]#
          # 看到了嗎?提示字元變了!變的很有趣吧!其中,那個(gè) #85 比較有趣,
          # 如果您按下 [Enter] 後,該數(shù)字就會(huì)增加喔!為啥?上面有說(shuō)明ㄇㄟ!

    • $:(關(guān)於本 shell 的 PID)
      其實(shí)這個(gè)咚咚代表的是『目前這個(gè) Shell 的執(zhí)行緒代號(hào)』,亦即是所謂的 PID (Process ID)。 更多的程序觀念,我們會(huì)在第四章的時(shí)候提及。想要知道我們的 shell 的 PID ,就可以: echo $$ 即可!
    • ?:(關(guān)於上個(gè)執(zhí)行指令的回傳碼)
      蝦密?問(wèn)號(hào)也是一個(gè)特殊的變數(shù)?沒(méi)錯(cuò)!在 bash 裡面這個(gè)變數(shù)可重要的很! 這個(gè)變數(shù)是:『上個(gè)執(zhí)行的指令所回傳的值』, 上面這句話的重點(diǎn)是『上一個(gè)指令』與『回傳值』兩個(gè)地方。當(dāng)我們執(zhí)行某些指令時(shí), 這些指令都會(huì)回傳一個(gè)執(zhí)行後的代碼。一般來(lái)說(shuō),如果成功的執(zhí)行該指令, 則會(huì)回傳一個(gè) 0 值,如果執(zhí)行過(guò)程發(fā)生錯(cuò)誤,就會(huì)回傳『錯(cuò)誤代碼』才對(duì)!一般就是以非為 0 的數(shù)值來(lái)取代。 我們以底下的例子來(lái)看看:
      [root@linux ~]# echo $SHELL
      /bin/bash
      [root@linux ~]# echo $?
      0
      # 因?yàn)樯蟼(gè)指令執(zhí)行過(guò)程中,並沒(méi)有錯(cuò)誤,為成功的執(zhí)行完畢,所以回傳 0 。
      [root@linux ~]# 12name=VBird
      -bash: 12name=VBird: command not found
      [root@linux ~]# echo $?
      127
      # 發(fā)生錯(cuò)誤啦!所以 echo $? 時(shí),就會(huì)出現(xiàn)錯(cuò)誤的代碼!
      # 我們可以利用這個(gè)代碼來(lái)搜尋錯(cuò)誤的原因喔!
      [root@linux ~]# echo $?
      0
      # 咦!怎麼又變成正確了?這是因?yàn)?"?" 只與『上一個(gè)執(zhí)行指令』有關(guān),
      # 所以,我們上一個(gè)指令是執(zhí)行『 echo $? 』,當(dāng)然沒(méi)有錯(cuò)誤,所以是 0 沒(méi)錯(cuò)!
    • OSTYPE, HOSTTYPE, MACHTYPE:(主機(jī)硬體與核心的等級(jí))
      這幾個(gè)東西與程式的安裝有關(guān)。我們?cè)凇篖inux 主機(jī)規(guī)劃』 裡面提到過(guò)關(guān)於主機(jī)的等級(jí)方面的問(wèn)題,當(dāng)我們?cè)诎惭b軟體的時(shí)候, 需要透過(guò)編譯器來(lái)將原始碼編譯成為二進(jìn)位的檔案 (binary file)。但是, 我們可以針對(duì)硬體的配備來(lái)進(jìn)行編譯的最佳化,此時(shí),這些參數(shù)就可以被用到了! 基本上,目前主要的 distribution 都是針對(duì) i386 亦即最低等級(jí)的機(jī)器進(jìn)行最佳化, 這樣才能夠安裝在較高階的機(jī)器上,如果以 686 的機(jī)型來(lái)最佳化, 那麼,可就無(wú)法向下相容的喔!(早期的 OpenLinux 是針對(duì) 686 機(jī)器來(lái)釋出軟體, 所以,當(dāng)時(shí)的 OpenLinux 是無(wú)法安裝在 P-166 的機(jī)器上的。 )

    自訂變數(shù)轉(zhuǎn)成環(huán)境變數(shù): export
    好了,上面我們環(huán)境變數(shù)也提過(guò)了,一些自訂變數(shù)也提過(guò)了,那麼,這兩者有啥不同? 他的不同處,我們?cè)?變數(shù)設(shè)定規(guī)則 當(dāng)中稍微提過(guò), 主要是由於變數(shù)可否被子程序所引用。
    當(dāng)你取得一個(gè) bash 之後,亦即得到了一個(gè)程序了,但是若你再次的執(zhí)行一次 bash ,那麼你將進(jìn)入『子程序』,這個(gè)程序的概念我們?cè)谫Y源管理章節(jié)中再詳談,這裡您先有個(gè)概念即可。 那麼由於您已經(jīng)進(jìn)入了該子程序,所以在父程序中的自訂變數(shù)設(shè)定將不再繼續(xù)的存在。 會(huì)存在子程序中的,僅有『環(huán)境變數(shù)』。
    換個(gè)角度來(lái)想,也就是說(shuō),如果我能將自訂變數(shù)變成環(huán)境變數(shù)的話,那不就可以讓該變數(shù)值繼續(xù)存在於子程序了? 呵呵!沒(méi)錯(cuò)!此時(shí),那個(gè) export 指令就很有用啦! 如您想要讓該變數(shù)內(nèi)容繼續(xù)的在子程序中使用,那麼就請(qǐng)執(zhí)行:
      export 變數(shù)
    這個(gè)東西用在『引用他人的檔案或者其他程序』時(shí),相當(dāng)?shù)闹匾模?尤其像鳥(niǎo)哥常常兩三個(gè)檔案互相引用來(lái)引用去的,如果忘記設(shè)定 export 的話,那麼不同的檔案中的相同變數(shù)值,將需要一再地重複設(shè)定才行!所以,我只要在頭一個(gè)檔案使用 export 的話,那麼後續(xù)的檔案引用時(shí),將會(huì)把該變數(shù)內(nèi)容讀進(jìn)來(lái)!好用的很,如果僅下達(dá) export 而沒(méi)有接變數(shù)時(shí),那麼此時(shí)將會(huì)把所有的『環(huán)境變數(shù)』秀出來(lái)喔!例如:
    [root@linux ~]# export
    declare -x ENV="/root/.bashrc"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="linux.dmtsai.tw"
    declare -x INPUTRC="/etc/inputrc"
    declare -x LANG="en_US.UTF-8"
    declare -x MAIL="/var/spool/mail/root"
    declare -x SHELL="/bin/bash"
    # 很多都直接省略了!不然....重複性太高,浪費(fèi)版面~ ^_^語(yǔ)系檔案的變數(shù) (locale)

    還記得我們?cè)谑状芜M(jìn)入 Linux 那個(gè)章節(jié)裡面提到的,關(guān)於語(yǔ)系編碼的問(wèn)題嗎? 就是當(dāng)我們使用 man command 的方式去查詢(xún)某個(gè)資料的說(shuō)明檔時(shí),該說(shuō)明檔的內(nèi)容可能會(huì)因?yàn)槲覀兪褂玫恼Z(yǔ)系, 而產(chǎn)生一些亂碼。另外,利用 ls 查詢(xún)檔案的時(shí)間時(shí),也可能會(huì)有亂碼出現(xiàn)在時(shí)間的部分。 那個(gè)問(wèn)題其實(shí)就是語(yǔ)系的問(wèn)題啦。
    目前大多數(shù)的 Linux distributions 已經(jīng)都是支援萬(wàn)國(guó)碼,此外,也都支援大部分的語(yǔ)言語(yǔ)系了。 這有賴(lài)於
    i18n
    支援的幫助呢! 那麼我們的 Linux 到底支援了多少的語(yǔ)系呢?這可以由 locale 這個(gè)指令來(lái)查詢(xún)到喔!
    [root@linux ~]# locale -a
    aa_DJ
    aa_DJ.iso88591
    en_US
    en_US.iso88591
    en_US.iso885915
    en_US.utf8
    zh_TW
    zh_TW.big5
    zh_TW.euctw
    zh_TW.utf8
    # 其實(shí)輸出的內(nèi)容有很多,鳥(niǎo)哥將一些資訊捨棄了~
    # 從上面的輸出中,我們也不難看出,系統(tǒng)是有支援 big5, utf8 等中文語(yǔ)系資料的!中文語(yǔ)系至少支援了兩種以上的編碼,一種是目前還是很常見(jiàn)的 big5 ,另一種則是越來(lái)越熱門(mén)的 utf-8 編碼。 那麼我們?nèi)绾涡抻嗊@些編碼呢?其實(shí)可以透過(guò)底下這些變數(shù)的說(shuō):
    [root@linux ~]# LANG         
    [root@linux ~]# LC_CTYPE     
    [root@linux ~]# LC_NUMERIC   
    [root@linux ~]# LC_TIME      
    [root@linux ~]# LC_COLLATE   
    [root@linux ~]# LC_MONETARY  
    [root@linux ~]# LC_MESSAGES  
    [root@linux ~]# LC_ALL       基本上,你可以逐一設(shè)定每個(gè)與語(yǔ)系有關(guān)的變數(shù)資料,但事實(shí)上,如果其他的語(yǔ)系變數(shù)都未設(shè)定, 且您有設(shè)定 LANG 或者是 LC_ALL 時(shí),則其他的語(yǔ)系變數(shù)就會(huì)被這兩個(gè)變數(shù)所取代! 這也是為什麼我們?cè)?FC4 當(dāng)中,通常僅設(shè)定 LANG 這個(gè)變數(shù)而已!因?yàn)樗亲钪饕脑O(shè)定變數(shù)。 好了,那麼你應(yīng)該要覺(jué)得奇怪的是,為什麼在 Linux 主機(jī)的終端機(jī)介面 (tty1 ~ tty6) 的環(huán)境下,如果 LANG=zh_TW.big5 這個(gè)設(shè)定值生效後,使用 man 或者其他訊息輸出時(shí), 都會(huì)有一堆亂碼,尤其是使用 ls -l 這個(gè)參數(shù)時(shí)?
    因?yàn)樵?Linux 主機(jī)的終端機(jī)介面下,那個(gè)環(huán)境是無(wú)法顯示像中文這麼複雜的編碼的文字, 所以,就會(huì)產(chǎn)生亂碼了。也就是如此,所以,我們才會(huì)必須要在 tty1 ~ tty6 的環(huán)境下, 加裝一些中文化介面的軟體,才能夠看到中文!不過(guò),如果您是在 Windows 主機(jī)以遠(yuǎn)端連線伺服器的軟體連線到主機(jī)的話,那麼,嘿嘿!其實(shí)文字介面確實(shí)是可以看到中文的。 所以,此時(shí)反而您得要在 LANG 設(shè)定中文編碼才好呢!
    無(wú)論如何,如果發(fā)生一些亂碼的問(wèn)題,那麼設(shè)定系統(tǒng)裡面保有的語(yǔ)系編碼, 例如: en_US 或 en_US.utf8 等等的設(shè)定,應(yīng)該就 OK 的啦!好了,那麼系統(tǒng)預(yù)設(shè)支援多少種語(yǔ)系呢? 當(dāng)我們使用 locale 時(shí),系統(tǒng)是列出目前 Linux 主機(jī)內(nèi)保有的語(yǔ)系檔案, 這些語(yǔ)系檔案都放置在: /usr/lib/locale/ 這個(gè)目錄中。 但是,目前的這個(gè) shell 環(huán)境所支援的語(yǔ)系,則是要看 SUPPORTED 這個(gè)變數(shù)才對(duì)喔!
    那麼,如果我想要修訂系統(tǒng)的語(yǔ)系支援呢?可以修訂 /etc/sysconfig/i18n 這個(gè)檔案呢! 這個(gè)檔案的內(nèi)容有點(diǎn)像這樣:
    [root@linux ~]# vi /etc/sysconfig/i18n
    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"
    SUPPORTED="zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8"你可以在這個(gè)檔案當(dāng)中加入 LC_TIME 或者其他語(yǔ)系相關(guān)變數(shù)的設(shè)定內(nèi)容, 也可以直接修改 LANG 那個(gè)變數(shù)即可! ^_^ 但,事實(shí)上,我們還可以透過(guò)個(gè)人的環(huán)境設(shè)定檔來(lái)設(shè)定 LANG 呢! 如此一來(lái),則不必修訂系統(tǒng)的語(yǔ)系檔案,比較安全啦!
    Tips:
    假設(shè)你用 vi 編輯一個(gè)純文字檔,這個(gè)純文字檔在編輯的時(shí)候,是在 Windows 上面編輯的, 那麼這個(gè)檔案的預(yù)設(shè)編碼應(yīng)該是以 zh_TW.big5 所編輯的才對(duì)。但是,如果你的 shell 環(huán)境中, 卻是使用 LANG=en_US 時(shí),則當(dāng)你編輯該檔案時(shí),就可能會(huì)看到『亂碼』, 或者輸入的中文可能會(huì)變成『亂碼』了。此時(shí),只要你離開(kāi) vi ,然後執(zhí)行 LANG=zh_TW.big5 , 然後再重新以 vi 編輯該檔案,呵呵!應(yīng)該就能夠看到中文啦!但是請(qǐng)注意, 這個(gè)方法當(dāng)然不適用 tty1 ~ tty6 的環(huán)境,原因上面已經(jīng)提過(guò)囉~ 僅適合以類(lèi)似 putty 軟體由 Windows 電腦連線到 linux 主機(jī)上的做業(yè)! 變數(shù)鍵盤(pán)讀取、陣列與宣告: read, array, declare

    我們上面提到的變數(shù)設(shè)定功能,都是直接由指令列直接設(shè)定的,那麼,可不可以讓使用者能夠經(jīng)由鍵盤(pán)輸入? 什麼意思呢?是否記得某些程式執(zhí)行的過(guò)程當(dāng)中,會(huì)等待使用者輸入 "yes/no" 之類(lèi)的訊息。? 在 bash 裡面也有相對(duì)應(yīng)的功能喔!此外,我們還可以宣告這個(gè)變數(shù)的屬性, 例如:陣列或者是數(shù)字等等的。底下就來(lái)看看吧!
  • read
    要讀取來(lái)自鍵盤(pán)輸入的變數(shù),就是用 read 這個(gè)指令了。這個(gè)指令最常被用在 shell script 的撰寫(xiě)當(dāng)中, 以跟使用者進(jìn)行對(duì)談。關(guān)於 script 的寫(xiě)法,我們會(huì)在後面章節(jié)介紹,底下先來(lái)瞧一瞧 read 的相關(guān)語(yǔ)法吧!
    [root@linux ~]# read [-pt] variable
    參數(shù):
    -p  :後面可以接提示字元!
    -t  :後面可以接等待的『秒數(shù)!』這個(gè)比較有趣~不會(huì)一直等待使用者啦!
    範(fàn)例:
    範(fàn)例一:讓使用者由鍵盤(pán)輸入一內(nèi)容,將該內(nèi)容變成 atest 變數(shù)
    [root@linux ~]# read atest
    This is a test
    [root@linux ~]# echo $atest
    This is a test
    範(fàn)例二:提示使用者 30 秒內(nèi)輸入自己的大名,將該輸入字串做成 named 變數(shù)
    [root@linux ~]# read -p "Please keyin your name: " -t 30 named
    Please keyin your name: VBird Tsai
    [root@linux ~]# echo $named
    VBird Tsairead 之後不加任何參數(shù),直接加上變數(shù)名稱(chēng),那麼底下就會(huì)主動(dòng)出現(xiàn)一個(gè)空白行,等待您輸入。 如果加上 -t 後面接秒數(shù)之後,例如上面的範(fàn)例當(dāng)中,那麼 30 秒之內(nèi)沒(méi)有任何動(dòng)作時(shí), 該指令就會(huì)自動(dòng)略過(guò)了~如果是加上 -p ,嘿嘿!後面就會(huì)有比較多可以用的提示字元給我們參考! 在指令的下達(dá)裡面,比較美觀啦! ^_^
  • declare / typeset
    declare 或 typeset 是一樣的功能,就是在宣告變數(shù)的屬性。如果使用 declare 後面並沒(méi)有接任何參數(shù), 那麼 bash 就會(huì)主動(dòng)的將所有的變數(shù)名稱(chēng)與內(nèi)容通通叫出來(lái),就好像使用 set 一樣啦! 那麼 declare 還有什麼語(yǔ)法呢?看看先:
    [root@linux ~]# declare [-aixr] variable
    參數(shù):
    -a  :將後面的 variable 定義成為陣列 (array)
    -i  :將後面接的 variable 定義成為整數(shù)數(shù)字 (integer)
    -x  :用法與 export 一樣,就是將後面的 variable 變成環(huán)境變數(shù);
    -r  :將一個(gè) variable 的變數(shù)設(shè)定成為 readonly ,該變數(shù)不可被更改內(nèi)容,也不能 unset
    範(fàn)例:
    範(fàn)例一:讓變數(shù) sum 進(jìn)行 100+300+50 的加總結(jié)果
    [root@linux ~]# sum=100+300+50
    [root@linux ~]# echo $sum
    100+300+50  
    [root@linux ~]# declare -i sum=100+300+50
    [root@linux ~]# echo $sum
    450         
    範(fàn)例二:將 sum 變成環(huán)境變數(shù)
    [root@linux ~]# declare -x sum
    範(fàn)例三:讓 sum 變成唯讀屬性,不可更動(dòng)!
    [root@linux ~]# declare -r sum
    [root@linux ~]# sum=tesgting
    -bash: sum: readonly variable  declare 也是個(gè)很有用的功能~尤其是當(dāng)我們需要使用到底下的陣列功能時(shí), 他也可以幫我們宣告陣列的屬性喔!不過(guò),老話一句,陣列也是在 shell script 比較常用的啦!
  • 陣列屬性 array 說(shuō)明
    某些時(shí)候,我們必須使用陣列來(lái)宣告一些變數(shù),這有什麼好處啊?在一般人的使用上, 果然是看不出來(lái)有什麼好處的!不過(guò),如果您曾經(jīng)寫(xiě)過(guò)程式的話,那才會(huì)比較瞭解陣列的意義~ 陣列對(duì)寫(xiě)數(shù)值程式的設(shè)計(jì)師來(lái)說(shuō),可是不能錯(cuò)過(guò)學(xué)習(xí)的重點(diǎn)之一哩!好!不囉唆~ 那麼要如何設(shè)定陣列的變數(shù)與內(nèi)容呢?在 bash 裡頭,陣列的設(shè)定方式是:
      var[index]=content

    意思是說(shuō),我有一個(gè)陣列名稱(chēng)為 var ,而這個(gè)陣列的內(nèi)容為 var[1]=小明, var[2]=大明, var[3]=好明 .... 等等,那個(gè) index 就是一些數(shù)字啦,重點(diǎn)是用中刮號(hào) ([ ]) 來(lái)設(shè)定的。 目前我們 bash 提供的是一維陣列。老實(shí)說(shuō),如果您不必寫(xiě)一些複雜的程式, 那麼這個(gè)陣列的地方,可以先略過(guò),等到有需要再來(lái)學(xué)習(xí)即可!因?yàn)橐u作出陣列, 通常與迴圈或者其他判斷式交互使用才有比較高的意義存在!
    範(fàn)例:設(shè)定上面提到的 var[1] ~ var[3] 的變數(shù)。
    [root@linux ~]# var[1]="small min"
    [root@linux ~]# var[2]="big min"
    [root@linux ~]# var[3]="nice min"
    [root@linux ~]# echo "${var[1]}, ${var[2]}, ${var[3]}"比較有趣的地方在於『讀取』,一般來(lái)說(shuō),建議直接以 ${陣列} 的方式來(lái)讀取, 比較正確無(wú)誤的啦!
    文章轉(zhuǎn)載來(lái)源:
    http://hi.baidu.com/harriets/blog/item/5407c4036539ea084afb51f1.html
    本文用于學(xué)習(xí),若侵權(quán)請(qǐng)告之,本人將刪除


    本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/104787/showart_2080455.html
  • 您需要登錄后才可以回帖 登錄 | 注冊(cè)

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報(bào)專(zhuān)區(qū)
    中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP