bash可以将命令写入终端输入吗?
我有一个冗长的命令。我创建了一个bash函数,使它更容易记住 例如:bash可以将命令写入终端输入吗?,bash,shell,sh,Bash,Shell,Sh,我有一个冗长的命令。我创建了一个bash函数,使它更容易记住 例如: phew(){ echo“这不是我的超级冗长命令” } 这一切都很棒。但是,我还不想执行该命令。我只想帮我打字 有没有办法将一串文本写入终端输入? 调整上述示例: phew(){ foo“echo‘这不是我的超级冗长命令’” } $phew#会为我写下一行 $echo“这不是我的超级冗长命令”#然后,我按enter键。生产。。。 #这不是我的冗长命令 我找到了一种方法,但这不是我真正想要的。它对环境的描述太具体了 需要App
phew(){
echo“这不是我的超级冗长命令”
}
这一切都很棒。但是,我还不想执行该命令。我只想帮我打字
有没有办法将一串文本写入终端输入?
调整上述示例:
phew(){
foo“echo‘这不是我的超级冗长命令’”
}
$phew#会为我写下一行
$echo“这不是我的超级冗长命令”#然后,我按enter键。生产。。。
#这不是我的冗长命令
我找到了一种方法,但这不是我真正想要的。它对环境的描述太具体了
需要AppleScript和iTerm2。
因此,它只能在mac上工作
write_noline() {
osascript \
-e "tell application \"iTerm2\" to tell current window to tell current session to write text \"${@}\" newline NO"
}
使用以下示例:
phew() {
write_noline "echo 'This is not really my super long winded command'"
}
您可以将文本的其余部分作为参数 脚本:
ls "$1"
命令行:
>script '/home/me/Pictures'
请尝试以下方法之一:
bash
必需:
phew() {
printf '%s' "Type something: "
read c < <(echo $@)
echo $c
}
输出:
Type something: Tro lo lo lo LO
Hit enter to run: echo 'This is not really my super long winded command'
phew() {
c="echo 'This is not really my super long winded command'"
read -p "Hit enter to run: $c"
$c
}
测试:
输出:
Type something: Tro lo lo lo LO
Hit enter to run: echo 'This is not really my super long winded command'
…用户点击回车键。输出:
'This is not really my super long winded command'
这可以更危险地概括为:
phew() {
c="$@"
read -p "Hit enter to run: $c"
$c
}
用户将在其中键入phew“echo'yadda yadda'”
。这样更安全
只在脚本中使用这样的函数来保存程序员
编写不同版本的phew
的麻烦
您可以创建一个别名,然后使用
M-C-e
(在PC键盘上按Ctrl+Alt+e)将其展开
alias phew="echo 'This is a very long command'"
在此之后,键入phew
然后键入M-C-e
将在命令行上留下echo“这是一个很长的命令”
注意:
M-C-e
将展开命令行上的所有内容,包括命令替换(反勾号),这将导致执行封闭的命令。确保这就是你想要的。有一个单独的readline函数,仅用于扩展别名;默认情况下,它不绑定到键,但您可以将其绑定到一个键。不,它不能馈送到终端输入。也许你可以用键盘快捷键做你想做的事情。看看bash中的readline
定制功能。这可能就是我最后要做的。理想情况下,我希望动态编辑命令。添加一些额外的标志等等。这应该可以有效地满足您的需要:cmd=“cmd goes here”;读取-ei“$cmd”$回复
@TNierath,谢谢。。。这很有效,让我尝试了bash
shell的read
命令。请看修改后的答案。实际上,eval$REPLY
最后会更好。我想对于大多数用例,我更喜欢alias扩展选项,但是知道它还是很好的