是否有任何命令可以将文本输出到(下一个)命令提示符?
我想编写一个函数,该函数在执行时将执行一些命令,然后“建议”下一个要执行的命令。
~/Desktop $ foo
~/Desktop $ some_new_command_which_user_did_not_enter
答案1
答案2
任何兼容 POSIX 的 shell 都会实现vi
命令编辑模式,可以set -o vi
像set +o vi
.编辑模式vi
将区分插入和命令模式。每个提示应默认为输入模式,但按下该ESC
键会将上下文切换到命令模式。
一些相关功能该模式的包括:
<control>-L
- 重画当前命令行。将光标定位在重画线上的同一位置。
#
- 在当前命令行的开头插入该字符
'#'
并将生成的编辑行视为注释。该行应输入命令历史记录中;看fc
。
- 在当前命令行的开头插入该字符
=
- 显示当前命令行位置处的 bigword 可能的 shell 字扩展(请参阅字扩展)。
@letter
- 插入名为的别名的值_信。符号字母代表可移植字符集中的单个字母字符;实现可以支持附加字符作为扩展。如果
alias
_信包含其他编辑命令,这些命令应作为插入的一部分执行。如果不alias
_信启用后,该命令无效。
- 插入名为的别名的值_信。符号字母代表可移植字符集中的单个字母字符;实现可以支持附加字符作为扩展。如果
注意: 的效果@_[letter]
是递归的,特殊字符可以转义为文字输入效果CONTROL+V[CHAR]
[count]-
- 将当前命令行设置为计数shell 命令历史记录中的上一个命令行。如果未指定 count,则默认为 1。光标应定位在新命令的第一个字符上。如果
k
or-
命令会撤退超过对此 shell 有效的最大命令数(受$HISTSIZE
环境变量影响),终端报警,该命令无效。
- 将当前命令行设置为计数shell 命令历史记录中的上一个命令行。如果未指定 count,则默认为 1。光标应定位在新命令的第一个字符上。如果
[count]y
运动- 扬克(即复制)从当前光标位置到运动命令产生的位置的字符保存缓冲区。一个号码数数应应用于运动命令。如果运动命令将移向命令行的开头,则当前光标位置下的字符不应包含在拉出的字符集中。如果运动命令是
y
,则整个当前命令行应被拉入保存缓冲区。当前光标位置应保持不变。如果计数大于当前光标位置和运动命令将光标移动到的命令行末尾之间的字符数,则不应将其视为错误;上述范围内的所有剩余字符均应被拉出。
- 扬克(即复制)从当前光标位置到运动命令产生的位置的字符保存缓冲区。一个号码数数应应用于运动命令。如果运动命令将移向命令行的开头,则当前光标位置下的字符不应包含在拉出的字符集中。如果运动命令是
Y
- 将当前光标位置到行尾的字符拖入保存缓冲区。当前字符位置应保持不变。
[count]p
- 将保存缓冲区当前内容的副本放在当前光标位置之后。当前光标位置应前进到从保存缓冲区放入的最后一个字符。计数应指示应放置多少份保存缓冲区的副本。
[count]P
- 将保存缓冲区当前内容的副本放在当前光标位置之前。当前光标位置应移动到从保存缓冲区放入的最后一个字符。计数应指示应放置多少份保存缓冲区的副本。
通过特定于 shell 的行编辑器可以产生许多类似的效果(如通过bash
'sreadline
的bind
命令~/.input.rc
或 BSD 许可的editline
's ~/.editrc
)。