Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Tools & Tips

Cara Menyesuaikan Command Prompt-Mu

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Andy Nur (you can also view the original English article)

Akhir-akhir ini, saya sering mendapat pertanyaan ini: "bagaimana kamu membuat terminalmu terlihat seperti itu?" Jika kamu memperhatikan terminal saya dan ingin tahu bagaimana cara mengaturnya, ini adalah tutorial untukmu! Tentu saja, apa yang kamu pelajari di sini akan cukup untuk membantumu memulai membuat command prompt kustommu sendiri, juga!


Sebelum kita mulai, saya ingin membuat sesuatu yang sangat jelas. Saya tentu saja penggemar command line, tetapi saya sama sekali bukan command line pro. Saya merasa betah di terminal, tetapi saya jauh dari mengetahui segalanya. Jadi inilah masalahnya: Saya akan menunjukkan kepadamu bagaimana saya mengatur terminal saya, tetapi itu tidak berarti saya akan dapat menjelaskan setiap baris kode yang akan kita lihat. Ada beberapa hal di sini yang merupakan cara mereka hanya karena itulah yang berhasil ... dan saya tidak selalu 100% tahu mengapa.

Dengan menyangkal itu, mari kita lihat apa yang kita lakukan.


Menemui Produk Jadi

Beginilah tampilan command prompt saya:

Jika kamu tidak yakin apa yang kamu cari di sana, izinkan saya menjelaskan:

  • Pada warna pirus, kita memiliki nama komputer; dalam kasus saya, itu mothership. Itu diikuti oleh titik dua.
  • Selanjutnya, kita memiliki direktori kerja, dalam warna kuning-oranye.
  • Jika kita berada di repositori git, kita memiliki beberapa info tentang itu selanjutnya. Hal utama di sini adalah nama branch/cabang (master atau tilt_in_post_class di tangkapan layar). Juga, jika direktori kerja bersih, teks itu muncul berwarna hijau; jika tidak, akan muncul warna merah.
  • Akhirnya, kita memiliki indikator baterai. Jika kesepuluh segitiga semuanya hijau dan terisi, semuanya dinyalakan. Saat baterai saya kosong, segitiga akan kosong dan akhirnya berubah merah. Tentu saja, jika kamu tidak menggunakan laptop seperti saya, ini tidak akan berguna bagimu.

Mempersiapkan Environment

Sekarang mari kita kumpulkan beberapa bagian awal, sebelum benar-benar menulis beberapa skrip shell.

Pertama, ada skema warnanya. Kamu mungkin mengenalinya sebagai skema warna Terpolarisasi Ethan Schoonover. Ini sangat luar biasa, dan saya sudah menggunakannya di terminal dan di Vim sejak saya menemukannya. Jika kamu ingin menggunakannya di Terminal, kamu harus menginstal temanya. Terminal di Snow Leopard tidak mendukung xterm-256color, jadi kamu harus mengikuti beberapa petunjuk khusus pada halaman Solarized GitHub untuk membuatnya berfungsi jika kamu masih menggunakan OS itu.

Jika kamu telah pindah ke Lion, kamu dapat menginstal file .terminal yang akan kamu temukan di folder xterm-256color. Setelah kamu menginstalnya (cukup klik dua kali), kamu harus dapat memilih yang kamu inginkan di preferensi Terminal. Jangan lupa untuk mengaturnya sebagai skema default.

Hal berikutnya yang perlu diketahui adalah bahwa saya tidak menggunakan bash shell default di Terminal saya. Sebagai gantinya, saya telah beralih ke zsh, yang pada dasarnya lebih kompatibel dengan bash, tetapi memiliki beberapa tambahan yang bagus, seperti penyelesaian tab yang lebih baik. Berikut cara melakukannya: buka preferensi sistem Mac dan buka "User & Groups". Buka kunci panel dengan mengklik kunci di bagian bawah dan masukkan kata sandi-mu. Kemudian, klik kanan pada penggunmu dalam daftar dan pilih "Advanced Options", Pada field "Login Shell", beralih dari /bin/bash ke /bin/zsh. Sesederhana itu.

Font

Langkah selanjutnya: dapatkan font yang tepat. Saya menggunakan Inconsolata pada 15pt. Ini adalah font monospace gratis yang saya suka tatap sepanjang hari. (Selain menggunakannya di Terminal, saya menggunakannya dalam Vim dan TextEdit.) Kamu dapat mengatur font default-mu dari dalam preferensi Terminal, tepat di mana kamu memilih skema warna.

Hal kecil lainnya adalah ukuran jendelmu: Buka Terminal Preferences > Settings dan klik tab Window; sebagian turun, kamu dapat memilih jumlah kolom dan baris yang kamu inginkan; Saya menggunakan 130 kolom dengan 30 baris.

Baterai

Ingat indikator level baterai? Nah, itu membutuhkan sedikit skrip dari pengembang Steve Losh; cukup salin ke dalam file dan simpan sebagai file python; karena ~/bin ada di PATH terminal saya, saya telah menyimpan file ke ~/bin/batcharge.py Saat ia mencatat, skrip ini hanya akan berfungsi pada Mac OS X, jadi jika kamu menjalankan zsh di sistem lain, kamu harus mengabaikan bagian ini.

Zsh

Terakhir, tetapi tentu saja tidak sedikit, ada oh-my-zsh. Menurut repo Github, ini hanya "Sejumlah fungsi, pembantu pelengkap otomatis, dan hal-hal yang membuatmu berteriak 'OH MY ZSHELL!'"

Kenapa menggunakannya? Bagi saya, saya memutuskan untuk mencobanya pada satu titik dan saya membiarkannya terpasang. Jika kamu sering menggunakan terminal, lihat-lihat pada oh-my-zsh sebentar jika ada waktu. Kamu mungkin terkejut dengan apa yang akan kamu temukan. Menginstal oh-my-zsh cukup sederhana: cukup ikuti instruksi pengaturan di README; mereka cukup mudah.

Sekarang kita memiliki semua bagian yang diperlukan. Kita siap untuk benar-benar mulai membuat terminal khusus kita.


Membuat File

Ketika kamu menginstal oh-my-zsh, itu diinstal ke ~/.oh-my-zsh. Pop yang terbuka. Kamu akan melihat dua folder catatan: themes dan templates. Di dalam templates, kamu akan menemukan file bernama zshrc.zsh-template Ini adalah template untuk file ~/.zshrc mu. Jika kamu telah menyesuaikan terminalmu sebelumnya, kamu akan tahu bahwa file .bashrc adalah tempat penyesuaianmu disimpan saat kamu menggunakan bash shell. .zshrc adalah hal yang sama, kecuali untuk shell zsh. Jadi buka file template itu; kamu tidak perlu tahu apa yang sebenarnya terjadi; lagipula, ada banyak komentar dalam file yang mungkin tidak masuk akal. Satu hal di sini penting untuk digunakan. Perhatikan baris yang menyatakan ini:

Itulah nama tema yang digunakan pada terminamu. Lihat di folder themes: kamu akan melihat file robbyrussel.zsh-theme. Apa yang akan kita lakukan adalah membuat tema sendiri, sehingga kamu dapat mengganti string itu dengan nama file baru kita. Saya secara tidak sadar menyebut milik saya "doubleend" karena masuk ke kedua sisi terminal.

Kustomisasi lain yang ingin kamu lakukan pada environment zsh dapat dilakukan dalam file ini. Jika kamu sering menggunakan terminal, lihat plugins oh-my-zsh (di folder plugins): banyak sekali hal yang berguna di sana.

Jangan lupa menyalin ke zshrc.zsh-template ke direktori home-mu dan ganti namanya menjadi .zshrc sebelum kamu melakukan perubahan. Sekarang, di folder themes, buat file dengan nama tema yang kamu atur di file .zshr-mu. Pastikan kamu memberikan ekstensi .zsh-theme. Kita siap membangun tema khusus kita.


Membangun Tema Khusus

Hal terpenting dalam file tema-mu adalah variabel PROMPT. Isinya adalah prompt perintamu. Untuk mendapatkan ide tentang ini, mulailah dengan ini di file tema-mu:

Buka jendela Terminal baru dan kamu akan melihat ini:

Baiklah, mari kita mulai bekerja. Kita harus menulis beberapa fungsi, tetapi kita akan mulai dengan variabel PROMPT. Mungkin tidak terlihat ketika melihat terminal, tetapi sebenarnya ada tiga baris untuk prompt saya. Yang pertama adalah baris kosong, hanya untuk memberi saya ruang bernapas. Yang kedua memiliki semua informasi, dan yang ketiga memiliki panah. Baris ketiga adalah tempat kamu mengetik perintah. Jadi, inilah awal kita:

Ya, kamu dapat melakukan string multiline yang mudah di skrip shell. Tapi ada apa dengan $reset_color? Itu variabel yang didefinisikan oleh oh-my-zsh untuk kita; itu mengatur ulang warna output. Ini membutuhkan pengalihan singkat untuk membahas bagaimana kita mewarnai kata-kata yang berbeda pada prompt. Kamu lihat, ada kode—serangkaian karakter—yang mengubah teks berikut menjadi warna. Jelas, ada kode untuk setiap warna yang tersedia. Jangan khawatir, ada variabel lain untuk warna lainnya; kamu tidak harus mempelajari kode. Pada saat kita sampai ke baris ketiga, kita ingin mengatur ulang ke warna teks default; jadi, kita menggunakan variabel $reset_color.

Jika kamu ingin tahu tentang karakter panah, ini adalah panah kanan Unicode (U+2192, →). Itu saja.

Jadi, sekarang prompt kita terlihat seperti ini:

Tampak langsing. Sekarang mari kita tambahkan nama komputer dan direktori kerja. Ini semua untuk baris kedua dari variabel PROMPT kita.

Kita mulai dengan mengatur warna teks ke cyan; tampaknya kita mendapatkan kode warna itu dari array asosiatif atau hash; sementara saya tidak menggunakannya, ada hash $bg yang mengubah warna latar belakang daripada warna latar depan (teks).

Setelah mengatur warna, kami memiliki %m ini untuk menampilkan nama komputer. Setelah titik dua dan spasi, kita mengganti warna teks menjadi kuning. Selanjutnya, kita menggunakan tanda dolar dan parens untuk menambahkan output dari fungsi get_pwd. Ini akan menampilkan direktori kerja kita saat ini, kita sedikit berliku. Jika saya di direktori home, saya tidak ingin melihat /Users/andrew, saya ingin melihat ~ sebagai gantinya. Jadi, inilah fungsinya:

Shell fungsi cukup mudah jika kamu telah menulis JavaScript sebelumnya; sintaksis yang identik. Saya tidak yakin dari mana sintaks pencarian dan ganti itu berasal, tetapi yang terlihat sangat mirip dengan sintaks pencarian dan pengantian Vim: Jika PWD menyertakan teks $HOME (variabel sistem untuk direktori home-mu), maka ganti dengan ~.

Sekarang, inilah yang terjadi:

Baik! Sekarang sampai pada bagian yang sulit. Kamu lihat, saya ingin merata kanan-kan informasi git dan indikator baterai. Karena tidak ada cara untuk benar-benar merata kanan-kan, kita harus menghitung jumlah karakter teks yang kita inginkan, kurangi dari lebar jendela, dan tambahkan spasi itu. Agak berantakan, dan kodenya cukup berantakan, tapi hanya itu yang bisa saya temukan yang benar-benar berfungsi.

Siap? Kita menyisipkan spasi dengan fungsi yang saya sebut get_spacing. Jadi tambahkan $(get_spacing) ke akhir baris kedua kita, jadi sekarang terlihat seperti ini:

Sekarang, itu fungsinya. Tentu saja, ini dia shell-nya:

Ada empat bagian di dalamnya. Ini yang pertama.

Kita mulai dengan mendapatkan output dari fungsi git_prompt_info dan menyimpannya dalam variabel lokal, git. Selanjutnya, jika panjang string itu bukan 0, kita setel ulang git sehingga sekarang panjang string minus 10. Jika tidak, kita mengatur ulang git ke 0. Ini sepertinya tidak masuk akal, sampai kamu menyadari apa yang kita coba lakukan di sini. Kita ingin mengetahui berapa banyak karakter "slots" yang digunakan informasi git. Bagian yang sulit adalah kita menggunakan kembali variabel git: pertama memegang string, lalu memegang angka yang mewakili panjang jumlah karakter informasi git kita. Jika git panjangnya nol karakter, kita atur git ke 0; jika tidak (artinya kita berada dalam repositori git), kita atur git ke jumlah karakter dalam string, minus 10. Ini karena jumlah karakter string menyertakan kode warna, yang sebenarnya tidak terlihat, sehingga tidak mengambil lebar. Double parens? Oh, mereka terbiasa melakukan matematika.

Kita melakukan hal yang sama untuk output baterai:

Pada bagian ketiga, kita mencari tahu berapa banyak ruang yang akan kita butuhkan:

Sedikit lebih banyak matematika: kita mulai dengan COLUMNS, yang merupakan jumlah karakter Terminal lebar. Kita mengurangi semua nilai yang sesuai (angka 3 adalah untuk dua spasi dan titik dua), dan kita berakhir dengan fakta bahwa kita membutuhkan jumlah ruang termwidth antara bagian kiri dan kanan dari prompt.

Sekarang, mari kita buat string yang panjangnya sejumlah termwidth:

Loop for-in yang sederhana memungkinkan kita membuat string; maka, kita kembalikan ini.

Kamu tidak dapat mengatakan bahwa spasi kosong telah ditambahkan, jadi saya telah menambahkan beberapa teks tiruan sehingga kamu dapat melihat bahwa itu telah ditambahkan.

Selanjutnya, info Git. Kita menambahkan $(git_prompt_info) ke akhir baris prompt 2; seperti yang kamu tahu, itu adalah panggilan fungsi.

Perhatikan bahwa kita tidak mengubah warna sebelum memuat info Git: fungsi akan menanganinya, karena itu tergantung pada status repositori.

Dan inilah fungsinya:

Baris pertama hanya memeriksa untuk melihat apakah kita berada di repositori Git. Jika tidak, kita akan return. Jika ya, baris berikutnya melakuakn echo info yang benar. Perhatikan dua hal di sini: pertama, kita menggunakan dua variabel: $ZSH_THEME_GIT_PROMPT_PREFIX dan $ZSH_THEME_GIT_PROMPT_SUFFIX. Saya akan menunjukkan kepadamu bagaimana ini didefinisikan dalam sedetik. Hal lainnya adalah dua fungsi lain yang disebut. Ini disediakan oleh oh-my-zsh. Fungsi current_branch baru hanya mengembalikan cabang saat ini. Tetapi parse_git_dirty lebih menarik. Jika cabang saat ini kotor (memiliki perubahan yang tidak dikomit), fungsi tersebut akan menghasilkan $ZSH_THEME_GIT_PROMPT_DIRTY; jika tidak maka akan menghasilkan $ZSH_THEME_GIT_PROMPT_CLEAN.

Saya memiliki empat variabel yang didefinisikan seperti ini:

Berdasarkan variabel-variabel ini, repo pada cabang master yang bersih akan menampilkan [git:master] berwarna hijau; cabang master yang kotor akan menghasilkan +[git:master].

Dan yang terakhir, kita memanggil fungsi battery_charge:

Inilah fungsi battery_charge:

Jika file itu ada, kita menjalankan file itu dan mengulang hasilnya. Perhatikan bahwa kita menggunaka backtick ( ` ) di sekitar menjalankan file (itu bukan tanda kutip tunggal): ini memungkinkan kita untuk mengeksekusi serangkaian kode seolah-olah itu di terminal. Jika file tidak ada, kita hanya melakukan echo string kosong.

Dan dengan itu, kita selesai! Inilah yang kita akhiri dengannya:


Kesimpulan

Nah, seperti itulah terminal saya. Saya telah melakukan fork/cabang-dua proyek oh-my-zsh di GitHub dan menambahkan tema ini, sehingga kamu dapat menemukannya di sana. Jika kamu tertarik melihat dotfiles saya yang lain, saya juga mendapatkannya di GitHub.

Namun, saya belum selesai dengan pengaturan command line saya. Sementara saya belum membuat perubahan dalam beberapa saat, saya berpikir untuk memasukkan nama pengguna saat ini (karena saya menggunakan tema yang sama di server saya), dan juga beberapa info RVM. Juga, saya tidak yakin mengapa saya memiliki kata git di sana; Saya kira saya awalnya memiliki pengaturan yang bekerja dengan sistem kontrol beberapa versi ... Bagaimanapun, inti dari semua ini adalah bahwa ini merupakan sesuatu yang akan terus-menerus kamu atur. Ketika saya melakukan perubahan, saya pasti akan melakukan push ke GitHub, sehingga kamu akan dapat melihatnya di sana.

Biarkan saya meninggalkamu dengan beberapa tautan yang berguna untuk meretas di command line:

Selamat bersenang-senang!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.