Bash
在 bash 中編輯時控制行編輯邊界的內容
正在閱讀這篇關於tty 如何在 Linux 中工作的精彩文章,現在想知道。
執行 bash 時,每行都以提示開頭,使用者無法刪除提示。這是由線紀律級別的 tty 控制還是由 bash 控制?
通過 Bash 本身,通過Readline 庫。(由 Bash 維護者維護。)它知道輸入區域從哪裡開始,並據此採取行動。
您連結的文章甚至提到了 Readline 和 shell:
所以為了方便起見,作業系統提供了一個編輯緩衝區和一些基本的編輯命令
$$ … $$
高級應用程序可以通過將線路規則置於原始模式而不是預設的熟(或規範)模式來禁用這些功能。大多數互動式應用程序(編輯器、郵件使用者代理、shell、所有依賴於 curses 或readline的程序)以原始模式執行,並自行處理所有行編輯命令。
(雖然我不會將 curses 和 readline 放在與編輯器、MUA 和 shell 相同的級別。相反,它們是那些程序用於處理輸入的工具。)
另一方面,即使是內置的行編輯也不會讓您覆蓋以前在螢幕上的內容。試試 eg
echo -n 'prompt: '; cat
,你應該不能編輯到這個prompt:
部分。