Birbiri ardına terminale bir istekle birkaç dosya nasıl uygulanır (dosya kullanmadan)?


22

(1) son satırla ayrılmış komutları içeren bir dosya hazırlayabilir, (2) çalıştırılabilir yapabilir, (3) bir dosya sistemi yöneticisinden veya terminalden çalıştırabilir.

Fakat bu, tekrar edilemez ve her zaman başka komutlar dizisi için saçmadır.

Bu komutları terminale tek bir istekle yazabilir miyim?

Terminal için son satır karakterini bilmiyorum - Ctrl, Shift veya Enter tuşuyla Alt çalışmıyor.  


1
Bir komut satırında, komutlar noktalı virgülle ayrılabilir.
John1024

Yanıtlar:


27

Komutları &&veya ile ayırabilirsiniz ;.

  • && yalnızca önceki komutu 0 durumundan çıkmışsa (başarılıysa) bir sonraki komutu çalıştırır:

    command1 && command2 && command3
    
  • ; önceki komut sıfır olmayan bir durumdan çıksa bile her komutu çalıştırır:

    command1; command2; command3
    

Bu ayırıcıları istediğiniz gibi birleştirebilirsiniz.


6
command1 && command2komut2 için yalnızca komut1 başarılı olduğunda çalıştırılır.
souravc

Güzel tartışmalar, alakalı / benzer yayınlar: askubuntu.com/questions/334994/… stackoverflow.com/questions/13077241/…
gevang

@souravc: Bir düzenleme yaptım, teşekkürler, bir şey öğrendim.
MrVaykadji

eğer birleştirerek sudo apt upgradeve sudo systemctl reboot, iki kez 'sudo' eklemeniz gerekir, yoksa ikinci komutu için sudo 'hatırlar' olacak?
Koen

9

Her komutu tek bir istekte kendi satırına yazmakla ilgileniyorsanız aşağıdaki yöntemi kullanabilirsiniz:

  • İsteğinizi (ilk satır) ile başlatın if :; then(bu: doğruysa, öyleyse yapın) ve Enter; isteminiz şimdi değişecek >ve hiçbir şey yürütülmeyecek.

  • Her birini takip eden komutlarınızı yazın Enter

  • İsteğinizi fi(yukarıdaki ifkoşulun sonunda) ile bitirin ve 'a basın Enter. Şimdi tüm komutlarınız verilen sıraya göre yürütülecektir.

Örnek:

radu@Radu: ~ $ if :; then
> echo 'something'
> echo 'something else'
> echo 'List current directory contents:'
> ls
> echo 'Change current directory with root directory:'
> cd
> #finish
> fi
something
something else
List current directory contents:
Backups            Desktop           forma3d  Public      Untitled txt.txt~
bin                Documente         Music    Templates   Videos
configuration.php  examples.desktop  passwd~  tmp~
Downloads          file~             Poze     Ubuntu One
Change current directory with root directory:
radu@Radu: / $

if true; thenistenirse okunması daha net olabilir. ilk bakışta :karıştırılabilir ;.
kiri

4

İlk {önce kendi satırına bir tane koyun .
Ardından, komutlarınızı ekleyin.
Sonra }yeni bir satıra koyun ve tuşuna basın Enter. Komutların yerine getirilecek.

Örnek:

{
echo list
echo of
echo commands
echo to run at once
}

bunlar basılacaktır (hepsi bir kerede, aralarında istekte bulunulmadan):

list
of
commands
to run at once

Bir yan not { .. }olarak, Bash komut gruplama sözdizimini 'dir. Bu birlikte çoğu zaman yararlı &&ya da ||(sırasıyla 'ya da' 've' ve benzeri)


if :; thenBahsedilenle aynı mı ? Yoksa biraz farklı mı?
MrVaykadji

1
@ MrVaykadji Aynı sonuç, ancak farklı bir yöntem. if :null komutunda bir test gerçekleştirir ve bu, her zaman true değerini döndürür. { .. }sadece komutları birlikte gruplandırın. Şahsen { .. }hatırlaması daha kolay.
kiri
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.