As soluções de Brad e Mankoff são boas sugestões. Outra que é semelhante a uma combinação de ambos seria usar GNU Screen para implementar sua fila. Isto tem a vantagem de poder rodar em segundo plano, você pode verificá-lo sempre, e colocar novos comandos em fila apenas os cola no buffer para ser executado após os comandos anteriores saírem.
Primeiro, execute:
$ screen -d -m -S queue
(aliás, agora é um bom momento para jogar com alguns arquivos screenrc )
impressionantes.
Isso gerará uma sessão de tela em segundo plano para você chamada fila.
Agora, enfileire quantos comandos quiser:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
Estou fazendo vários comandos acima apenas para testes. Seu caso de uso provavelmente seria mais parecido com:
screen -S queue -X stuff "echo first^M"
screen -S queue -X stuff "echo second^M"
Note que o "^ M" na minha linha acima é uma maneira de obter uma nova linha incorporada que será interpretada mais tarde, depois que a tela for inserida em seu shell bash existente. Use "CTL-V" para obter essa sequência.
Seria muito fácil criar alguns scripts de shell simples para automatizar isso e colocar em fila os comandos. Então, sempre que você quiser verificar o status de sua fila em segundo plano, anexe novamente via:
screen -S queue -r
Tecnicamente, você nem precisa nomear sua sessão de tela e ela funcionará bem, mas uma vez que você ficar viciado, você vai querer deixar uma rodando o tempo todo de qualquer maneira. ;-)
Claro, se você fizer isso, outra boa maneira de fazer isso seria nomear uma das janelas atuais "queue" e usar:
screen -S queue -p queue -X stuff "command"