shell 13问(2) shell prompt(PS1) 與 Carriage Return(CR) 的關係?

来源:互联网 发布:数据圈 编辑:程序博客网 时间:2024/04/21 00:35
當你成功登錄進一個文字界面之後,大部份情形下, 你會在熒幕上看到一個不斷閃爍的方塊或底線(視不同版本而別), 我們稱之為*遊標*(coursor)。 遊標的作用就是告訴你接下來你從鍵盤輸入的按鍵所插入的位置, 且每輸如一鍵遊標便向右邊移動一個格子,若連續輸入太多的話,則自動接在下一行輸入。 假如你剛完成登錄還沒輸入任何按鍵之前,你所看到的遊標所在位置的同一行的左邊部份, 我們稱之為*提示符號*(prompt)。 提示符號的格式或因不同系統版本而各有不同,在 Linux 上,只需留意最接近遊標的一個可見的提示符號,通常是如下兩者之一: $:給一般使用者帳號使用 #:給 root (管理員)帳號使用 事實上,shell prompt 的意思很簡單: * 是 shell 告訴使用者:您現在可以輸入命令行了。 我們可以說,使用者只有在得到 shell prompt 才能打命令行, 而 cursor 是指示鍵盤在命令行所輸入的位置,使用者每輸入一個鍵,cursor 就往後移動一格, 直到碰到命令行讀進 CR(Carriage Return,由 Enter 鍵產生)字符為止。 CR 的意思也很簡單: * 是使用者告訴 shell:老兄你可以執行我的命令行了。 嚴格來說: * 所謂的命令行,就是在 shell prompt 與 CR 字符之間所輸入的文字。 (思考:為何我們這裡堅持使用 CR 字符而不說 Enter 鍵呢?答案在後面的學習中揭曉。) 不同的命令可接受的命令行格式或有不同,一般情況下,一個標準的命令行格式為如下所列: command-name options argument 若從技術細節來看,shell 會依據 IFS(Internal Field Seperator) 將 command line 所輸入的文字給拆解為"字段"(word)。 然後再針對特殊字符(meta)先作處理,最後再重組整行 command line 。 (注意:請務必理解上兩句話的意思,我們日後的學習中會常回到這裡思考。) 其中的 IFS 是 shell 預設使用的欄位分隔符號,可以由一個及多個如下按鍵組成: * 空白鍵(White Space) * 表格鍵(Tab) * 回車鍵(Enter) 系統可接受的命令名稱(command-name)可以從如下途逕獲得: * 明確路逕所指定的外部命令 * 命令別名(alias) * 自定功能(function) * shell 內建命令(built-in) * $PATH 之下的外部命令 每一個命令行均必需含用命令名稱,這是不能缺少的。
原创粉丝点击