GNU/Linux >> Belajar Linux >  >> Linux

Terminal mana yang lebih baik:Bash vs Zsh

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!


Linux
  1. Perintah terminal Linux mana yang paling sering Anda gunakan?

  2. Pertahankan Bash History Di Beberapa Terminal Windows?

  3. Penerjemah Shell mana yang Menjalankan Skrip Tanpa Shebang?

  1. Shell Mana yang Harus Saya Gunakan – Tcsh Vs Bash??

  2. Bagaimana Cara Membaca String Sebagai Angka Hex Di Bash?

  3. Bagaimana Cara Memeriksa Shell Yang Saya Gunakan?

  1. Sejarah Bash tanpa nomor baris

  2. Apa sebenarnya <() di bash (dan =() di zsh)?

  3. Ekstrak jalur yang hilang dari bash array jalur