Bagaimana cara menjalankan beberapa perintah satu sama lain dengan satu permintaan ke terminal (tanpa menggunakan file)?


22

Saya dapat (1) menyiapkan file dengan perintah yang diketik yang dipisahkan oleh end-line, (2) membuatnya dapat dieksekusi, (3) menjalankannya dari manajer sistem file atau terminal.

Tapi ini konyol untuk set perintah yang tidak dapat diulang dan setiap waktu.

Bisakah saya mengetik perintah-perintah itu ke terminal dalam satu permintaan saja?

Saya tidak tahu karakter garis akhir untuk terminal - Ctrl, Shift atau Alt dengan Enter tidak berfungsi.  


1
Pada baris perintah, perintah dapat dipisahkan dengan titik koma.
John1024

Jawaban:


27

Anda dapat memisahkan perintah dengan &&atau ;.

  • && hanya menjalankan perintah berikutnya jika yang sebelumnya keluar dengan status 0 (berhasil):

    command1 && command2 && command3
    
  • ; menjalankan setiap perintah, bahkan jika yang sebelumnya keluar dengan status bukan nol:

    command1; command2; command3
    

Anda dapat menggabungkan pemisah ini sesuai keinginan.


6
untuk command1 && command2command2 hanya akan dieksekusi jika command1 berhasil.
souravc

Diskusi yang menyenangkan, posting yang relevan / serupa: askubuntu.com/questions/334994/... stackoverflow.com/questions/13077241/…
gevang

@souravc: Saya mengedit, terima kasih, saya belajar sesuatu.
MrVaykadji

jika menggabungkan sudo apt upgradedan sudo systemctl reboot, apakah Anda perlu menambahkan 'sudo' dua kali, atau akankah 'mengingat' sudo untuk perintah kedua?
Koen

9

Jika Anda tertarik untuk mengetik setiap perintah pada barisnya sendiri dalam satu permintaan tunggal, Anda dapat menggunakan metode berikut:

  • Mulai permintaan Anda (baris pertama) dengan if :; then(artinya: jika benar, maka lakukan) dan tekan Enter; prompt Anda akan berubah sekarang >dan tidak ada yang akan dieksekusi.

  • Ketik perintah Anda, masing-masing diikuti oleh Enter

  • Selesaikan permintaan Anda dengan fi(akhir dari ifkondisi di atas ) dan tekan Enter. Sekarang semua perintah Anda akan dieksekusi dalam urutan yang diberikan.

Contoh:

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; thenmungkin lebih jelas untuk dibaca jika diinginkan. :mungkin bingung dengan ;pandangan sekilas.
kiri

4

Pertama, letakkan {di barisnya sendiri.
Kemudian, masukkan perintah Anda.
Kemudian, letakkan }di baris baru dan tekan Enter. Perintah Anda akan dieksekusi.

Contoh:

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

yang akan mencetak (sekaligus, tanpa prompt di antaranya):

list
of
commands
to run at once

Sebagai catatan, { .. }adalah sintaks pengelompokan perintah Bash. Ini sering berguna dalam hubungannya dengan &&atau ||(masing-masing 'dan', dan 'atau')


Apakah itu sama dengan yang if :; thensudah disebutkan? Atau sedikit berbeda?
MrVaykadji

1
@MrVaykadji Ini hasil yang sama, tetapi metode yang berbeda. if :menjalankan tes pada perintah nol, yang akan selalu mengembalikan true. { .. }hanya kelompokkan perintah bersama. Saya pribadi { .. }lebih mudah diingat.
kiri
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.