Cả hai giải pháp của Brad và Mankoff đều là những gợi ý tốt. Một cách khác tương tự như sự kết hợp của cả hai sẽ là sử dụng GNU Screen để thực hiện hàng đợi của bạn. Điều này có lợi thế là có thể chạy trong nền, bạn có thể kiểm tra nó bất cứ khi nào và xếp hàng các lệnh mới chỉ dán chúng vào bộ đệm để được thực thi sau khi thoát lệnh trước đó.
Đầu tiên, chạy:
$ screen -d -m -S queue
(tình cờ, bây giờ là thời điểm tốt để chơi với một số tệp screenrc tuyệt vời )
Điều đó sẽ sinh ra một phiên màn hình nền cho hàng đợi được đặt tên của bạn.
Bây giờ, xếp hàng nhiều lệnh như bạn muốn:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
Tôi đang thực hiện nhiều lệnh ở trên chỉ để thử nghiệm. Trường hợp sử dụng của bạn có thể sẽ trông giống như:
screen -S queue -X stuff "echo first^M"
screen -S queue -X stuff "echo second^M"
Lưu ý rằng "^ M" trong dòng của tôi ở trên là cách để có được một dòng mới được nhúng sẽ được giải thích sau khi màn hình nhét nó vào vỏ bash hiện tại của bạn. Sử dụng "CTL-V" để có được chuỗi đó.
Sẽ khá dễ dàng để tạo một số tập lệnh shell đơn giản để tự động hóa lệnh đó và xếp hàng các lệnh. Sau đó, bất cứ khi nào bạn muốn kiểm tra trạng thái của hàng đợi nền, bạn sẽ đính kèm lại qua:
screen -S queue -r
Về mặt kỹ thuật, bạn thậm chí không cần đặt tên cho phiên màn hình của mình và nó sẽ hoạt động tốt, nhưng một khi bạn bị cuốn hút vào nó, bạn sẽ muốn để một cái chạy mọi lúc. ;-)
Tất nhiên, nếu bạn làm điều đó, một cách tốt khác để làm điều đó là đặt tên cho một trong các cửa sổ hiện tại là "xếp hàng" và sử dụng:
screen -S queue -p queue -X stuff "command"