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.