Biasanya, ketika kita berbicara tentang server Linux atau wadah Docker, yang kita maksud biasanya adalah antarmuka baris perintah, shell, atau pengalaman terminal. Ada dua shell yang banyak digunakan oleh komunitas:Bash dan Zsh. Bash dianggap sebagai shell yang paling banyak digunakan. Pada saat yang sama, cangkang Z atau Zsh menjadi semakin populer saat ini. Jadi, terminal mana yang harus Anda pilih? Dalam artikel ini, kita akan membandingkan Bash vs Zsh dan mencoba menjawab pertanyaan tentang terminal mana yang lebih baik.
Sejarah
Bash shell (Bourne Again Shell) diperkenalkan pada tahun 1989 untuk menggantikan Bourne Shell dan menjadi shell default Linux dengan sangat cepat. Bash mampu melakukan berbagai solusi pemrograman dan tugas otomatis di Linux, tetapi itu bukan satu-satunya shell yang dapat Anda gunakan. Ada beberapa shell lain yang dapat melakukan fungsi serupa dengan Bash.
Salah satunya adalah Zsh, yang dibuat pada tahun 1990 sebagai shell Bourne yang diperluas dengan banyak fitur tambahan Bash, ksh, dan tcsh. Jika Anda pengguna Linux, Anda tidak perlu menginstal Zsh secara terpisah karena Zsh disertakan secara default di hampir semua distribusi modern. Bash dan Zsh berbagi beberapa fitur, tetapi ada juga banyak perbedaan antara shell ini, yang akan kami jelaskan di artikel ini. Artikel ini mencakup bagian berikut:
- Tabel perbandingan fitur
- Perbandingan UX Terminal
- Daftar perbedaan antara Bash dan Zsh
Sekarang mari kita menuju bagian pertama artikel ini.
Perbandingan fitur
Di bagian ini kita akan membahas perbedaan yang paling penting.
Zsh | Bass |
Ini berisi banyak fitur canggih. | Tidak mengandung fitur lanjutan. |
Memiliki struktur file konfigurasi yang lebih kompleks. | Struktur file konfigurasi sederhana. |
Konfigurasi dan penyesuaian disediakan oleh kerangka kerja Oh My Zsh. | Konfigurasi dan penyesuaian disediakan oleh Bash-it. |
Riwayat perintah dibagikan ke semua shell. | Berbagi sejarah itu sulit. |
Skrip Zsh tidak begitu banyak digunakan. | Skrip bash banyak digunakan. |
Zsh tidak memuat SHELLOPTS saat memulai. | SHELLOPTS dimuat selama awal. |
Konfigurasi lingkungan lebih dapat disesuaikan dengan zshrc , zlogin , zshenv , zlogout , zprofile . | Lingkungan kurang dapat disesuaikan dan dapat diimplementasikan dengan lebih sedikit skrip. |
Mengizinkan menggunakan alias yang diperluas di mana saja dalam file. | Bash tidak mendukung alias yang diperluas secara default. |
zparseopts membuat penguraian argumen skrip menjadi sangat mudah. | Mengurai argumen skrip dengan getopts sedikit lebih menantang. |
Penghitungan terminal dapat dilakukan dengan menggunakan zcalc . | Anda perlu menggunakan dua kalkulator eksternal:bc dan expr . |
Skrip konfigurasi terminal/skrip autostart dimuat dari ~/.zshrc berkas. | Skrip konfigurasi terminal/autostart dimuat dari ~/.bashrc berkas. |
bindkey digunakan untuk mengikat kunci. | bind bawaan dan ~/.inputrc digunakan untuk pengikatan kunci. |
Lebih banyak opsi untuk membuat prompt yang keren. | Lebih sedikit opsi untuk permintaan mewah. |
setopt bertanggung jawab atas pengaturan shell. | shopt mengonfigurasi pengaturan shell. |
# tidak dianggap sebagai komentar kecuali INTERACTIVE_COMMENTS sudah diatur. | # mewakili string komentar. |
Pola karakter pengganti yang diperluas diaktifkan secara default. | Gunakan shopt -s extglob untuk mengaktifkan pola wildcard yang diperluas. |
Lebih banyak cara untuk mengubah nilai variabel (perluasan parameter). | Lebih sedikit metode untuk mengubah variabel. |
Memiliki fitur pelengkapan otomatis dan koreksi ejaan. | Anda harus menggunakan bash-completion paket. |
Tersedia lebih banyak plugin dan tema. | Lebih sedikit plugin dan tema yang tersedia. |
Zsh lebih dapat disesuaikan. | Bash kurang dapat disesuaikan. |
Kompatibel dengan POSIX jika emulate sh telah ditetapkan. | Ikuti standar POSIX jika
--posix
opsi baris perintah telah disetel. |
Penyelesaian otomatis bekerja lebih cepat. | Penyelesaian otomatis lebih lambat. |
Komunitas yang lebih kecil | Komunitas yang lebih luas |
Bash vs Zsh – Volume pencarian internet
Berikut adalah grafik Google Tends, yang menunjukkan perbandingan volume pencarian untuk kedua shell:
Bash vs Zsh – UX
Di bagian ini kami akan meninjau fitur shell UX yang paling umum digunakan, yang Anda gunakan setiap hari.
Penyiapan wadah buruh pelabuhan
Jika Anda hanya ingin menguji contoh berikut, cara terbaik untuk melakukannya adalah dengan meluncurkan wadah Ubuntu Docker:
docker run -it ubuntu:20.04 /bin/bash
Wadah Docker tidak memiliki Zsh terinstal secara default, jadi, Anda harus menginstalnya terlebih dahulu:
apt-get update
apt-get install -y zsh
Terakhir, Anda dapat meluncurkan zsh shell:
zsh
Tab untuk penyelesaian otomatis
Tab
penggunaan kunci di Zsh dan Bash sedikit berbeda. Mari buat beberapa direktori bersarang untuk mengilustrasikan contoh ini:
mkdir -p onedrive/docs
mkdir -p onedrive/pics
Di Bash, Anda harus menggunakan Tab
kunci untuk menyelesaikan jalur ke direktori atau file secara otomatis.
Misalnya, ketik satu , lalu tekan Tab
, jenis d dan tekan Tab
lagi untuk menyelesaikan jalur di terminal:
cd onedrive/docs
Hasil yang diharapkan akan terlihat seperti ini:
Di Zsh, penggunaan Tab
key akan memberi Anda daftar opsi yang tersedia untuk dipilih.
Ketik satu dan tekan Tab
, lalu tekan Tab
lagi sebanyak yang Anda inginkan untuk memilih direktori yang diperlukan:
Koreksi ejaan
Fungsi koreksi ejaan didukung oleh shell Zsh dan Bash. Namun, Zsh melakukannya dengan lebih efektif.
Pada contoh di bawah ini, Anda akan mempelajari cara mengaktifkan Zsh dan Bash untuk mengoreksi ejaan secara otomatis.
Mari kita buat direktori bernama onedrive
, jika Anda tidak melakukannya di bagian artikel sebelumnya:
mkdir -p onedrive
Sekarang mari kita membuat kesalahan ketik pada perintah Bash shell:
cd onedrave
Bash shell tidak akan memperbaiki kesalahan pengetikan “dra ve” ke “dri ve,” dan tampilkan kesalahan “Tidak ada file atau direktori seperti itu. ”
Untuk mengaktifkan fitur pemeriksa ejaan otomatis di bash, Anda harus mengedit konfigurasi Bash.
nano ~/.bashrc
Tambahkan baris berikut di akhir file:
shopt -s cdspell
Gunakan source
perintah untuk menerapkan perubahan pada shell.
source ~/.bashrc
Jalankan kembali perintah yang salah eja. Terminal Bash secara otomatis mengoreksi kesalahan ketik:
cd onedrave
Bagaimana dengan Zsh?
Mari kita salah mengeja perintah "echo" untuk memeriksa apakah Zsh mendeteksi dan mengoreksinya untuk kita secara otomatis:
ehco "Hello World"
Seperti yang diharapkan, Zsh tidak memperbaiki ejaannya.
Sekarang, kita akan membuat beberapa perubahan pada konfigurasi Zsh.
nano ~/.zshrc
Aktifkan correctexport
pilihan untuk cangkang. Anda juga dapat menentukan pesan prompt juga:
setopt correct
export SPROMPT="Correct %R to %r? [Yes, No, Abort, Edit ]"
Jangan khawatir jika filenya kosong, tidak apa-apa, itu akan diisi dengan konfigurasi tambahan segera setelah kami menginstal Oh My Zsh nanti.
Begini tampilannya jika Anda mengikuti kami di wadah Docker:
Jalankan source
perintah untuk menerapkan perubahan pada shell.
source ~/.zshrc
Jalankan echo
. yang salah eja perintah lagi:
ehco "Hello World"
Ini dia!
Pemeriksaan ejaan otomatis sekarang diaktifkan:
Tema
Anda perlu menginstal Git untuk dapat menggunakan tema dan penyesuaian Bash atau Zsh:
apt-get install -y git
Untuk menginstal kustomisasi untuk shell Bash, gunakan perintah berikut:
git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
Proses instalasi sangat sederhana:
~/.bash_it/install.sh
Sekarang kita dapat mengedit ~/.bashrc
file untuk mengedit tema Bash:
nano ~/.bashrc
Ubah BASH_IT_THEME
nilai variabel ke tema apa pun yang ada di bundel tema, misalnya, coba iri .
Untuk menerapkan perubahan, jalankan perintah berikut:
source ~/.bashrc
Sekarang, mari kita sesuaikan Zsh.
Seperti disebutkan sebelumnya, kerangka kerja Oh My Zsh menyediakan banyak fitur berguna dan koleksi tema yang luas.
Instalasi Oh My Zsh juga tidak terlalu sulit:
apt install -y curl wget git
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Jawab saja Y untuk semua pertanyaan dan Anda akan mendapatkan kustomisasi shell yang indah secara default:
Sekarang, tema Zsh berada di:~/.oh-my-zsh/themes
map:
ls ~/.oh-my-zsh/themes/
Di sini, Anda dapat melihat nama-nama tema yang disertakan dalam bundel.
Tema default Zsh adalah “robbyrussell “. Untuk memodifikasi tema ini, perbarui ZSH_THEME
nilai variabel dalam ~/zshrc
berkas:
nano ~/.zshrc
Sekarang edit ZSH_THEME
nilai variabel untuk menyiapkan tema baru untuk terminal Anda. Berikut daftar contoh UX.
Untuk menerapkan perubahan, gunakan source
perintah:
source ~/.zshrc
Ekspansi karakter pengganti
Nama file digunakan untuk mencocokkan dengan wildcard. Bash memiliki fitur bawaan ini di dalamnya, sedangkan untuk Zsh, Anda harus mengaktifkan ekspansi wildcard dengan menyetel subset global.
Mari kita buat beberapa .txt
file di Bash:
touch text_file1.txt
touch text_file2.txt
ls
Sekarang, kita dapat membuat daftar .txt
file dengan menggunakan ekspresi wildcard dalam variabel:
files="*.txt"
echo $files
Di Zsh pendekatan seperti itu tidak akan berfungsi secara default:
touch text_file1.txt
touch text_file2.txt
ls
file="*.txt"
echo $file
set -o GLOB_SUBST
file="*.txt"
echo $file
Sekarang, ekspresi wildcard berfungsi!
Letakkan opsi ini ke ~/.zshrc
, jika Anda ingin mempertahankan perilaku Zsh seperti itu di masa mendatang:
set -o GLOB_SUBST
Ringkasan
Baik Zsh dan Bash, adalah shell yang sangat kuat dengan banyak ekstensi dan opsi konfigurasi. Zsh memiliki kustomisasi yang kuat, ekstensibilitas, dan fitur-fitur canggih. Bash masih lebih banyak digunakan, jadi pikirkan tentang kompatibilitas mundur skrip Anda dengan sistem lain yang mungkin perlu Anda kelola.
Pilihan pribadi saya adalah Zsh untuk laptop pribadi, dan Bash untuk aktivitas manajemen server.
Saya harap, artikel ini bermanfaat bagi Anda. Jika demikian, tolong, bantu kami untuk menyebarkannya ke seluruh dunia!