我有一个脚本可以生成一些我必须执行的命令......
示例:
wolfy@wolfy-server:~$ ./myScript.sh
some linux command (Like: ls, cd. cp, ...)
wolfy@wolfy-server:~$
我想在运行myScript.sh时自动在命令行中输入以下命令:
wolfy@wolfy-server:~$ ./myScript.sh
wolfy@wolfy-server:~$ some linux command
所以我只需要检查命令是否一切正常,然后按回车键运行它......不需要复制:)
可以这样做吗?
修改 的 我编辑了我的示例,以便每个人都可以看到此脚本不能是别名,因为此脚本每次都返回不同的命令。顺便说一句...这个命令不是我的问题,我的问题是如何把这个“随机”命令放在那个地方。
答案 0 :(得分:3)
最近,你可以来,恕我直言只是回应命令(正确引用!!!!)
你可以做什么:
#!/bin/bash
alias smartls='ls -lah / | grep "ufv" | xargs cat'
像
一样使用它 source ./mySript.sh
提示:而不是source ./myScript.sh
您可以说较短的. ./myScript.sh
现在,当你输入时,魔法会出现:
smartls ESC CTRL-E
使用默认(emacs)键绑定,这将扩展命令,将命令保留在编辑缓冲区中供您编辑/查看!
提示:选择一个非侵入但很短的别名(比如Q
,对我来说会很好)并减少键入的键数
提示:learn about mapping keys and bindings并且(可能)了解如何将这三个键映射到单个键,甚至更快。也许您甚至可以在这样的密钥绑定中包含myScript.sh
的来源。
HTH
答案 1 :(得分:1)
使用脚本绝对不可能做到这一点。
您可以将该命令写入脚本并等待按键...
答案 2 :(得分:0)
如果脚本正在生成命令,为什么不运行它们?
如果由于某种原因必须以这种方式完成,那么你可以使用“eval”#39;运行命令:
eval $(./myScript.sh)
答案 3 :(得分:0)
编辑:这是另一种尝试。 这似乎适用于所有情况。
if [[ $# -ge 1 ]]
then
str=$1;
echo $str > myCmd
else
str=`cat myCmd`;
fi
echo $str
history -s $str
执行此命令:$ source myScript“cmd”。(添加源代码很重要)。在终端上显示该命令之后,如果要执行该命令,请输入!!或者按 UP 键(它是历史记录中的最后一个命令),然后您也可以编辑命令。同样,此脚本还存储您的上一个命令,因此如果您运行此脚本而不带参数,则会显示您执行的最后一个命令。另外,可以使用别名myscript =“source myscript”来简化操作。
以下是输出结果:
priyank@priyank-laptop ~ $ source try.sh 'cat i.cpp | grep main'
cat i.cpp | grep main
priyank@priyank-laptop ~ $ !!
cat i.cpp | grep main
int main()
priyank@priyank-laptop ~ $ . try.sh
cat i.cpp | grep main
priyank@priyank-laptop ~ $ !!
cat i.cpp | grep main
int main()
priyank@priyank-laptop ~ $
我的第一次尝试: 这是我能想到的最好的,但仍有一些问题(只运行基本的cmds,没有管道等):
if [[ $# -ge 1 ]]
then
str=$1
echo $1 > myCmd
else
str=`cat myCmd`;
fi
echo $str | cat &
t=`cat`
$str;
按Ctrl + D运行命令。如果您不想运行该命令,请按Ctrl + C. 如果出现问题,您可以复制并尝试该命令。您可以尝试编辑此脚本以满足您的需求。
您也可以将其运行为:bash script.sh“new cmd”。 新的cmd将在myCmd文件中被覆盖,该文件包含您的命令。如果没有提供cmd,那么它将使用myCmd文件中的cmd。
答案 4 :(得分:0)
您是否只是在寻找一个在继续之前要求您确认的脚本?你可以用echo和read来做到这一点:
#!/usr/bin/env bash
cmd="some command"
echo -n "press enter to execute: $cmd"
read
$cmd
你甚至可以把它包装成一般的效用函数:
function exec_with_confirm(){ CMD = “$ @” echo -n“按Enter键执行:$ cmd” 读 $ @ }
exec_with_confirm ls -l
exec_with_confirm du -sk .
这只是到目前为止,它不适用于shell元字符,处理那些你需要修改函数以获取字符串并将其传递给bash -c,并将其发送给引用的字符串。< / p>
如果你的目的只是在执行前得到确认,这应解决这个问题。
如果您打算将它放在下一个命令行上,那么这不会那样做。