KornShell(ksh)环绕
好吧,我敢肯定这很简单,但是这让我发疯了。最近,我去上了一个程序,其中我不得不退后一步并使用Redhat9. 当我从运行KornShell(ksh)的标准xterm在命令行上键入命令时,我到达了末尾。一行,屏幕滑动到右侧(切断命令的左侧),而不是将文本环绕在新行上。这使我感到困难,因为我无法直接从命令行轻松地从上一个命令复制和粘贴。我必须查看历史记录,然后从那里粘贴命令。如果我们想知道,我会执行很多命令行awk脚本,这些脚本会导致该行变得很长。
有没有一种方法可以强制命令行换行,而不是将可见性移至我正在键入的命令的右侧?
我倒霉了手册页选项,没有运气。
我在跑:
- XFree86 4.2.99.903(174)
- KSH 5.2.14.
谢谢。
解决方案
如果可能,尝试通过添加\将命令分解为多行
IE:
$ mycommand -a foo \ -f bar \ -c dif
我不知道强迫外壳换行的方法,但是我想问一下为什么你要写这么长的行。使用awk脚本,我只需将脚本用单引号引起来,然后在需要的地方断开行。仅在脚本中需要单引号的情况下才变得棘手,而在同时需要单引号和双引号的情况下则变得复杂。实际上,规则很简单:使用单引号将整个脚本包装起来,然后在脚本中需要单引号时,写上'''。第一个引号终止前面的单引号字符串;反斜杠单引号产生一个单引号;最后一个单引号开始一个新的单引号字符串。如果我们需要在评估或者类似的过程中逃脱这些角色,那真是毛茸茸的。
另一个问题是为什么不启动编辑器。由于我是一个顽固的vim螺母箱(好,我使用vi已有20多年了,所以对我来说比其他方法容易得多),因此我将Korn shell设置为vi模式(set -o vi),并且可以执行escape-v以在我键入的任何内容上启动编辑器。
你做了man ksh
吗?
你想做一个"设置-o多行"。
摘自man ksh
:
multiline: The built-in editors will use multiple lines on the screen for lines that are longer than the width of the screen. This may not work for all terminals.
这是一个务实的答案,但是当这对我来说是一个问题时,我通常会执行以下操作:
strings ~/.history | grep COMMAND
或者
strings ~/.history | tail
(历史文件中包含一些二进制数据,因此是"字符串")
eval $ {resize)应该这样做。