Jalankan skrip bash dari php

Halaman ini sebagian besar adalah informasi yayasan. Ini agak membosankan tetapi hal-hal penting yang akan membantu Anda menghargai mengapa dan bagaimana hal-hal tertentu berperilaku seperti yang mereka lakukan begitu kita mulai bermain-main dengan hal-hal menyenangkan (yang saya janjikan akan kita lakukan di bagian selanjutnya). Meluangkan waktu untuk membaca dan memahami materi di bagian ini akan membuat bagian lain lebih mudah dicerna, jadi tekunlah dan itu akan sangat bermanfaat untuk waktu Anda.

Jadi apa sebenarnya mereka?

Pikirkan naskah drama, atau film, atau acara TV. Naskah memberi tahu para aktor apa yang harus mereka katakan dan lakukan. Skrip untuk komputer memberi tahu komputer apa yang harus dilakukan atau dikatakan. Dalam konteks skrip Bash, kami memberi tahu shell Bash apa yang harus dilakukan

Skrip Bash adalah file teks biasa yang berisi serangkaian perintah. Perintah-perintah ini adalah campuran dari perintah yang biasanya kita ketik sendiri pada baris perintah (seperti ls atau cp misalnya) dan perintah yang dapat kita ketikkan pada baris perintah tetapi umumnya tidak (Anda akan menemukannya di beberapa halaman berikutnya . Poin penting untuk diingat adalah

Apa pun yang dapat Anda jalankan secara normal di baris perintah dapat dimasukkan ke dalam skrip dan akan melakukan hal yang persis sama. Demikian pula, apa pun yang dapat Anda masukkan ke dalam skrip juga dapat dijalankan secara normal di baris perintah dan akan melakukan hal yang persis sama

Anda tidak perlu mengubah apa pun. Cukup ketik perintah seperti biasa dan mereka akan berperilaku seperti biasanya. Hanya saja, alih-alih mengetiknya di baris perintah, kita sekarang memasukkannya ke dalam file teks biasa. Dalam pengertian ini, jika Anda tahu bagaimana melakukan hal-hal di baris perintah maka Anda sudah tahu sedikit tentang skrip Bash

Merupakan konvensi untuk memberikan file yang merupakan ekstensi dari skrip Bash. sh (myscript. s misalnya). Seperti yang Anda ketahui (dan jika Anda tidak, mungkin Anda harus mempertimbangkan untuk meninjau Tutorial Linux kami), Linux adalah sistem tanpa ekstensi sehingga skrip tidak harus memiliki karakteristik ini agar berfungsi.

Bagaimana mereka bekerja?

Ini hanya sedikit pengetahuan latar belakang. Tidak perlu memahami hal ini untuk menulis skrip tetapi akan berguna untuk mengetahuinya setelah Anda mulai masuk ke skrip yang lebih kompleks (dan skrip yang memanggil dan bergantung pada skrip lain setelah Anda mulai menjadi sangat mewah)

Di ranah Linux (dan komputer pada umumnya) kita memiliki konsep program dan proses. Sebuah program adalah gumpalan data biner yang terdiri dari serangkaian instruksi untuk CPU dan kemungkinan sumber daya lainnya (gambar, file suara, dan semacamnya) yang disusun dalam sebuah paket dan biasanya disimpan di hard disk Anda. Ketika kita mengatakan bahwa kita sedang menjalankan sebuah program, kita tidak benar-benar menjalankan program tersebut tetapi salinannya yang disebut proses. Yang kami lakukan adalah menyalin instruksi dan sumber daya tersebut dari hard disk ke memori kerja (atau RAM). Kami juga mengalokasikan sedikit ruang dalam RAM untuk proses menyimpan variabel (untuk menyimpan data kerja sementara) dan beberapa flag untuk memungkinkan sistem operasi (OS) mengelola dan melacak proses selama eksekusi

Pada dasarnya proses adalah turunan dari suatu program yang sedang berjalan

Mungkin ada beberapa proses yang mewakili program yang sama yang berjalan di memori secara bersamaan. Misalnya saya dapat membuka dua terminal dan menjalankan perintah cp di keduanya. Dalam hal ini akan ada dua proses cp yang saat ini ada di sistem. Setelah mereka selesai menjalankan sistem kemudian hancurkan mereka dan tidak ada lagi proses yang mewakili program cp

Saat kita berada di terminal, kita menjalankan proses Bash untuk memberi kita Bash shell. Jika kita memulai skrip yang berjalan, itu tidak benar-benar berjalan dalam proses itu tetapi malah memulai proses baru untuk dijalankan di dalam. Kami akan mendemonstrasikan ini di bagian selanjutnya tentang variabel dan implikasinya akan menjadi lebih jelas. Untuk sebagian besar Anda tidak perlu terlalu khawatir tentang fenomena ini

Bagaimana kita menjalankannya?

Menjalankan skrip Bash cukup mudah. Istilah lain yang mungkin Anda temui adalah mengeksekusi skrip (yang artinya sama). Sebelum kita dapat menjalankan skrip, izin eksekusi harus ditetapkan (untuk alasan keamanan, izin ini biasanya tidak ditetapkan secara default). Jika Anda lupa memberikan izin ini sebelum menjalankan skrip, Anda hanya akan mendapatkan pesan kesalahan yang memberi tahu Anda seperti itu dan tidak ada salahnya akan dilakukan

  1. /myscript. SH
  2. pesta. . /myscript. SH. Izin ditolak
  3. ls -l skrip saya. SH
  4. -rw-r--r-- 18 pengguna ryan 4096 Feb 17 09. 12 skrip saya. SH
  5. chmod 755 skrip saya. SH
  6. ls -l skrip saya. SH
  7. -rwxr-xr-x 18 pengguna ryan 4096 Feb 17 09. 12 skrip saya. SH
  8. /myscript. SH
  9. Halo Dunia

Singkatan 755 sering digunakan untuk skrip karena memungkinkan Anda sebagai pemilik untuk menulis atau memodifikasi skrip dan agar semua orang dapat menjalankan skrip

Berikut adalah isi dari myscript. SH

myscript. SH

  1. #. /bin/bash
  2. gema Halo Dunia

Mari kita hancurkan

  • Baris 1 - Apa yang disebut sebagai shebang. Lihat di bawah untuk apa ini
  • Baris 2 - Ini adalah komentar. Apa pun setelah # tidak dieksekusi. Ini hanya untuk referensi kami
  • Baris 4 - Apakah perintah gema yang akan mencetak pesan ke layar. Anda dapat mengetik perintah ini sendiri di baris perintah dan akan berperilaku persis sama
  • Penyorotan sintaks ada hanya untuk membuatnya lebih mudah dibaca dan bukan sesuatu yang perlu Anda lakukan di file Anda sendiri (ingat itu hanya file teks biasa)

Mengapa. /

Anda mungkin memperhatikan bahwa ketika kita menjalankan perintah normal (seperti ls) kita cukup mengetikkan namanya tetapi ketika menjalankan skrip di atas saya meletakkan. / di depannya. Saat Anda mengetikkan nama pada baris perintah, Bash mencoba menemukannya di serangkaian direktori yang disimpan dalam variabel bernama $PATH. Kita dapat melihat nilai saat ini dari variabel ini menggunakan perintah echo (Anda akan mempelajari lebih lanjut tentang variabel di bagian selanjutnya)

  1. gema $PATH
  2. /home/ryan/bin. /usr/local/bin. /usr/bin. /tempat sampah

Direktori dipisahkan oleh ". "

Bash hanya mencari di direktori spesifik tersebut dan tidak mempertimbangkan sub direktori atau direktori Anda saat ini. Itu akan melihat melalui direktori tersebut secara berurutan dan mengeksekusi contoh pertama dari program atau skrip yang ditemukannya

Variabel $PATH adalah variabel pengguna individu sehingga setiap pengguna pada sistem dapat mengaturnya agar sesuai dengan diri mereka sendiri

Ini dilakukan karena beberapa alasan berbeda

  • Ini memungkinkan kita untuk menginstal beberapa versi program yang berbeda. Kita dapat mengontrol mana yang dieksekusi berdasarkan tempatnya di $PATH kita
  • Ini memungkinkan untuk kenyamanan. Seperti yang Anda lihat di atas, direktori pertama untuk saya sendiri adalah direktori bin di direktori home saya. Ini memungkinkan saya untuk meletakkan skrip dan program saya sendiri di sana dan kemudian saya dapat menggunakannya di mana pun saya berada dalam sistem hanya dengan mengetikkan namanya. Saya bahkan dapat membuat skrip dengan nama yang sama dengan program (untuk bertindak sebagai pembungkus) jika saya menginginkan perilaku yang sedikit berbeda
  • Ini meningkatkan keamanan - Misalnya pengguna jahat dapat membuat skrip bernama ls yang sebenarnya menghapus semua yang ada di direktori home Anda. Anda tidak ingin secara tidak sengaja menjalankan skrip itu. Tapi selama itu tidak ada di $PATH Anda, itu tidak akan terjadi

Jika sebuah program atau skrip tidak ada di salah satu direktori di $PATH Anda maka Anda dapat menjalankannya dengan memberi tahu Bash di mana ia harus mencari untuk menemukannya. Anda melakukannya dengan menyertakan jalur absolut atau relatif di depan nama program atau skrip. Anda akan mengingat titik itu (. ) sebenarnya adalah referensi ke direktori Anda saat ini. Dengan asumsi skrip ini ada di direktori home saya, saya juga bisa menjalankannya dengan menggunakan jalur absolut

  1. /home/ryan/myscript. SH
  2. Halo Dunia

Shebang (#. )

#. /bin/bash

Ini adalah baris pertama dari skrip di atas. Tanda seru hash ( #. ) urutan karakter disebut sebagai Shebang. Mengikutinya adalah jalur ke juru bahasa (atau program) yang harus digunakan untuk menjalankan (atau menafsirkan) sisa baris dalam file teks. (Untuk skrip Bash itu akan menjadi jalur ke Bash, tetapi ada banyak jenis skrip lain dan masing-masing memiliki juru bahasa sendiri. )

Pemformatan penting di sini. Shebang harus berada di baris pertama file (baris 2 tidak akan berfungsi, meskipun baris pertama kosong). Juga tidak boleh ada spasi sebelum # atau di antara. dan jalan menuju penafsir

Sementara Anda bisa menggunakan jalur relatif untuk juru bahasa, sebagian besar waktu Anda ingin menggunakan jalur absolut. Anda mungkin akan menjalankan skrip dari berbagai lokasi sehingga absolut adalah yang paling aman (dan seringkali juga lebih pendek dari jalur relatif dalam kasus khusus ini)

Dimungkinkan untuk mengabaikan baris dengan shebang dan tetap menjalankan skrip tetapi itu tidak bijaksana. Jika Anda berada di terminal dan menjalankan Bash Shell dan Anda menjalankan skrip tanpa shebang maka Bash akan menganggap itu adalah skrip Bash. Jadi ini hanya akan berfungsi dengan asumsi pengguna yang menjalankan skrip menjalankannya di Bash Shell dan ada berbagai alasan mengapa hal ini tidak terjadi, yang berbahaya

Anda juga dapat menjalankan Bash, meneruskan skrip sebagai argumen

  1. bash myscript. SH
  2. Halo Dunia

Meskipun ini aman, ini juga melibatkan pengetikan yang tidak perlu setiap kali Anda ingin menjalankan skrip

Mengingat pengamatan di atas, sebaiknya selalu sertakan shebang ( #. ). Ini adalah pendekatan yang paling andal dan nyaman

Pemformatan

Seperti yang kita lihat di atas, pemformatan untuk shebang itu penting (yakni tanpa spasi, harus di baris pertama). Ada banyak area dalam skrip Bash di mana pemformatan itu penting. Biasanya ini melibatkan spasi dan ada atau tidaknya spasi dapat menjadi perbedaan antara perintah berfungsi atau tidak. Saya akan menunjukkan ini saat kita bertemu mereka. Biasakan juga untuk memperhatikan ada tidaknya spasi saat melihat kode

Alasan utama untuk ini adalah bahwa Bash pada awalnya dikembangkan sebagai antarmuka bagi Pengguna untuk berinteraksi dengan sistem dan kemudian diperluas untuk memiliki kemampuan skrip yang lebih kuat. Banyak keputusan mengenai perilakunya dibuat hanya dengan mempertimbangkan kebutuhan pengguna dan kemudian kemampuan skrip harus dikerjakan, nanti, seputar keputusan tersebut. Orang-orang pada umumnya tidak mempermasalahkan hal ini karena skrip Bash masih merupakan alat yang luar biasa untuk menggabungkan program yang ada dengan cepat dan mudah menjadi solusi yang lebih kuat

Saya telah melihat siswa menghabiskan cukup banyak waktu dengan frustrasi karena sepotong kode yang terlihat baik-baik saja tidak berfungsi. Mereka menjadi sangat malu ketika mengetahui pelakunya (ruang yang seharusnya atau tidak seharusnya ada di sana). Anda mungkin akan membuat kesalahan ini sendiri beberapa kali sebelum meresap, jadi jangan terlalu khawatir, tetapi semakin cepat Anda menguasainya, Anda akan semakin bahagia. )

Indentasi kode adalah bidang pemformatan lain yang penting. Kita akan melihat di bagian 5 (Pernyataan Jika) jika sudah relevan. Indentasi tidak diperlukan tetapi itu membuat kode Anda lebih mudah dibaca dan membuat lebih sulit untuk membuat kesalahan sederhana

Bagaimana cara menjalankan skrip bash menggunakan PHP?

Saya memiliki file php di bawah ini untuk menjalankan skrip bash. ? php $old_path = getcwd(); . / Skrip2. sh $var"); chdir($old_path); echo $output; ?>

Bagaimana cara menjalankan skrip shell dari PHP?

Fungsi shell_exec() adalah fungsi bawaan dalam PHP yang digunakan untuk menjalankan perintah melalui shell dan mengembalikan hasil lengkap sebagai . Shell_exec adalah alias untuk operator backtick, untuk yang digunakan untuk *nix. Jika perintah gagal, kembalikan NULL dan nilainya tidak dapat diandalkan untuk pemeriksaan kesalahan.

Bagaimana cara menjalankan perintah Linux dalam skrip PHP?

Anda dapat menjalankan perintah linux dalam skrip php - yang harus Anda lakukan adalah masukkan baris perintah dalam tanda kurung (`) . Dan juga berkonsentrasi pada exec() , ini dan Shell_exec(). Simpan jawaban ini.

Bagaimana cara menggunakan shell_exec di PHP?

shell_exec() Fungsi. Fungsi shell_exec() adalah fungsi bawaan di PHP yang digunakan untuk mengeksekusi perintah melalui shell dan mengembalikan hasil lengkap sebagai string. Shell_exec adalah alias untuk operator backtick, untuk yang digunakan untuk *nix