Menjalankan .sh untuk menjalankan banyak perintah

9

Saya ingin tahu bagaimana saya menjalankan beberapa perintah melalui skrip shell.

Sebagai contoh, hanya untuk mencobanya, saya ingin dapat menghubungkan .desktop ke .sh yang akan menjalankan semua kode pembaruan jadi saya tidak perlu mengetiknya. Saya tahu cara menjalankan satu perintah melalui .sh, bukan beberapa.

Ada cara

Brendon
sumber

Jawaban:

10

Sangat sederhana - Anda harus memisahkan perintah. Misalnya ini:

#!/bin/bash
sudo apt-get update
sudo apt-get upgrade

akan memperbarui daftar paket, dan kemudian paket. Kemungkinan lain adalah ini (mungkin lebih baik, karena && hanya akan memungkinkan upgradeperintah dijalankan jika updatekeluar berhasil) :

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade

Ini harus menjalankan perintah untuk memperbarui daftar paket dan kemudian paket itu sendiri. Ini perlu disimpan ke dalam file teks (misalnya updatescriptdi direktori home). Anda kemudian dapat membuatnya dieksekusi dengan menjalankan:

 chmod +x ./updatescript

atau dengan mengklik kanan pada file dan membuatnya dapat dieksekusi di propertinya:

dan jalankan dengan ini di terminal:

 ./updatescript

Catatan:

Ada opsi ( -y) tersedia yang dapat digunakan dengan upgradeperintah sehingga tidak meminta sebelum meningkatkan paket. Sebaiknya periksa apa apt-getyang dilakukan sebelum memutakhirkan paket, karena mungkin / akan melakukan sesuatu yang bodoh atau sesuatu yang tidak Anda inginkan. Info lebih lanjut tentang opsi seperti ini dapat ditemukan dengan menjalankan man apt-get.

Ini juga berarti lebih ideal menggunakan terminal untuk menjalankan skrip, karena Anda dapat memeriksa apa yang diperbarui, dan kemudian menjalankannya. Jika Anda menginginkan cara GUI untuk menjalankan pembaruan, gunakan pusat perangkat lunak seperti apa adanya.

Wilf
sumber
5

Hanya dengan menambahkan beberapa poin ke jawaban yang sangat bagus oleh @Wilf,

Anda dapat menjalankan perintah dalam paralell jika Anda ingin karena alasan apa pun, misalnya, autostartskrip untuk OpenBox mungkin terlihat seperti ini:

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

Ini akan mengatur gambar latar belakang menggunakan nitrogen, memulai panel tint2dan memulai konsol dropdown gaya Quake3 tilda, semua pada saat yang sama. Ini berguna jika Anda tidak membutuhkan program untuk menyelesaikan sebelum Anda meluncurkan yang berikutnya. Bukan kasus untuk apt-get updatedan apt-get upgrademeskipun!

Perhatikan &tanda di akhir setiap baris. Ini akan menyebabkan shell untuk memproses proses tersebut ke latar belakang dan melanjutkan eksekusi. Perhatikan bagaimana ini berbeda dari &&, yang pada dasarnya merupakan andtanda, command_1 && command_2akan dieksekusi command_1dan jika keluar dengan sukses, baru jalankan command_2, sementara command_1 & command_2akan mulai yang kedua tepat setelah yang pertama.


Anda juga bisa menumpuk perintah agar dieksekusi secara serial, seperti:

#!/bin/bash

apt-get update
apt-get upgrade

Ini akan berjalan apt-get upgradesetelah apt-get updateini selesai , tapi terlepas dari hasilnya. Jadi, bahkan jika, misalnya, pembaruan berhenti dengan kesalahan jaringan, pemutakhiran masih akan berjalan.

Anda juga dapat melakukan ini dalam satu baris, menggunakan ;tanda: apt-get update ; apt-get upgrade. Sekali lagi, solusi ini tidak optimal untuk perintah-perintah khusus ini, tetapi mungkin berguna dalam situasi lain.


Satu titik terakhir yang cepat, Anda juga dapat memecah garis yang berisi &&:

command_1 &&
command_2

Ini akan sama dengan command_1 && command_2.

kraxor
sumber