Dari mana datangnya arahan?
Perintah dalam bash berasal dari salah satu kategori berikut:
Bash sendiri (lihat builtin)
Bash hadir dengan sekumpulan perintahnya sendiri untuk membolehkan akses ke ciri terbina dalamnya seperti menyatakan tatasusunan, baris bacaan dari fail, dan ciri lain yang sudah ada untuk bash. Kami memanggil perintah dari kategori ini, perintah bash builtin, atau builtin secara ringkas.
Dapat dilaksanakan di persekitaran anda (lihat arahan luaran)
Secara lalai, bash akan mewarisi pemboleh ubah tertentu secara lalai. Ini diperhatikan dalam kes pemboleh ubah PATH termasuk lokasi untuk eksekusi yang dirujuk sebagai perintah luaran dalam bash. Iaitu, jika kerinting perintah ada di jalan anda, ia mungkin dilaksanakan dari dalam skrip bash dengan cara yang sama seperti dalam mod interaktif. Kami memanggil perintah kategori ini, perintah luaran, atau perintah pendek.
Fungsi yang ditentukan pengguna (lihat fungsi)
Sebelum melaksanakan perintah luaran dan builtin, bash memeriksa apakah fungsi ditentukan. Sekiranya fungsinya dijalankan sebagai perintah. Sekiranya tidak, ia akan meneruskan urutan keutamaan untuk perintah. Untuk melaksanakan fungsi yang ditentukan di luar skrip, mereka mesti dinyatakan dengan atribut -x; jika tidak, mereka mungkin disertakan dengan menggunakan. Perintah. Kami memanggil perintah dari kategori ini fungsi atau fungsi yang ditentukan pengguna.
Apa itu perintah
Perintah adalah sebarang perkataan yang harus diperlakukan sebagai satu titik masuk program dalam lingkungan shell. Sekiranya perintah itu dilaksanakan, perintah itu sendiri dan argumen pilihan diteruskan sebagai parameter kedudukan, $ {0}, $ {1}, $ {2}, ... Parameter kedudukan nol ($ {0}) menetapkan perintah itu sendiri dan tidak berubah mengikut konteks. Iaitu, tidak seperti parameter kedudukan dalam fungsi, $ {1}, $ {2}, ... yang mungkin berubah bergantung pada konteksnya, $ {0} tidak berubah antara panggilan fungsi.
Perintah dilampirkan bergantung pada lokasi pengisytiharan dan atribut yang ditetapkan sebagai global, built-in to bash, atau local untuk program bash anda.
Berikut adalah senarai jenis arahan yang perlu diketahui.
Perintah Builtin
Ini adalah warganegara kelas pertama dari bash semesta, termasuk watak-watak seperti '.' ':' '[' ']]' Dan kata-kata terpelihara seperti menyatakan dalam bash. Anda mengandalkan perintah-perintah ini, yang terdapat dalam daftar perintah bash builtin, yang tersedia untuk digunakan dalam skrip bash anda.
Bergantung pada sebutan dan nombor versi jurubahasa bash anda, beberapa arahan mungkin tidak tersedia.
Perintah luaran
Perintah luaran boleh dilaksanakan di luar skrip bash seperti curl. Tidak seperti fungsi, perintah luaran tidak disimpan sebagai pemboleh ubah.
Semakin rendah keutamaan jenis perintah, semakin lambat perintah itu dapat ditafsirkan. Perintah luaran mempunyai urutan keutamaan terendah dalam bash. Iaitu sebelum menjalankan perintah luaran, interpreter bash, akan mencari fungsi, kemudian builtin, dan akhirnya cuba melihat apakah perintah itu ada secara luaran. Sekiranya tidak, anda akan melihat ralat berikut.
bash: perintah tidak diketahui:arahantidak ditemuiDalam skrip bash, fungsi dapat mengatasi tingkah laku perintah luaran jika berkongsi nama yang sama seperti yang pernah kita lihat sebelumnya dalam contoh curl bash. Contoh perintah luaran khusus menggunakan fungsi berikut.
kerinting() {arahan $ {FUNCNAME}...
}
Ini berfungsi kerana fungsi mempunyai keutamaan yang lebih tinggi daripada perintah luaran dan bahkan bash builtin. Batasannya adalah watak yang dibenarkan dalam nama fungsi.
Perhatikan bahawa contoh di atas dapat dicapai dengan menggunakan alias seperti berikut.
alias kerinting= '{
keriting ...
}
'
Dalam kasus alias, jenis perintah mungkin berbeda bergantung pada konteks pelaksanaannya, sedangkan dalam hal perintah luaran khusus menggunakan metode fungsi, titik masuk selalu berfungsi.
Fungsi
Fungsi memerintah dalam bash. Sebelum melihat builtin dan perintah luaran, bash memeriksa apakah fungsi yang ditentukan oleh nama fungsi calon, perkataan pertama muncul pada baris atau setelah; watak yang menunjukkan akhir baris arahan. Satu-satunya pengecualian adalah pemboleh ubah bash yang ditulis dalam huruf besar seperti $ {FUNCNAME}.
alias() { FUNGSI= asdf;membuang $ {@ ,,};}alias kerinting='UJIAN CURL ALIAS' #?
Perintah mudah
Perintah mudah didefinisikan di halaman man bash sebagai kata yang diikuti oleh argumen pilihan. Dalam konteksnya, perintah mudah mungkin merupakan perintah internal, fungsi luaran, atau fungsi.
Cara melaksanakan perintah dari dalam skrip bash
Setelah mengetahui jenis perintah yang tersedia, kami dapat memperluas cara menggunakannya dalam skrip anda. Mula-mula, kita perlu mengetahui bagaimana keutamaan perintah berfungsi dalam bash.
Berikut adalah beberapa cara untuk mengawal keutamaan dalam skrip bash.
Biarkan bash memutuskan
nama_perintahSebahagian besarnya, terutama pada awalnya, kami membiarkan bash memutuskan arahan mana yang akan digunakan. Namun, ada kes apabila niat anda mungkin tidak dapat ditafsirkan dengan tepat oleh bash. Begitulah keadaannya apabila nama fungsi dan perintah luaran atau builtin bertindih.
Jalankan arahan luaran
arahannama_perintahAnggaplah bahawa terdapat command_name perintah luaran yang tersedia dalam mod interaktif dan anda ingin menggunakannya dalam skrip bash. Kami secara jelas dapat memberitahu bash bahawa command_name adalah perintah luaran menggunakan perintah builtin.
Contoh arahan luaran
Contoh arahan luaran dengan anggapan berikut dipasang:
failpergi
figlet
Contoh: Dapatkan jenis fail dan maklumat
{ # dapatkan jenis fail dan maklumatfail $ {infile} # (1,2)
}
# (1) arahan, fail
# (2) infile = {Laluan ke fail}
Contoh: Fail diubah dan fail baru di git
{ # fail pentas di gitgit tambah.# (1)
}
# (1) perintah, git
Contoh: Buat seni ascii menggunakan figlet
{ # mencipta seni asciifiglet$ {mesej} # (1,2)
}
Perintah # (1), figlet
# (2) message = {Mesej untuk dipaparkan sebagai seni ascii}
Jalankan arahan builtin
terbina dalamnama_perintahKatakan bahawa command_name adalah salah satu perintah yang ditakrifkan sebagai builtin in bash. Untuk memberitahu bash bahawa kami ingin menjalankan command_name sebagai builtin, kami menggunakan builtin builtin.
Contoh perintah Builtin
Contoh: Berapa banyak binaan?
terbina dalam{,}{,}{,,} # berapa binaan?Contoh: Phantom menyatakan
{menyatakan() { membuangAlamak!;}
menyatakan–Xfmenyatakan #?
}
Kesimpulannya
Cukup mudah untuk melaksanakan perintah dari dalam skrip bash shell. Terdapat tiga jenis arahan utama. Mengetahui bagaimana perintah mudah ditafsirkan dalam bash dapat menyebabkan kawalan yang lebih baik terhadap jenis perintah apa yang dijalankan dalam runtime.