簡體   English   中英

KornShell(ksh)環繞

[英]KornShell (ksh) wraparound

好的,我確信這很簡單,但它讓我瘋了。 我最近去了一個程序,我不得不退后一點並使用Redhat 9.當我在運行KornShell(ksh)的標准xterm的命令行上輸入時,我到達了結束時屏幕右側滑動(切斷命令的左側),而不是將文本環繞到新行。 這讓我很難,因為我無法直接從命令行復制和粘貼上一個命令。 我必須查看歷史記錄並從那里粘貼命令。 如果你想知道,我做了很多命令行awk腳本,導致行很長。

有沒有辦法強制命令行換行而不是將可見性轉移到我正在鍵入的命令的右側?

我通過手冊頁選項沒有運氣。

我在跑:

  • XFree86 4.2.99.903(174)
  • KSH 5.2.14。

謝謝。

你做man ksh嗎?

你想做一set -o multiline

摘自man ksh

多:

內置編輯器將在屏幕上使用多行來顯示長於屏幕寬度的行。 這可能不適用於所有終端。

eval $(調整大小)應該這樣做。

如果可能,嘗試通過添加\\ ie將命令分解為多行:

$ mycommand -a foo \
  -f bar \
  -c dif

簡單的答案是:

$ set -o multiline

早於5.12的ksh,就像NetBSD 6.1附帶的ksh一樣,沒有這個選項。 您必須關閉當前的交互式輸入行編輯模式,通常是emacs:

$ set +o emacs

這完全關閉了許多功能,例如制表完成或使用“向上箭頭”鍵來回滾上一個命令。

如果您決定以某種方式習慣emacs模式,請記住^ a進入行的開頭(“Home”鍵不會工作)並且^ e將結束。

我不知道強迫shell換行的方法,但我會問為什么你要寫那么長的行。 使用awk腳本,我只需將腳本包裝在單引號中,然后打破我想要的行。 如果你需要腳本中的單引號,它就變得棘手了 - 如果你需要單引號和雙引號,那就是惡魔般的。 實際上,規則很簡單:使用單引號來包裝整個腳本,當你想在腳本中使用單引號時,寫下'\\'' 第一個引號終止前一個單引號字符串; 反斜杠單引號產生單引號; 並且最后一個單引號開始一個新的單引號字符串。 如果您需要為eval或類似的東西逃脫這些角色,它真的會變得毛茸茸。

另一個問題是 - 為什么不進入編輯器。 因為我是一個頑固的vim nutcase(好吧 - 我已經使用vi超過20年,所以它比我更容易替代),我將Korn shell設置為vi模式(set -o vi),並且可以執行escape-v來啟動編輯器,無論我輸入什么。

這是一個務實的答案,但當這對我來說是一個問題時,我通常會這樣做:

strings ~/.history | grep COMMAND

要么

strings ~/.history | tail

(歷史文件中包含一點二進制數據,因此'字符串')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM