GNU/Linux >> Belajar Linux >  >> Linux

Memulai dengan Zsh

Z-shell (atau Zsh) adalah POSIX shell interaktif seperti Bourne yang dikenal karena banyaknya fitur inovatif. Pengguna Z-Shell sering menyebut banyak kemudahannya dan memujinya karena peningkatan efisiensi dan penyesuaian ekstensif.

Jika Anda relatif baru mengenal Linux atau Unix tetapi cukup berpengalaman untuk membuka terminal dan menjalankan beberapa perintah, Anda mungkin telah menggunakan shell Bash. Bash bisa dibilang shell perangkat lunak bebas definitif, sebagian karena fitur progresif dan sebagian karena ia dikirimkan sebagai shell default pada sebagian besar sistem operasi Linux dan Unix yang populer. Namun, semakin Anda menggunakan shell, semakin Anda mulai menemukan hal-hal kecil yang mungkin lebih baik untuk cara Anda ingin menggunakannya. Jika ada satu hal yang terkenal dengan open source, itu adalah pilihan . Banyak orang memilih untuk "lulus" dari Bash hingga Z.

Apa itu Zsh?

Shell hanyalah antarmuka ke sistem operasi Anda. Shell interaktif memungkinkan Anda mengetikkan perintah melalui apa yang disebut input standar , atau stdin , dan dapatkan keluaran melalui keluaran standar dan kesalahan standar , atau stdout dan stderr . Ada banyak shell, termasuk Bash, Csh, Ksh, Tcsh, Dash, dan Zsh. Masing-masing memiliki fitur berdasarkan apa yang menurut pemrogramnya akan menjadi yang terbaik untuk sebuah shell. Baik atau buruknya fitur tersebut terserah Anda, pengguna akhir.

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Zsh memiliki fitur seperti penyelesaian Tab interaktif, pencarian file otomatis, integrasi regex, singkatan lanjutan untuk menentukan cakupan perintah, dan mesin tema yang kaya. Fitur-fitur ini termasuk dalam lingkungan shell mirip Bourne yang tidak asing lagi, artinya jika Anda sudah mengenal dan menyukai Bash, Anda akan menemukan Zsh familiar—kecuali dengan lebih banyak fitur. Anda mungkin menganggapnya sebagai semacam Bash++.

Menginstal Zsh

Instal Zsh dengan pengelola paket Anda.

Di Fedora, RHEL, dan CentOS:

$ sudo dnf install zsh

Di Ubuntu dan Debian:

$ sudo apt install zsh

Di MacOS, Anda dapat menginstalnya menggunakan MacPorts:

$ sudo port install zsh

Atau dengan Homebrew:

$ brew install zsh

Dimungkinkan untuk menjalankan Zsh di Windows, tetapi hanya di atas lapisan Linux atau mirip Linux seperti Subsistem Windows untuk Linux (WSL) atau Cygwin. Instalasi tersebut di luar cakupan artikel ini, jadi lihat dokumentasi Microsoft.

Menyiapkan Zsh

Zsh bukan emulator terminal; itu adalah shell yang berjalan di dalam emulator terminal. Jadi, untuk meluncurkan Zsh, Anda harus terlebih dahulu meluncurkan jendela terminal seperti Terminal GNOME, Konsole, Terminal, iTerm2, rxvt, atau terminal lain pilihan Anda. Kemudian Anda dapat meluncurkan Zsh dengan mengetik:

$ zsh

Pertama kali Anda meluncurkan Zsh, Anda akan diminta untuk memilih beberapa opsi konfigurasi. Ini semua dapat diubah nanti, jadi tekan 1 untuk melanjutkan.

This is the Z Shell configuration function for new users, zsh-newuser-install.

(q)  Quit and do nothing.

(0)  Exit, creating the file ~/.zshrc

(1)  Continue to the main menu.

Ada empat kategori preferensi, jadi mulailah dari atas.

  1. Kategori pertama memungkinkan Anda memilih berapa banyak perintah yang disimpan dalam file riwayat shell Anda. Secara default, disetel ke 1.000 baris.
  2. Penyelesaian Zsh adalah salah satu fitur yang paling menarik. Untuk mempermudah, pertimbangkan untuk mengaktifkannya dengan opsi default sampai Anda terbiasa dengan cara kerjanya. Tekan 1 untuk opsi default, 2 untuk menyetel opsi secara manual.
  3. Pilih binding kunci Emacs atau Vi. Bash menggunakan binding Emacs, jadi Anda mungkin sudah terbiasa dengan itu.
  4. Akhirnya, Anda dapat mempelajari (dan menyetel atau tidak menyetel) beberapa fitur halus Zsh. Misalnya, Anda dapat berhenti menggunakan cd perintah dengan mengizinkan Zsh untuk memulai perubahan direktori saat Anda memberikan jalur yang tidak dapat dieksekusi tanpa perintah. Untuk mengaktifkan salah satu opsi tambahan ini, ketik nomor opsi dan masukkan s untuk menyetel dia. Coba aktifkan semua opsi untuk mendapatkan pengalaman Zsh penuh. Anda dapat menghapusnya nanti dengan mengedit ~/.zshrc .

Untuk menyelesaikan konfigurasi, tekan 0 .

Menggunakan Zsh

Pada awalnya, Zsh merasa sangat ingin menggunakan Bash, yang tidak salah lagi merupakan salah satu dari banyak fiturnya. Ada perbedaan serius antara, misalnya, Bash dan Tcsh, jadi dapat beralih antara Bash dan Zsh adalah kemudahan yang membuat Zsh mudah untuk dicoba dan mudah digunakan di rumah jika Anda harus menggunakan Bash di kantor atau di server Anda.

Ubah direktori dengan Zsh

Perbedaan kecil itulah yang membuat Zsh bagus. Pertama, coba ubah direktori ke folder Documents Anda tanpa cd perintah . Tampaknya terlalu bagus untuk menjadi kenyataan; tetapi jika Anda memasukkan jalur direktori tanpa instruksi lebih lanjut, Zsh berubah ke direktori itu:

% Documents
% pwd
/home/seth/Documents

Itu membuat kesalahan di Bash atau shell normal lainnya. Tapi Zsh jauh dari normal, dan ini baru permulaan.

Telusuri dengan Zsh

Saat Anda ingin menemukan file menggunakan shell biasa, Anda mungkin menggunakan find atau temukan memerintah. Paling tidak, Anda mungkin telah menggunakan ls -R untuk daftar rekursif dari satu set direktori. Zsh memiliki fitur bawaan yang memungkinkannya menemukan file di subdirektori saat ini atau lainnya.

Misalnya, anggap Anda memiliki dua file bernama foo.txt . Satu terletak di direktori Anda saat ini, dan yang lainnya berada di subdirektori bernama foo . Di shell Bash, Anda dapat membuat daftar file di direktori saat ini dengan:

$ ls
foo.txt

dan Anda dapat membuat daftar yang lain dengan menyatakan jalur subdirektori secara eksplisit:

$ ls foo
foo.txt

Untuk mencantumkan keduanya, Anda harus menggunakan -R beralih, mungkin digabungkan dengan grep :

$ ls -R | grep foo.txt
foo.txt
foo.txt

Namun di Zsh, Anda dapat menggunakan ** singkatan:

% ls **/foo.txt
foo.txt
foo.txt

Dan Anda dapat menggunakan sintaks ini dengan perintah apa pun, tidak hanya dengan ls . Bayangkan peningkatan efisiensi Anda saat memindahkan jenis file tertentu dari satu kumpulan direktori ke satu lokasi, atau menggabungkan potongan teks ke dalam file, atau menelusuri log.

Menggunakan penyelesaian Tab Zsh

Penyelesaian tab adalah fitur pengguna-daya di Bash dan beberapa shell lainnya, dan itu mengejutkan dunia Unix ketika itu menjadi hal yang biasa. Pengguna Unix tidak lagi harus menggunakan karakter pengganti saat mengetik jalur yang panjang dan membosankan (seperti /h*/s*h/V*/SCS/sc*/comp*/t*/a*/*9/ 04/LS*perahu*v , yang jauh lebih mudah daripada mengetik /home/seth/Videos/SCS/scenes/composite/takes/approved/109/04/LS_boat-port-cargo-mover.mkv ). Sebagai gantinya, mereka cukup menekan tombol Tab ketika mereka memasukkan cukup banyak string unik. Misalnya, jika Anda tahu hanya ada satu direktori yang dimulai dengan h di tingkat root sistem Anda, Anda dapat mengetik /h lalu tekan Tab. Ini cepat, sederhana, efisien. Hal ini juga menegaskan jalan yang ada; jika Tab tidak menyelesaikan apa pun, Anda tahu bahwa Anda mencari di tempat yang salah atau Anda salah mengetik bagian jalur.

Namun, jika Anda memiliki banyak direktori yang memiliki lima atau lebih huruf pertama yang sama, Tab dengan tegas menolak untuk menyelesaikannya. Sementara di sebagian besar terminal modern itu akan (setidaknya) mengungkapkan file yang memblokirnya dari menebak apa yang Anda maksud, biasanya dibutuhkan dua penekanan Tab untuk mengungkapkannya; oleh karena itu, penyelesaian Tab sering kali menjadi interaksi huruf dan Tab di keyboard Anda sehingga Anda merasa seperti sedang berlatih untuk resital piano.

Zsh memecahkan gangguan kecil ini dengan menelusuri kemungkinan penyelesaian. Jika Anda mengetik ls ~/D dan tekan Tab, Zsh menyelesaikan perintah Anda dengan Dokumen pertama; jika Anda menekan Tab lagi, ia menawarkan Unduhan , dan seterusnya sampai Anda menemukan yang Anda inginkan.

Wildcard di Zsh

Wildcard berperilaku berbeda di Zsh daripada yang biasa digunakan pengguna Bash. Pertama-tama, mereka dapat dimodifikasi. Misalnya, jika Anda ingin membuat daftar semua folder di direktori Anda saat ini, Anda dapat menggunakan wildcard yang dimodifikasi:

% ls
dir0   dir1   dir2   file0   file1
% ls *(/)
dir0   dir1   dir2

Dalam contoh ini, (/) memenuhi syarat hasil wildcard sehingga Zsh hanya akan menampilkan direktori. Untuk membuat daftar file saja, gunakan (.) . Untuk membuat daftar symlink, gunakan (@) . Untuk membuat daftar file yang dapat dieksekusi, gunakan (*) .

% ls ~/bin/*(*)
fop  exify  tt

Zsh tidak mengetahui jenis file saja. Itu juga dapat mendaftar menurut waktu modifikasi, menggunakan konvensi pengubah wildcard yang sama. Misalnya, jika Anda ingin menemukan file yang telah diubah dalam delapan jam terakhir, gunakan mh pengubah (untuk diubah dan jam ) dan bilangan bulat negatif dari jam:

% ls ~/Documents/*(mh-8)
cal.org   game.org   home.org

Untuk menemukan file yang dimodifikasi lebih dari (misalnya) dua hari yang lalu, pengubah berubah menjadi md (untuk diubah dan hari ) dengan bilangan bulat positif:

% ls ~/Documents/*(+2)
holiday.org

Masih banyak lagi yang dapat Anda lakukan dengan pengubah dan qualifier wildcard, jadi baca halaman manual Zsh untuk detail selengkapnya.

Efek samping wildcard

Untuk menggunakan wildcard seperti yang Anda gunakan di Bash, terkadang mereka harus di-escape di Zsh. Misalnya, jika Anda menyalin beberapa file ke server Anda di Bash, Anda dapat menggunakan wildcard seperti ini:

$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14

Itu berfungsi di Bash, tetapi Zsh mengembalikan kesalahan karena mencoba memperluas variabel di sisi jarak jauh sebelum mengeluarkan scp memerintah. Untuk menghindari ini, Anda harus keluar dari variabel jarak jauh:

% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14

Jenis pengecualian kecil inilah yang dapat membuat Anda frustrasi ketika Anda beralih ke shell baru. Tidak banyak saat menggunakan Zsh (mungkin ada lebih banyak ketika beralih kembali ke Bash setelah mengalami Zsh) tetapi ketika itu terjadi, tetap tenang dan eksplisit. Anda jarang akan salah untuk mematuhi POSIX secara ketat—tetapi jika itu gagal, cari masalah untuk menyelesaikannya dan lanjutkan. Hyperpolyglot.org telah terbukti sangat berharga bagi banyak pengguna yang terjebak di satu cangkang di tempat kerja dan yang lainnya di rumah.

Dalam artikel Zsh saya berikutnya, saya akan menunjukkan cara memasang tema dan plugin untuk membuat Z-Shell Anda lebih Z-ier.


Linux
  1. Memulai dengan ls

  2. Memulai PostgreSQL di Linux

  3. Memulai SSH di Linux

  1. Memulai dengan GnuCash

  2. Memulai Samba untuk interoperabilitas

  3. Cara:Memulai dengan Ansible

  1. Memulai dengan Etcher.io

  2. Memulai dengan ekspresi reguler

  3. Memulai dengan Tmux