Câu trả lời:
Đơn giản thực sự - bạn cần tách các lệnh. Ví dụ:
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade
sẽ cập nhật danh sách gói, và sau đó là các gói. Một khả năng khác là điều này (có thể tốt hơn, vì && sẽ chỉ cho phép upgrade
lệnh chạy nếu update
thoát thành công) :
#!/bin/bash
sudo apt-get update && sudo apt-get upgrade
Điều này sẽ chạy các lệnh để cập nhật danh sách các gói và sau đó chính gói đó. Điều này sẽ cần phải được lưu vào một tệp văn bản (ví dụ updatescript
trong thư mục chính). Sau đó, bạn có thể làm cho nó thực thi được bằng cách chạy:
chmod +x ./updatescript
hoặc bằng cách nhấp chuột phải vào tệp và làm cho nó có thể thực thi được trong các thuộc tính của nó:
và chạy nó với cái này trong terminal:
./updatescript
Lưu ý:
Có một tùy chọn ( -y
) có sẵn có thể được sử dụng với upgrade
lệnh để nó không nhắc trước khi nâng cấp các gói. Đó là một ý tưởng tốt để kiểm tra những gì apt-get
đang làm trước khi nâng cấp các gói, vì nó có thể / sẽ làm điều gì đó ngu ngốc hoặc điều gì đó bạn không muốn nó làm. Thông tin thêm về các tùy chọn như thế này có thể được tìm thấy bằng cách chạy man apt-get
.
Điều này cũng có nghĩa là lý tưởng hơn khi sử dụng thiết bị đầu cuối để chạy tập lệnh, vì bạn có thể kiểm tra những gì nó đang cập nhật, và sau đó chạy nó. Nếu bạn muốn có một cách GUI để chạy các bản cập nhật, hãy sử dụng trung tâm phần mềm vì đó là mục đích của nó.
Chỉ cần thêm một vài điểm vào câu trả lời xuất sắc của @Wilf,
bạn có thể chạy các lệnh theo paralell nếu bạn muốn vì bất kỳ lý do gì, ví dụ, một autostart
tập lệnh cho OpenBox có thể trông như thế này:
#!/bin/bash
nitrogen --restore &
tint2 &
tilda
Điều này sẽ thiết lập một hình ảnh nền bằng cách sử dụng nitrogen
, khởi động bảng điều khiển tint2
và khởi động bảng điều khiển thả xuống kiểu Quake3 tilda
, tất cả cùng một lúc. Điều này hữu ích nếu bạn không cần một chương trình để kết thúc trước khi bạn khởi chạy chương trình tiếp theo. Không phải trường hợp apt-get update
và apt-get upgrade
mặc dù!
Lưu ý &
dấu hiệu ở cuối mỗi dòng. Điều này sẽ khiến shell rẽ nhánh quá trình đó vào nền và tiếp tục thực hiện. Lưu ý rằng nó khác với &&
, về cơ bản là một and
dấu hiệu, command_1 && command_2
sẽ thực thi command_1
và nếu nó thoát thành công, chỉ sau đó chạy command_2
, trong khi command_1 & command_2
sẽ bắt đầu lần thứ hai ngay sau lần đầu tiên.
Ngoài ra, bạn chỉ có thể xếp chồng các lệnh để chúng được thực thi ser seri, như vậy:
#!/bin/bash
apt-get update
apt-get upgrade
Điều này sẽ chạy apt-get upgrade
sau khi apt-get update
được hoàn thành , nhưng bất kể kết quả. Vì vậy, ngay cả khi, ví dụ, bản cập nhật thoát khỏi lỗi mạng, bản nâng cấp vẫn sẽ được chạy.
Bạn cũng có thể làm điều này trong một dòng, sử dụng ;
dấu : apt-get update ; apt-get upgrade
. Một lần nữa, giải pháp này không tối ưu cho các lệnh cụ thể này, nhưng nó có thể có ích trong các tình huống khác.
Một điểm cuối cùng nhanh chóng, bạn cũng có thể ngắt các dòng có chứa &&
như sau:
command_1 &&
command_2
Điều này sẽ giống như command_1 && command_2
.