KornShell(ksh)环绕

时间:2020-03-06 14:48:25  来源:igfitidea点击:

好吧,我敢肯定这很简单,但是这让我发疯了。最近,我去上了一个程序,其中我不得不退后一步并使用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)应该这样做。