Bash将光标移动到行首

7

如何在bash脚本中将光标设置到行的开头。它应该具有与按Ctrl-a相同的行为。 我尝试了类似这样的内容echo -e "\e[H",但没有起作用。

这是我的操作目的。假设我有一个命令要在执行之前对其执行某些操作(无论是什么)。因此,我使用绑定-x将一个键(使用绑定-x)关联到将执行该操作的函数。但是,在执行该操作之前,我需要将光标放置在该命令的开头(就像按下Ctrl-a一样)。


1
\e[H(缩写为\e[1;1H)将光标移动到终端窗口的第一行和第一列。 - chepner
3个回答

4
在Deanie的回答中,虽然...
echo -ne "\r"

确保我的 hash bang 正确,这是正确的方法:

#!/bin/bash

#!/bin/sh

另外,还可以尝试使用printf:https://dev59.com/questions/qGUp5IYBdhLWcg3wj4Lu - Quintin Balsdon

3

如果不抑制换行符,那么只需要执行以下命令:

echo -ne "\r"

抱歉,我忘记了抑制换行符。


它只是删除了前一行,而不是我正在寻找的内容。 - Walid Ber
@WalidBer "如何在Bash脚本中将光标设置到行的开头" ... 这是如何将光标设置到行的开头。您想要询问的是如何将其设置为“主页”位置,通常是第一行和第一个字符空格。 - Deanie
我必须使用 #!/bin/bash 而不是 #!/bin/sh 来运行它。 - Quintin Balsdon

0
假设想要将/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 - Walid Ber
没事了,我找到了一个解决办法。 bind '"\key1":"\C-a"' bind -x '"\key2":"my_function"' bind '"\eW":"\key1\key2"'. 谢谢 - Walid Ber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接