Memang agak aneh menulis "pembukaan" di bagian terakhir. Namun, awal artikel pertama (Operasi Numerik) sebenarnya merupakan pembukaan kecil. Disebutkan bahwa keseluruhan seri memerlukan dasar pemrograman Shell tertentu, sehingga pembaca yang tidak memiliki dasar pemrograman Shell dapat melakukannya Membaca seri ini, saya sampai pada akhir untuk menulis ulang bab pembuka ini. Bab pembuka terutama memperkenalkan apa itu Shell, lingkungan operasi Shell, sintaksis dasar Shell, dan keterampilan debugging.
Pertama, mari kita lihat posisi Shell di seluruh sistem operasi dari gambar berikut. Lingkaran luar dari gambar tersebut menggambarkan keseluruhan sistem operasi (seperti
Debian/Ubuntu/Slackwaredll.), lingkaran dalam menggambarkan inti sistem operasi (mis.
Kernel Linux),Dan
KerangDan
GUIJuga berfungsi sebagai antarmuka antara pengguna dan sistem operasi.
GUIMenyediakan antarmuka pengguna grafis yang sangat mudah digunakan dan dipelajari;
KerangIni menyediakan antarmuka baris perintah kepada pengguna, menerima input keyboard pengguna, menganalisis dan mengeksekusi perintah dalam string input, dan kemudian mengembalikan hasil eksekusi kepada pengguna. Ini mungkin lebih rumit untuk digunakan, tetapi karena memerlukan lebih sedikit sumber daya , Selain itu, setelah mahir dalam pengoperasian, efisiensi kerja dapat ditingkatkan, dan memiliki fungsi pemrosesan batch, sehingga sangat populer di beberapa aplikasi.
KerangSebagai antarmuka pengguna, ini sebenarnya adalah juru bahasa (Interpreter, seperti di
linuxBerikut ini lebih umum digunakan
Pesta), kita dapat melihat arusnya
Kerang:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 akar akar 702160 13-05-2008 02:33 /bin/bash
Interpreter tidak hanya dapat menginterpretasikan perintah sederhana, tetapi juga menginterpretasikan file dengan struktur sintaksis tertentu, yang disebut skrip. Cara menafsirkan perintah dan file skrip ini secara spesifik tidak dianalisis secara mendalam di sini. Silakan lihat artikel lain yang saya tulis pada tahun 2008: "Momen eksekusi program pada baris perintah Linux."
Karena program dapat menafsirkan file dengan struktur tata bahasa tertentu, kita dapat mengikuti tata bahasa tertentu untuk menulisnya. Tata bahasa apa yang dimilikinya, cara menjalankannya, dan cara debugnya? Di bawah ini kami menggunakan
PestaMari kita bahas aspek-aspek ini dengan sebuah contoh.
Untuk memfasilitasi latihan berikut, pertama-tama kita menyiapkan lingkungan operasi dasar: Dalam sistem operasi Linux, ada lingkungan operasi yang sedang berjalan
PestaBaris perintah menunggu kita mengetikkan perintah. Baris perintah ini bisa berada di bawah antarmuka grafis.
Terminal(Misalnya
UbuntuSangat kuat
Terminator), atau dapat berupa antarmuka karakter
Menghibur(dapat digunakan
CTRL+ALT+F1~6beralih) jika Anda menemukan arus
KerangTIDAK
Pesta, silakan ganti dengan:
$ chsh $USER -s /bin/bash$ di $USER
Atau cukup ketik Bash:
$ bash$ echo $Shell # Konfirmasi /bin/bash
Jika Anda belum menginstal sistem operasi Linux, Anda juga dapat mempertimbangkan untuk menggunakan layanan eksperimen virtual Linux yang disediakan oleh beberapa komunitas publik, yang umumnya menyediakan layanan percobaan jarak jauh.
Kerang, kamu bisa lulus
Telnetatau adalah
SstMasuk ke klien untuk berlatih.
Dengan lingkungan operasi dasar, bagaimana cara menjalankan perintah yang diketik oleh pengguna atau file skrip yang ditulis oleh pengguna?
?
Misalkan kita telah menulis skrip Shell bernama
tes.sh.
Cara pertama adalah dengan memastikan bahwa perintah yang kita jalankan memiliki izin yang dapat dieksekusi, lalu ketikkan langsung perintah untuk menjalankannya:
$ chmod +x /path/to/test.sh$ /path/to/test.sh
Cara kedua adalah dengan langsung menulis script sebagai
PestaParameter penerjemah diteruskan dalam:
$ pesta /jalur/ke/test.sh
atau
$ sumber /jalur/ke/test.sh
atau
$ ./path/ke/test.sh
Yang pertama
Halo, Duniaprogram.
Mari kita perkenalkan struktur dasar program Shell
Halo, DuniaMisalnya:
#!/bin/bash -v# test.shecho Halo Dunia
Simpan kode di atas sebagai
tes.sh, lalu jalankan dengan dua cara berbeda di atas, Anda dapat melihat efek berikut.
Metode satu:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Halo, Dunia Halo, Dunia
Metode dua:
$ bash test.shHalo, Dunia$ sumber test.shHalo, Dunia$ tes.shHalo, Dunia
Kami menemukan bahwa ada perbedaan antara kedua hasil yang dijalankan. Di sini kita perlu memperhatikan
tes.shIsi filenya hanya ada dua baris, baris kedua dicetak
Halo, Dunia, kedua metode mencapai tujuannya, tetapi metode pertama mencetak lebih banyak konten dari file skrip itu sendiri. Mengapa?
Alasannya ada pada baris pertama file tersebut. Saat kita menjalankan file script secara langsung, baris ini memberitahukan sistem operasi yang akan digunakan
#!Penerjemah dan parameter terkait setelah simbol digunakan untuk menafsirkan file skrip. Dengan menganalisis baris pertama, kami menemukan bahwa penerjemah dan parameter terkait adalah
/bin/bash -v,Dan
-vKebetulan untuk mencetak kode sumber program, tetapi kami tidak memberikannya saat menggunakan metode kedua.
PestaBerikan argumen tambahan apa pun, sehingga ia hanya menafsirkan file skrip itu sendiri.
Untuk rincian sintaks lainnya, silakan merujuk langsung ke "Catatan Studi Pemrograman Shell", yang merupakan Lampiran 1 di bagian belakang buku ini.
Bahasa Shell adalah bahasa yang ditafsirkan, dan proses pemrogramannya agak berbeda dengan bahasa yang dikompilasi. Proses dasarnya adalah sebagai berikut:
algoritma desain
Gunakan Shell untuk menulis skrip guna mengimplementasikan algoritma
Jalankan skrip secara langsung
Dapat dilihat bahwa ia tidak memiliki proses kompilasi dan penautan yang merepotkan seperti bahasa yang dikompilasi, tetapi justru karena itu, sangat tidak nyaman untuk melakukan debug ketika terjadi kesalahan, karena kesalahan sintaksis dan kesalahan logika muncul saat runtime. Di bawah ini kami memperkenalkan secara singkat metode debugging.
Anda dapat langsung merujuk: Teknologi debugging skrip shell atau metode debugging BASH.
Sebagai bahasa yang ditafsirkan, bahasa Shell dapat menggunakan sejumlah besar alat yang ada, termasuk perhitungan numerik, pemrosesan simbolik, operasi file, operasi jaringan, dll. Oleh karena itu, proses penulisan mungkin lebih efisien, tetapi karena diinterpretasikan maka diperlukan untuk dieksekusi selama eksekusi. Selama proses, pemanggilan program eksternal secara terus-menerus dari disk dan peralihan antar proses mungkin memiliki kelemahan dalam hal efisiensi pengoperasian, jadi kita harus memilih untuk menggunakan Shell atau bahasa lain untuk pemrograman sesuai dengan aplikasinya.
Saat program dijalankan pada baris perintah Linux
Catatan Studi Pemrograman Linux Shell
Teknologi debugging skrip shell
Metode debugging BASH