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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
打印 上一主題 下一主題

[學(xué)習(xí)共享] shell 十三問? [復(fù)制鏈接]

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
11 [報告]
發(fā)表于 2003-12-09 14:12 |只看該作者

shell 十三問?

1) 為何叫做 shell ?

在介紹 shell 是甚麼東西之前,不妨讓我們重新檢視使用者與電腦系統(tǒng)的關(guān)係:
        圖(FIXME)

我們知道電腦的運作不能離開硬體,但使用者卻無法直接對硬體作驅(qū)動,
硬體的驅(qū)動只能透過一個稱為"作業(yè)系統(tǒng)(Operating System)"的軟體來控管,
事實上,我們每天所談的 linux ,嚴格來說只是一個作業(yè)系統(tǒng),我們稱之為"核心(kernel)"。
然而,從使用者的角度來說,使用者也沒辦法直接操作 kernel ,
而是透過 kernel 的"外殼"程式,也就是所謂的 shell ,來與 kernel 溝通。
這也正是 kernel 跟 shell 的形像命名關(guān)係。如圖:
                圖(FIXME)

從技術(shù)角度來說,shell 是一個使用者與系統(tǒng)的互動界面(interface),
主要是讓使用者透過命令行(command line)來使用系統(tǒng)以完成工作。
因此,shell 的最簡單的定義就是---命令解譯器(Command Interpreter):
        * 將使用者的命令翻譯給核心處理,
        * 同時,將核心處理結(jié)果翻譯給使用者。

每次當我們完成系統(tǒng)登入(log in),我們就取得一個互動模式的 shell ,也稱為 login shell 或 primary shell。
若從行程(process)角度來說,我們在 shell 所下達的命令,均是 shell 所產(chǎn)生的子行程。這現(xiàn)像,我們暫可稱之為 fork 。
如果是執(zhí)行腳本(shell script)的話,腳本中的命令則是由另外一個非互動模式的子 shell (sub shell)來執(zhí)行的。
也就是 primary shell 產(chǎn)生 sub shell 的行程,sub shell 再產(chǎn)生 script 中所有命令的行程。
(關(guān)於行程,我們?nèi)蔗嵊袡C會再補充。)

這裡,我們必須知道:kernel 與 shell 是不同的兩套軟體,而且都是可以被替換的:
        * 不同的作業(yè)系統(tǒng)使用不同的 kernel ,
        * 而在同一個 kernel 之上,也可使用不同的 shell 。
在 linux 的預(yù)設(shè)系統(tǒng)中,通常都可以找到好幾種不同的 shell ,且通常會被列於如下檔案裡:
        /etc/shells
不同的 shell 有著不同的功能,且也彼此各異、或說"大同小異"。
常見的 shell 主要分為兩大主流:
        sh:
                burne shell (sh)
                burne again shell (bash)
        csh:
                c shell (csh)
                tc shell (tcsh)
                korn shell (ksh)
        (FIXME)

大部份的 Linux 系統(tǒng)的預(yù)設(shè) shell 都是 bash ,其原因大致如下兩點:
        * 自由軟體
        * 功能強大
bash 是 gnu project 最成功的產(chǎn)品之一,自推出以來深受廣大 Unix 用戶喜愛,
且也逐漸成為不少組織的系統(tǒng)標準。

論壇徽章:
0
12 [報告]
發(fā)表于 2003-12-09 19:07 |只看該作者

shell 十三問?

臺灣!看來領(lǐng)先我們的技術(shù)太多了。佩服。!
大家努力答答看。

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
13 [報告]
發(fā)表于 2003-12-09 23:15 |只看該作者

shell 十三問?

關(guān)于{}和()
1.{} 的用法
確認你有一個叫file和一個叫file1的變量。能夠使用以下的語句給它們賦值:
$ file=this
$ file1=that
$echo $fileand$file1 尋找變量fileand,file1
sh: fileand: parameter not set
$ echo ${file} and $file1 尋找變量file,file1
thisandthat
花括號被用來區(qū)分變量名和周圍的文本
2.()的用法
命令替代
語法:
$(command)
例子:
$pwd
/home/user2
$ curdir=$(pwd)
$ echo $curdir
/home/user2
$ cd /tmp
$ pwd
$ cd $curdir
$ pwd
/home/user2
命令替代用來替代一個命令和命令行輸出。命令替代的標準語法,也是POSIX鼓勵的一種語法是:$(command).
命令替代讓你捕獲一個命令的輸出,用它作為另一個命令的參數(shù),或是賦值給一個變量。象在變量替代中一樣,命令替代的執(zhí)行是在命令行開始之前完成的。當命令行輸出包含回車換行,它們會被空格代替。
同變量替代相似,命令替代使用一個美元符號之后的用括號包圍的一個命令。
所有有效的shell腳本都可以加入命令替代。Shell 掃描每行腳本,執(zhí)行它發(fā)現(xiàn)的開始于一個開括號,結(jié)束與于一個閉括號的命令。
命令替代的另外一種格式是用反引號來環(huán)繞一個命令象:
`command`
它和$(command) 是等價的,并且這是Bourne Shell認證的唯一的形式。`command`形式可以用在POSIX的腳本中和Bourne Shell的腳本中。
命令替代通常是在將一個命令的輸出賦給一個變量或以后的處理時使用。通常pwd命令將它的輸出送到你的屏幕。當你執(zhí)行以下的賦值語句:
$ curdir=$(pwd) 或 $ curdir=`pwd`
pwd 的輸出被賦給變量 curdir。

論壇徽章:
0
14 [報告]
發(fā)表于 2003-12-10 22:22 |只看該作者

shell 十三問?

以前接觸了一些臺灣/香港軟件和技術(shù)人員
其實并不是他們技術(shù)首先問題
而是他們很務(wù)實,簡潔,而且最重要是應(yīng)用得很適當,就是把一個簡單的東西發(fā)揮它最大的用處

我最佩服他們這方面的思想

論壇徽章:
0
15 [報告]
發(fā)表于 2003-12-11 09:35 |只看該作者

shell 十三問?

出不了力,為你們支持一下。

論壇徽章:
0
16 [報告]
發(fā)表于 2003-12-11 14:55 |只看該作者

shell 十三問?

[quote="高山流云"][/quote]
我用了set在cshell里給變量賦值怎么不成功呀,我是小菜,大家多幫忙

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
17 [報告]
發(fā)表于 2003-12-11 17:30 |只看該作者

shell 十三問?

原帖由 "config t" 發(fā)表:
以前接觸了一些臺灣/香港軟件和技術(shù)人員
其實并不是他們技術(shù)首先問題
而是他們很務(wù)實,簡潔,而且最重要是應(yīng)用得很適當,就是把一個簡單的東西發(fā)揮它最大的用處

我最佩服他們這方面的思想


怎麼我在臺灣的感覺剛好相反呢?  ^_^

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
18 [報告]
發(fā)表于 2003-12-12 02:55 |只看該作者

shell 十三問?

2) shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)係?

當你成功登錄進一個文字界面之後,大部份情形下,
你會在熒幕上看到一個不斷閃爍的方塊或底線(視不同版本而別),
我們稱之為*遊標*(cursor)。
遊標的作用就是告訴你接下來你從鍵盤輸入的按鍵所插入的位置,
且每輸入一鍵遊標便向右邊移動一個格子,若連續(xù)輸入太多的話,則自動接在下一行輸入。

假如你剛完成登錄還沒輸入任何按鍵之前,你所看到的遊標所在位置的同一行的左邊部份,
我們稱之為*提示符號*(prompt)。
提示符號的格式或因不同系統(tǒng)版本而各有不同,在 Linux 上,只需留意最接近遊標的一個可見的提示符號,通常是如下兩者之一:
        $:給一般使用者帳號使用
        #:給 root (管理員)帳號使用

事實上,shell prompt 的意思很簡單:
        * 是 shell 告訴使用者:您現(xiàn)在可以輸入命令行了。
我們可以說,使用者只有在得到 shell prompt 才能打命令行,
而 cursor 是指示鍵盤在命令行所輸入的位置,使用者每輸入一個鍵,cursor 就往後移動一格,
直到碰到命令行讀進 CR(Carriage Return,由 Enter 鍵產(chǎn)生)字符為止。
CR 的意思也很簡單:
        * 是使用者告訴 shell:老兄你可以執(zhí)行我的命令行了。
嚴格來說:
        * 所謂的命令行,就是在 shell prompt 與 CR 字符之間所輸入的文字。
        (思考:為何我們這裡堅持使用 CR 字符而不說 Enter 鍵呢?答案在後面的學(xué)習(xí)中揭曉。)

不同的命令可接受的命令行格式或有不同,一般情況下,一個標準的命令行格式為如下所列:
        command-name options argument

若從技術(shù)細節(jié)來看,shell 會依據(jù) IFS(Internal Field Seperator) 將 command line 所輸入的文字給拆解為"字段"(word)。
然後再針對特殊字符(meta)先作處理,最後再重組整行 command line 。
(注意:請務(wù)必理解上兩句話的意思,我們?nèi)蔗岬膶W(xué)習(xí)中會;氐竭@裡思考。)

其中的 IFS 是 shell 預(yù)設(shè)使用的欄位分隔符號,可以由一個及多個如下按鍵組成:
        * 空白鍵(White Space)
        * 表格鍵(Tab)
        * 回車鍵(Enter)

系統(tǒng)可接受的命令名稱(command-name)可以從如下途逕獲得:
        * 明確路逕所指定的外部命令
        * 命令別名(alias)
        * 自定功能(function)
        * shell 內(nèi)建命令(built-in)
        * $PATH 之下的外部命令
每一個命令行均必需含用命令名稱,這是不能缺少的。

[ 本帖最后由 網(wǎng)中人 于 2008-10-30 02:05 編輯 ]

論壇徽章:
0
19 [報告]
發(fā)表于 2003-12-12 09:08 |只看該作者

shell 十三問?

說得好,請繼續(xù)!

論壇徽章:
0
20 [報告]
發(fā)表于 2003-12-12 10:50 |只看該作者

shell 十三問?

頂   
看來買書學(xué)習(xí)這條法子是不行的了  
書只能領(lǐng)你入門   
要想登堂入室還要多在論壇上混啊
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP