【问题标题】:Bash place cursor beginning of lineBash 将光标置于行首
【发布时间】:2017-08-02 03:52:10
【问题描述】:

如何在 bash 脚本中将光标设置到行首。它应该具有与按 Ctrl-a 相同的行为。 我尝试了类似echo -e "\e[H" 的方法,但没有成功。

这就是我想要做的。假设我有一个命令,我想在执行它之前对其执行一个操作(不管是什么)。因此,我将 Key (使用 bind -x )关联到将执行该操作的函数。但是,在执行该操作之前,我需要将光标放在该命令的开头(就像按下 Ctrl-a 一样)

【问题讨论】:

  • \e[H\e[1;1H的缩写)将光标移动到终端窗口的第一行第一列。

标签: bash shell terminal command prompt


【解决方案1】:

不就是这样

echo -ne "\r"

抱歉,忘记取消换行了。

【讨论】:

  • 它只是删除了前一行。不是我要找的。​​span>
  • @WalidBer“如何在 bash 脚本中将光标设置为行首”...这就是如何将其设置为行首的方法。您想问的是如何将其设置为“home”位置,通常是第一行和第一个字符空间。
  • 我必须使用 #!/bin/bash 而不是 #!/bin/sh 来运行它
【解决方案2】:

假设要将/some/path 绑定到shift-alt-W 并希望移动到行首:

bind '"\eW":"/some/path\C-a"'

shift-alt-w 会将/some/path 输入终端,\C-A 会移动到行首,因此您可以在/some/path 之前输入cd

【讨论】:

  • 是否可以执行绑定到我的键的功能,然后将光标移动到开头?如果我尝试这个bind '"\eW":"my_function\C-a"',它只会打印 my_function。
  • 没关系,我刚刚找到了解决方法。 `bind '"\key1":"\C-a"' bind -x '"\key2":"my_function"' bind '"\eW":"\key1\key2"'。谢谢
【解决方案3】:

虽然迪妮的回答

echo -ne "\r"

是正确的,我发现我必须确保我的哈希爆炸是正确的:

#!/bin/bash

不是

#!/bin/sh

【讨论】:

猜你喜欢
  • 2013-05-21
  • 2019-11-21
  • 2018-08-05
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多