Tôi cần mở nhiều tab thiết bị đầu cuối, đặt tiêu đề cho chúng, đi đến một thư mục và làm cho mỗi tab chạy một lệnh.
Tôi chưa quen với Linux và shell script, sau khi tìm kiếm trực tuyến và kiểm tra một số giải pháp, tôi đã tạo tập lệnh này ( EDITED dựa trên các câu trả lời bên dưới):
#!/bin/bash
cd /media/Extra/Project
tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)
cmds[1]="'rails s'"
titles[1]="Server"
cmds[2]="'rails c'"
titles[2]="Console"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
Nó mở các tab, đặt tên cho chúng, nhưng không thực hiện được các lệnh tạo ra lỗi này:
Đã xảy ra lỗi khi tạo quy trình con cho thiết bị đầu cuối này
Một thiếu sót khác là nếu tôi tạm dừng lệnh đang chạy thì nó sẽ đóng tab mà tôi không muốn. Tôi cần có khả năng dừng lệnh và chạy lại nó trong cùng một tab.
Điều gì là sai với kịch bản? Có cách nào khác đơn giản hơn để làm điều đó?
Lưu ý: Nếu tôi loại bỏ phần (-e "\" bash -c $ {cmds [i]}; bash \ "") khỏi lệnh, nó sẽ mở các tab trong thư mục đã cho và đặt tên cho chúng, không có lỗi.
-Chỉnh sửa-1:
Sau khi áp dụng câu trả lời @Tuknutx bên dưới và chỉnh sửa tập lệnh, lỗi không xuất hiện nữa, nhưng nó cho tôi bash: rails c: command not found
và rails s
tạo một ứng dụng rails mới thay vì khởi động máy chủ rails, tôi đang sử dụng .rmvrc để chọn một gemet khi thư mục này được truy cập .
cmds[1]="'ping 192.168.9.9'"
nó sẽ cho tôi cùng một lỗi nhưng tôi đã giải quyết nó bằng cách xóa dấu ngoặc đơn. Vì vậy, nếu tôi viết cmds[1]="ping 192.168.9.9"
Nó hoạt động.
tab=" --tab-with-profile=Default"
??