Subshells Linux untuk pemula dengan contoh

Subshells Linux untuk pemula dengan contoh

Menggunakan subshells di Bash memberikan anda keupayaan untuk menghasilkan maklumat sensitif konteks dari kanan dalam arahan bash anda. Contohnya, jika anda ingin mengubah suai rentetan teks di dalam echo pernyataan, maka ini dapat dilakukan dengan mudah dengan subshells.

Dalam tutorial ini anda akan belajar:

  • Cara Menggunakan Menggunakan Penggunaan Subshells Di Bash
  • Cara Menggunakan Subshells Untuk Mendapatkan Maklumat Sensitif Konteks
  • Contoh Penggunaan Subshell Asas BASH
Subshells Linux untuk pemula dengan contoh

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran linux-bebas
Perisian Baris perintah bash, sistem berasaskan linux
Yang lain Sebarang utiliti yang tidak termasuk dalam shell bash secara lalai boleh dipasang menggunakan sudo apt-get memasang nama utiliti (atau pemasangan yum untuk sistem berasaskan redhat)
Konvensyen # - memerlukan komando linux untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$-Memerlukan komando linux untuk dilaksanakan sebagai pengguna yang tidak istimewa

Contoh 1: Dua sintaks yang berbeza

Bash membolehkan dua sintaks Subshell yang berbeza, iaitu $ () Dan pukulan belakang mengelilingi kenyataan. Mari lihat beberapa contoh mudah untuk bermula:

$ echo '$ (echo' a ')' $ (echo a) $ echo "$ (echo 'a')" a $ echo "a $ (echo 'b') c" abc $ echo "a'echo 'b "C" ABC 


Dalam perintah pertama, sebagai contoh, kami menggunakan ' Petikan tunggal. Ini mengakibatkan perintah subshell kami, di dalam petikan tunggal, untuk ditafsirkan sebagai teks literal dan bukannya perintah. Ini adalah bash standard: ' menunjukkan literal, " menunjukkan bahawa rentetan akan dihuraikan untuk subshells dan pembolehubah.

Dalam perintah kedua kita menukar ' ke " dan dengan itu rentetan dihuraikan untuk arahan dan pembolehubah sebenar. Hasilnya ialah subshell sedang dimulakan, terima kasih kepada sintaks Subshell kami ($ ()), dan arahan di dalam subshell (echo 'a') sedang dilaksanakan secara literal, dan dengan itu a dihasilkan, yang ketika itu dimasukkan di peringkat keseluruhan / teratas echo. Perintah di pentas itu boleh dibaca sebagai echo "a" dan dengan itu outputnya adalah a.

Dalam perintah ketiga, kami terus mengembangkan ini untuk menjadikannya lebih jelas bagaimana subshells berfungsi dalam konteks. Kami echo surat b di dalam subshell, dan ini disertai di sebelah kiri dan kanan dengan huruf a dan c menghasilkan output keseluruhan ABC dengan cara yang sama dengan arahan kedua.

Dalam perintah keempat dan terakhir, kami mencontohkan sintaks Subshell Bash alternatif menggunakan back-ticks dan bukannya $ (). Penting untuk mengetahui perkara itu $ () adalah sintaks yang disukai, dan dalam beberapa kes terpencil sintaks berasaskan belakang boleh menghasilkan beberapa kesilapan parsing di mana $ () tidak. Oleh itu, saya akan sangat menggalakkan anda untuk sentiasa menggunakan $ () sintaks untuk subshells, dan ini juga yang akan kita gunakan dalam contoh berikut.

Contoh 2: Sedikit lebih kompleks

$ sentuh $ echo "-$ (ls [a-z])" -a $ echo "-=-|| $ (ls [a-z] | xargs ls -l) ||-=-"-=-|| -rw-r-- 1 roel roel 0 5 Sep 09:26 a ||-=- 

Di sini, kita mula -mula membuat fail kosong dengan menggunakan sentuh a perintah. Seterusnya, kami menggunakan echo untuk mengeluarkan sesuatu yang subshell kita $ (ls [a-z]) akan menjana. Pasti, kita boleh melaksanakan ls secara langsung dan menghasilkan hasil yang sama, tetapi perhatikan bagaimana kami menambah - ke output sebagai awalan.

Dalam perintah akhir, kami memasukkan beberapa watak di bahagian depan dan akhir echo arahan yang menjadikan output kelihatan sedikit lebih baik. Kami menggunakan subshell untuk terlebih dahulu mencari a fail yang kami buat sebelumnya (ls [a-z]) dan kemudian - masih di dalam subshell - lulus hasil perintah ini (yang hanya akan menjadi a Secara harfiah - i.e. fail yang kami buat dalam perintah pertama) ke ls -l Menggunakan paip (|) dan juga Xargs perintah. Untuk maklumat lanjut mengenai Xargs, sila lihat artikel kami Xargs untuk pemula dengan contoh dan berbilang berulir Xargs dengan contoh.

Contoh 3: Petikan berganda di dalam subshells dan sub-subshells!

echo "$ (echo" $ (echo "ia berfungsi") "| s | it | ia pasti | ')" ia pasti berfungsi 


Sejuk, tidak? Di sini kita melihat bahawa sebut harga berganda boleh digunakan di dalam subshell tanpa menghasilkan sebarang kesilapan parsing. Kami juga melihat bagaimana subshell boleh bersarang di subshell yang lain. Adakah anda dapat menghuraikan sintaks? Cara paling mudah adalah untuk memulakan "di tengah atau teras semua subshells" yang dalam kes ini akan menjadi mudah echo "ia berfungsi".

Perintah ini akan dikeluarkan ianya berfungsi Hasil daripada panggilan subshell $ (echo "ia berfungsi"). Gambar ianya berfungsi Di tempat Subshell, i.e.

echo "$ (echo" ia berfungsi " 

Ini kelihatan lebih mudah. Seterusnya adalah berguna untuk mengetahui bahawa sed Perintah akan melakukan pengganti (terima kasih kepada s perintah sebelum | pemisah perintah) teks ia ke ia pasti. Anda boleh membaca sed perintah sebagai ganti __it__ dengan __it pasti__. Output subshell akan menjadiia pasti berfungsi ', i.e.

echo "pasti berfungsi" ia pasti berfungsi 

Kesimpulan

Dalam artikel ini, kita telah melihat bahawa subshells pasti bekerja (pun dimaksudkan), dan bahawa mereka boleh digunakan dalam pelbagai keadaan, kerana keupayaan mereka dimasukkan secara sejajar dan dalam konteks perintah yang menyeluruh. Subshells sangat kuat dan apabila anda mula menggunakannya, dengan baik, mungkin tidak akan berhenti. Tidak lama lagi anda akan menulis sesuatu seperti:

$ Var = "Selamat tinggal"; echo "terima kasih $ (echo" $ var "| sed 's |^| dan |')" | sed's | k | k you | ' 

Yang satu ini adalah untuk anda mencuba dan bermain -main dengan! Terima kasih dan selamat tinggal

Tutorial Linux Berkaitan:

  • Cara Menggunakan Subshells Bash Di dalam Jika Kenyataan
  • Subshells Linux Lanjutan dengan contoh
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Pengurusan skrip & proses bash berbilang threaded di…
  • Menguasai Gelung Skrip Bash
  • Perintah Linux Asas
  • Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..