Bash

在 bash 中編輯時控制行編輯邊界的內容

  • April 2, 2021

正在閱讀這篇關於tty 如何在 Linux 中工作的精彩文章,現在想知道。

執行 bash 時,每行都以提示開頭,使用者無法刪除提示。這是由線紀律級別的 tty 控制還是由 bash 控制?

通過 Bash 本身,通過Readline 庫。(由 Bash 維護者維護。)它知道輸入區域從哪裡開始,並據此採取行動。

您連結的文章甚至提到了 Readline 和 shell:

所以為了方便起見,作業系統提供了一個編輯緩衝區和一些基本的編輯命令

$$ … $$

高級應用程序可以通過將線路規則置於原始模式而不是預設的熟(或規範)模式來禁用這些功能。大多數互動式應用程序(編輯器、郵件使用者代理、shell、所有依賴於 curses 或readline的程序)以原始模式執行,並自行處理所有行編輯命令。

(雖然我不會將 curses 和 readline 放在與編輯器、MUA 和 shell 相同的級別。相反,它們是那些程序用於處理輸入的工具。)

另一方面,即使是內置的行編輯也不會讓您覆蓋以前在螢幕上的內容。試試 eg echo -n 'prompt: '; cat,你應該不能編輯到這個prompt: 部分。

引用自:https://unix.stackexchange.com/questions/643219