我想这很容易,但我无法弄明白。基本上我有一个命令历史文件,我想grep一行并执行它。我该怎么做?
例如:在文件command.txt文件中,有:
wc -l * txt | awk' {OFS =" \ t&#34 ;;打印$ 2,$ 1}' > test.log中
假设上面一行是最后一行,我想做的就是这样的
tail -1 command.txt | "execute"
我尝试使用
tail -1 command.txt | echo
但没有运气。
有人可以告诉我如何让它发挥作用吗?
谢谢!
答案 0 :(得分:4)
您可以使用
将任意文件加载到shell的历史记录列表中history -r command.txt
此时,您可以使用所有常规历史记录扩展命令来查找要执行的命令。例如,执行上述命令后,文件中的最后一行可以使用
运行!!
答案 1 :(得分:3)
只需使用命令替换
bash -c "$(tail -1 command.txt)"
答案 2 :(得分:1)
那样的东西?
echo "ls -l" | xargs sh -c
这个答案只涉及执行部分。它假设您有一种从文件中提取所需行的方法,可能是每行的循环。该文件的每一行都是echo
的参数。
答案 3 :(得分:1)
您可以使用eval
。
eval "$(tail -n 1 ~/.bash_history)"
或者如果你想让它执行其他一行:
while read -r; do
if some condition; then
eval "$REPLY"
fi
done < ~/.bash_history