GNU/Linux >> Belajar Linux >  >> Linux

Skrip bash(III)

Ini adalah artikel ketiga dari seri yang berfokus pada skrip Gnu Bash. Pada artikel pertama kami baru saja membuat skrip sederhana dengan perintah, satu demi satu. Kami juga melihat beberapa variabel yang digunakan.
Artikel kedua membahas beberapa struktur kontrol bash. Yang ini akan mencakup pengalihan, pipa, dan substitusi perintah.

Hari-hari yang indah

Pada awalnya ada prinsip:satu alat harus melakukan satu hal dan melakukannya dengan baik. Itu pada pengguna untuk menggabungkan alat-alat itu untuk mencapai hasil yang diinginkan.

Sekarang kami (mengakui:terkadang Anda juga bisa merasa tersesat tanpa GUI) melakukan (hampir) semuanya dengan mouse. Tapi baris perintah masih ada dan terkadang menulis beberapa perintah atau skrip lebih mudah daripada mengklik setiap elemen di layar.

Pengalihan

Kita dapat mengarahkan kembali input atau output dari suatu perintah sebelum dieksekusi. Kita dapat menggunakan redirection ini untuk menyimpan output dari sebuah perintah dalam sebuah file. Atau kita dapat menggunakan pengalihan input untuk membaca beberapa data dari sebuah file.

Misalnya, jika kita ingin menyimpan status saat ini (yaitu ls -l) dari folder dalam file teks untuk membandingkan perubahannya nanti, kita menggunakan > operatornya seperti ini:

ls -l > status.txt

Ini akan mengarahkan output standar ls -l ke file bernama status.txt. Jika status.txt sudah ada, akan ditimpa. Untuk menambahkan output standar ke file yang ada, gunakan >> operator.

Untuk mengarahkan ulang input standar ke sebuah perintah, gunakan operator. Misalnya:

mysql somedb < file.sql

Untuk mengarahkan kesalahan standar ke beberapa file, tambahkan deskriptor file 2 (deskriptor file 1 adalah output standar (stdout), 0 untuk input (stdin)) ke pengalihan:

perintah 2> file

Perhatikan bahwa tidak ada spasi antara nomor deskriptor file dan operator. Jika ada spasi di antara mereka, '2' itu menjadi parameter. Misalnya:

Perintah pertama adalah “ls (berkas) sesuatu ” dan mengarahkan output kesalahan ke status.txt. Pada perintah kedua kita melihat kesalahan dari perintah pertama kita:file bernama sesuatu tidak ditemukan.

Perintah ketiga adalah ls file sesuatu dan 2 (tidak ada) dan mengarahkan output standar ke status.txt. Kesalahan (file tidak ditemukan) tercetak di layar dan pada perintah keempat kita melihat bahwa status.txt dibiarkan kosong karena tidak ada file bernama “2” atau “sesuatu”.

Kami dapat menggabungkan pengalihan, seperti mengirim stdout dan stderr ke file, tetapi urutan pengalihan penting. Misalnya:

Dari manual bash:perintah pertama hanya mengarahkan keluaran standar ke file gabungan.txt, karena kesalahan standar diduplikasi dari keluaran standar sebelum keluaran standar dialihkan ke gabungan.txt

Pada perintah kedua, keluaran standar dialihkan ke file gabungan.txt dan kemudian kesalahan standar dialihkan ke stdout.

Pipa

Dari bash manual:Pipa adalah urutan dari satu atau lebih perintah yang dipisahkan oleh salah satu operator kontrol | atau |& .

Operator pertama menghubungkan output standar dari perintah pertama ke input standar yang kedua. Misalnya, jika saya tidak ingat bahwa saya dapat menggunakan wildcard dalam perintah ls dan ingin membuat daftar setiap skrip shell pada folder saat ini, saya dapat melakukan ls dan filter hasilnya dengan grep :

Orang Perl memiliki moto:«Ada lebih dari satu cara untuk melakukannya ». Saya pribadi berpikir itu harus diterapkan (hampir) di mana-mana.

Operator kedua, menghubungkan kesalahan standar dari perintah pertama ke input standar yang kedua. Misalnya, saya menggunakan perintah tr (yang menerjemahkan karakter) untuk mengejek pesan kesalahan:

Saya juga telah menyetel variabel shell LANG untuk mengubah output dari bahasa Spanyol ke bahasa Inggris.

Pergantian perintah

Dengan substitusi perintah, kita dapat menjalankan perintah di dalam skrip kita dan menggunakan output dari perintah itu. Lebih mudah untuk memahami cara kerjanya dengan sebuah contoh. Perintah seq digunakan untuk menghasilkan urutan angka:

Sebagai contoh, kita dapat menggunakan output ini untuk membuat folder dengan nama berurutan dengan substitusi perintah. Kita dapat menggunakan `command` atau $(perintah) .

Dalam contoh ini kami menetapkan output dari seq 1 5 ke variabel i , dan menggunakannya dalam for loop.

Terus ikuti perkembangannya

Sejauh ini, kita memiliki cukup banyak untuk membuat komputer melakukan (banyak) pekerjaan untuk kita. Anda harus menyelidiki alat kecil yang melakukan satu tugas tetapi melakukannya dengan sangat baik dan mengintegrasikannya melalui skrip atau di baris perintah.

Untuk artikel terakhir dari seri ini, saya akan berkonsentrasi pada dialog program untuk membuat GUI (sebenarnya TUI) untuk menambahkan interaktivitas ke skrip kami.


Linux
  1. Skrip bash(I)

  2. Menggunakan Perintah Nama Dasar Linux di Skrip Bash

  3. perintah ekspor bash

  1. Perintah Bash trap Dijelaskan

  2. Perintah tunggu bash

  3. Bash baca Perintah

  1. Bash:Tulis ke File

  2. Perintah Ekor Linux

  3. Perintah Sentuh Linux