GNU/Linux >> Belajar Linux >  >> Linux

Perintah yang digabungkan dengan operator kontrol di Bash

Perintah gabungan sederhana—seperti merangkai beberapa perintah secara berurutan pada baris perintah—sering digunakan. Perintah tersebut dipisahkan oleh titik koma, yang menentukan akhir dari sebuah perintah. Untuk membuat serangkaian perintah shell sederhana pada satu baris, cukup pisahkan setiap perintah menggunakan titik koma, seperti ini:

command1 ; command2 ; command3 ; command4 ; 

Anda tidak perlu menambahkan titik koma terakhir karena menekan tombol Enter menyiratkan akhir dari perintah terakhir, tetapi Anda boleh menambahkannya untuk konsistensi.

Terminal Linux

  • 7 emulator terminal teratas untuk Linux
  • 10 alat baris perintah untuk analisis data di Linux
  • Unduh Sekarang:lembar contekan SSH
  • Lembar contekan perintah Linux tingkat lanjut
  • Tutorial baris perintah Linux

Semua perintah akan berjalan tanpa masalah—selama tidak terjadi kesalahan. Tetapi apa yang terjadi jika terjadi kesalahan? Kami dapat mengantisipasi dan membiarkan kesalahan menggunakan && dan || operator kontrol yang ada di Bash. Kedua operator kontrol ini menyediakan beberapa kontrol aliran dan memungkinkan kita untuk mengubah urutan eksekusi kode. Titik koma dan baris baru karakter juga dianggap sebagai operator kontrol Bash.

&& operator hanya mengatakan "jika command1 berhasil, maka jalankan command2." Jika command1 gagal karena alasan apa pun, command2 tidak akan berjalan. Sintaks itu terlihat seperti:

command1 && command2

Ini berfungsi karena setiap perintah mengembalikan kode ke shell yang menunjukkan apakah itu berhasil diselesaikan atau gagal selama eksekusi. Dengan konvensi, kode kembali (RC) dari 0 (nol) menunjukkan keberhasilan dan setiap angka positif menunjukkan beberapa jenis kegagalan. Beberapa alat sysadmin hanya mengembalikan 1 untuk menunjukkan kegagalan apa pun, tetapi banyak yang menggunakan kode numerik positif lainnya untuk menunjukkan jenis kegagalan.

$? . dari shell Bash variabel dapat diperiksa dengan sangat mudah oleh skrip, dengan perintah berikutnya dalam daftar perintah, atau bahkan langsung oleh sysadmin. Mari kita lihat RC. Kita dapat menjalankan perintah sederhana dan segera memeriksa RC, yang akan selalu berkaitan dengan perintah terakhir yang dijalankan.

[student@studentvm1 ~]$ ll ; echo "RC = $?"
total 284
-rw-rw-r--  1 student student   130 Sep 15 16:21 ascii-program.sh
drwxrwxr-x  2 student student  4096 Nov 10 11:09 bin
<snip>
drwxr-xr-x. 2 student student  4096 Aug 18 10:21 Videos
RC = 0
[student@studentvm1 ~]$

RC ini adalah 0, yang berarti perintah berhasil diselesaikan. Sekarang coba perintah yang sama pada direktori di mana kita tidak memiliki izin.

[student@studentvm1 ~]$ ll /root ; echo "RC = $?"
ls: cannot open directory '/root': Permission denied
RC = 2
[student@studentvm1 ~]$

Arti RC ini dapat ditemukan di ls halaman manual perintah.

Mari kita coba && operator kontrol seperti yang mungkin digunakan dalam program baris perintah. Kita akan mulai dengan sesuatu yang sederhana:Buat direktori baru dan, jika berhasil, buat file baru di dalamnya.

Kami membutuhkan direktori tempat kami dapat membuat direktori lain. Pertama, buat direktori sementara di direktori home Anda di mana Anda dapat melakukan beberapa pengujian.

[student@studentvm1 ~]$ cd ; mkdir testdir

Buat direktori baru di ~/testdir , yang seharusnya kosong karena Anda baru saja membuatnya, lalu buat file baru yang kosong di direktori baru tersebut. Perintah berikut akan melakukan tugas-tugas tersebut.

[student@studentvm1 ~]$ mkdir ~/testdir/testdir2 && touch ~/testdir/testdir2/testfile1 
[student@studentvm1 ~]$ ll ~/testdir/testdir2/
total 0
-rw-rw-r-- 1 student student 0 Nov 12 14:13 testfile1
[student@studentvm1 ~]$

Kami tahu semuanya bekerja sebagaimana mestinya karena testdir direktori dapat diakses dan ditulis. Ubah izin pada testdir sehingga tidak lagi dapat diakses oleh pengguna siswa sebagai berikut:

[student@studentvm1 ~]$ chmod 076 testdir ; ll | grep testdir
d---rwxrw-. 3 student student  4096 Nov 12 14:13 testdir
[student@studentvm1 ~]$

Menggunakan grep perintah setelah daftar panjang (ll ) menunjukkan cantuman untuk testdir . Anda dapat melihat bahwa pengguna siswa tidak lagi memiliki akses ke testdir direktori. Sekarang mari kita jalankan perintah yang hampir sama seperti sebelumnya, tetapi ubah untuk membuat nama direktori yang berbeda di dalam testdir .

[student@studentvm1 ~]$ mkdir ~/testdir/testdir3 && touch ~/testdir/testdir3/testfile1 
mkdir: cannot create directory ‘/home/student/testdir/testdir3’: Permission denied
[student@studentvm1 ~]$

Meskipun kami menerima pesan kesalahan, menggunakan && operator kontrol mencegah sentuh perintah agar tidak dijalankan karena ada kesalahan dalam membuat testdir3 . Jenis kontrol aliran logis baris perintah ini dapat mencegah kesalahan dari peracikan dan membuat kekacauan nyata. Tapi mari kita membuatnya sedikit lebih rumit.

|| operator kontrol memungkinkan kita untuk menambahkan perintah lain yang dijalankan ketika pernyataan program awal mengembalikan kode yang lebih besar dari nol.

[student@studentvm1 ~]$ mkdir ~/testdir/testdir3 && touch ~/testdir/testdir3/testfile1 || echo "An error occurred while creating the directory."
mkdir: cannot create directory ‘/home/student/testdir/testdir3’: Permission denied
An error occurred while creating the directory.
[student@studentvm1 ~]$

Sintaks perintah gabungan kami menggunakan kontrol aliran mengambil bentuk umum ini ketika kami menggunakan && dan || operator kontrol:

preceding commands ; command1 && command2 || command3 ; following commands

Perintah gabungan menggunakan operator kontrol dapat didahului dan diikuti oleh perintah lain yang dapat dikaitkan dengan yang ada di bagian kontrol aliran tetapi tidak terpengaruh oleh kontrol aliran. Semua perintah tersebut akan dijalankan tanpa memperhatikan apa pun yang terjadi di dalam perintah gabungan kontrol aliran.

Operator kontrol aliran ini dapat membuat pekerjaan di baris perintah menjadi lebih efisien dengan menangani keputusan dan memberi tahu kami saat terjadi masalah. Saya menggunakannya langsung di baris perintah dan juga di skrip.

Anda dapat membersihkan sebagai pengguna root untuk menghapus direktori dan isinya.

[root@studentvm1 ~]# rm -rf /home/student/testdir

Bagaimana Anda menggunakan operator kontrol Bash? Beri tahu kami di bagian komentar.


Linux
  1. Tonton perintah dan tugas dengan perintah jam tangan Linux

  2. Perbedaan Antara Operator Bash [[ Vs [ Vs ( Vs ((?

  3. Skrip Bash Dengan `set -e` Tidak Berhenti Pada Perintah `… &&...`?

  1. Perintah Rm Dalam Skrip Bash Tidak Bekerja Dengan Variabel?

  2. Perintah Linux Paling Sederhana Dengan 10 Contoh

  3. Cara membuat lonjakan CPU dengan perintah bash

  1. 15 Perintah Bawaan Bash Shell yang Berguna (Dengan Contoh)

  2. 6 Operator Rantai Baris Perintah Bash Shell di Linux

  3. '&&' vs. '&' dengan perintah 'test' di Bash