bash:如何从文件中执行一行?

时间:2014-03-22 01:08:34

标签: bash command-line

我想这很容易,但我无法弄明白。基本上我有一个命令历史文件,我想grep一行并执行它。我该怎么做?

例如:在文件command.txt文件中,有:

wc -l * txt | awk' {OFS =" \ t&#34 ;;打印$ 2,$ 1}' > test.log中

假设上面一行是最后一行,我想做的就是这样的

tail -1 command.txt | "execute"

我尝试使用

tail -1 command.txt | echo 

但没有运气。

有人可以告诉我如何让它发挥作用吗?

谢谢!

4 个答案:

答案 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