Birden çok komutu yürütmek için bir .sh çalıştırma


9

Kabuk betiği üzerinden birden fazla komut çalıştırmayı nasıl yapacağımı merak ettim.

Örneğin, sadece denemek için, .desktop'u tüm güncelleme kodlarını çalıştıracak bir .sh dosyasına bağlamak istiyorum, böylece yazmak zorunda kalmam. Birden fazla değil bir .sh aracılığıyla tek bir komut yürütmek biliyorum.

Herhangi bir yolu var mı?

Yanıtlar:


10

Gerçekten basit - komutları ayırmanız gerekir. Örneğin bu:

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

paket listelerini ve ardından paketleri güncelleştirir. Başka bir olasılık şudur (&& sadece upgradekomutun updatebaşarılı bir şekilde çıkması durumunda çalışmasına izin vereceğinden, muhtemelen daha iyidir ) :

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

Bu, paket listesini ve ardından paketin kendisini güncelleştirme komutlarını çalıştırmalıdır. Bunun bir metin dosyasına (ör updatescript. Giriş dizininde) kaydedilmesi gerekir . Daha sonra çalıştırarak çalıştırılabilir yapabilirsiniz:

 chmod +x ./updatescript

veya dosyayı sağ tıklayıp özelliklerinde yürütülebilir hale getirerek:

ve bunu terminalde çalıştırın:

 ./updatescript

Not (lar):

Komutla kullanılabilecek bir seçenek ( -y) vardır, upgradeböylece paketleri yükseltmeden önce istemez. apt-getPaketleri yükseltmeden önce ne yaptığını kontrol etmek iyi bir fikirdir , çünkü aptalca ya da yapmasını istemediğiniz bir şey yapabilir / yapacak. Bunun gibi seçenekler hakkında daha fazla bilgi çalışarak bulunabilir man apt-get.

Bu ayrıca, neyi güncellediğini kontrol edebildiğiniz ve daha sonra çalıştırabileceğiniz için, komut dosyasını çalıştırmak için terminali kullanmanın daha ideal olduğu anlamına gelir. Güncelleştirmeleri çalıştırmak için bir GUI yolu istiyorsanız, yazılım merkezini bunun için olduğu gibi kullanın.


5

@Wilf'in mükemmel cevabına birkaç puan eklemek için,

herhangi bir nedenle isterseniz paralell'de komutları çalıştırabilirsiniz, örneğin, autostartOpenBox için bir komut dosyası şöyle görünebilir:

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

Bu , aynı anda bir arka plan görüntüsü kullanarak nitrogenpaneli tint2başlatır ve Quake3 tarzı açılır konsolu başlatır tilda. Bir sonrakini başlatmadan önce bitirmek için bir programa ihtiyacınız yoksa bu yararlıdır. Durum apt-get updateve durum böyle değil apt-get upgrade!

&Her satırın sonundaki işarete dikkat edin . Bu, kabuğun bu işlemi arka planda işlemesine ve yürütülmesine devam etmesine neden olur. Ondan ne gibi farklar olduğunu Not &&temelde bir olan and, işaret command_1 && command_2çalıştırır command_1ve başarı ile çıkar eğer, ancak o zaman çalıştırmak command_2ise, command_1 & command_2birinci sonra ikinci hakkını başlayacaktır.


Ayrıca, komutları seri şekilde çalıştırmak için aşağıdaki gibi yığınlayabilirsiniz:

#!/bin/bash

apt-get update
apt-get upgrade

Bu çalışacaktır apt-get upgradesonra apt-get updateedilir bitmiş sonucu ne olursa olsun, ama. Dolayısıyla, örneğin bir ağ hatasıyla güncelleme sonlandırılsa bile, yükseltme yine de çalıştırılacaktır.

Ayrıca kullanarak, tek satırda yapabilirsiniz ;işareti: apt-get update ; apt-get upgrade. Yine, bu çözüm bu belirli komutlar için en uygun değildir , ancak diğer durumlarda kullanışlı olabilir.


Hızlı bir son nokta, aşağıdakileri içeren satırları da kesebilirsiniz &&:

command_1 &&
command_2

Bu ile aynı olacaktır command_1 && command_2.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.