Kotak Alat Terminal Hipermodern
Alat terminal, shell, dan baris perintah menetapkan standar pada tahun 2023.
Semua pengembang menggunakan terminal; untuk beberapa, seluruh alur kerja mereka adalah terminal
Posting ini memperkenalkan Kotak Alat Terminal Hypermodern — alat terminal, shell, dan baris perintah yang menetapkan standar pada tahun 2023
Kitty sebagai Terminal Emulator
Kitty adalah emulator terminal — alternatif dari Terminal GNOME, Alacritty, atau Terminal Windows.
Emulator terminal adalah program yang menjalankan terminal Anda. Sistem operasi (OS) yang berbeda menawarkan emulator terminal yang berbeda, baik sebagai bagian dari OS atau sebagai program pihak ketiga yang dapat diinstal.
Kitty adalah emulator terminal pihak ketiga yang dipercepat GPU. Kitty cepat, sangat dapat disesuaikan, dan open source.
Konfigurasi dilakukan menggunakan kitty.conf
file teks:
# $XDG_CONFIG_HOME/kitty/kitty.conf
font_family Operator Mono Book
font_size 14.0
scrollback_lines 2000
Tip — saat mengubah pengaturan Kitty di kitty.conf
, Anda harus memulai ulang program Kitty sepenuhnya.
Zsh & Prezto sebagai Shell
Zsh adalah shell yang ditulis dalam C — ini merupakan alternatif dari Bash atau Fish.
Shell adalah antarmuka teks sistem operasi yang berjalan di dalam terminal. Perintah Shell melakukan tugas seperti membuat file dan menjalankan program.
Zsh adalah shell open source, menawarkan lebih banyak fungsionalitas dan kemampuan penyesuaian daripada Bash.
Zsh dikonfigurasi menggunakan .zshrc
file:
# ~/.zshrc
HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"
Fitur Prezto termasuk penyorotan sintaks dan penyelesaian tab perintah. Penyelesaian tab berguna untuk menjelajahi alat baris perintah baru secara interaktif.
Prezto dikonfigurasi menggunakan .zpreztorc
file:
# ~/.zpreztorc
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'git' \
'syntax-highlighting' \
'history-substring-search' \
'autosuggestions' \
'prompt'
Neovim sebagai Editor Teks
Neovim adalah editor teks yang ditulis dalam Lua — ini merupakan alternatif dari Vim, Nano atau Emacs.
Neovim adalah penerus Vim yang populer. Seluruh ekosistem plugin Vim yang ditulis dalam Vimscript berfungsi di Neovim, di atas ekosistem plugin Neovim yang ramai yang ditulis dalam Lua.
Neovim yang terkonfigurasi dengan baik memiliki server bahasa untuk pelengkapan otomatis (server bahasa yang sama tersedia di Kode VS), penyorotan sintaks dengan Treesitter, dan Teleskop untuk mencari melalui berbagai jenis daftar.
Konfigurasi Neovim dilakukan di Lua — dimulai dengan sebuah init.lua
file:
-- $XDG_CONFIG_HOME/nvim/init.lua
-- set size of a tab to be 4
-- vim command line `:set tabstop=2`
-- vimscript `set tabstop=2`
vim.opt.set.tabstop = 2
-- run vimscript in lua
vim.cmd([[set tabstop=2]])
-- set variable
-- vimscript `let g:zoom#statustext = 'Z'`
vim.g['zoom#statustext'] = 'Z'
Kiat — berlangganan Minggu Ini di Neovim untuk buletin mingguan yang meliput ekosistem Neovim yang ramai.
Tmux untuk Banyak Terminal
Tmux adalah multiplexer terminal yang ditulis dalam C — ini merupakan alternatif untuk Screen, atau menjalankan terminal di banyak jendela.
Multiplexer terminal memungkinkan Anda mengelola beberapa sesi terminal dalam satu jendela.
Tmux memberi Anda sesi persisten, manajemen jendela dan panel dengan pengikatan kunci yang dapat disesuaikan.
Tmux menggunakan hierarki konsep untuk mengelola banyak terminal:
- Panel adalah area persegi panjang di dalam jendela. Setiap panel menampilkan sesi terminal terpisah.
- Jendela adalah wadah layar penuh yang menampung satu atau beberapa panel.
- Sesi adalah kumpulan dari satu atau lebih jendela.
Anda dapat memulai sesi Tmux baru dengan tmux new
:
# create a session named `work`
$ tmux new -s work
Anda dapat memasang kembali ke sesi Tmux yang sedang berjalan dengan tmux attach
:
# reattach to last session
$ tmux attach
# reattach the session named `work`
$ tmux attach -t work
Ctrl-b c
: Membuat jendela baru.Ctrl-b n
: Beralih ke jendela berikutnya.Ctrl-b p
: Beralih ke jendela sebelumnya.
# ~/.tmux.conf
set -g default-terminal "screen-256color"
setw -g mode-keys vi
set -g status-left "#[fg=green,bold]Session: #S #[fg=white,bold]| #[fg=yellow,bold]Window: #W"
set-option -g prefix C-a
Starship untuk Permintaan Cantik
Starship adalah prompt shell yang ditulis dalam Rust — ini merupakan alternatif dari Powerlevel10k atau Pure.
Prompt adalah bagian yang dapat disesuaikan dari baris perintah yang menyediakan konteks seperti direktori saat ini atau cabang Git.
Starship memberi Anda prompt yang cepat dan dapat disesuaikan. Konfigurasi dilakukan menggunakan starship.toml
file:
# $XDG_CONFIG_HOME/starship.toml
[username]
disabled = true
[hostname]
disabled = true
[git_status]
ahead = "↑"
behind = "↓"
[directory]
truncation_length = 2
Ripgrep untuk Mencari Teks
Ripgrep adalah pencari file teks yang ditulis dalam Rust — ini merupakan alternatif untuk grep atau find.
Fitur utama Ripgrep adalah kecepatan — lebih cepat daripada alat alternatif.
Penggunaan dasar Ripgrep adalah untuk mencari pola di direktori:
$ rg 'pattern' ~/project
alias g='rg -l --hidden --smart-case --line-buffered'
$ g 'some-pattern' some/directory
fzf untuk Pencarian Fuzzy
fzf adalah pencari fuzzy yang ditulis dalam Go — ini merupakan alternatif untuk pencarian deterministik.
fzf memungkinkan Anda untuk mencari menggunakan algoritma pencarian fuzzy yang cocok dengan pola regex pada informasi yang tidak lengkap. Ini memungkinkan hasil pencarian muncul saat Anda mengetik, bahkan dengan salah eja.
fzf dapat dijalankan sebagai program baris perintah:
$ fzf
# fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>
fzf dapat digunakan dengan backend pencarian yang berbeda, seperti find, grep atau Ripgrep.
Tip — gunakan Ripgrep sebagai backend fzf dengan menyetel FZF_DEFAULT_COMMAND
variabel lingkungan export FZF_DEFAULT_COMMAND='rg --files --hidden'
.
Exa untuk Daftar File
Exa adalah program daftar file yang ditulis dalam Rust — ini merupakan alternatif dari ls dan tree.
Program daftar file menampilkan daftar file dan direktori. Exa menawarkan fitur seperti ikon, integrasi Git, dan opsi penyortiran serbaguna.
Exa memiliki beberapa pandangan dasar yang berbeda:
# list as a grid
$ exa -G
bp-historical-data cities data-science-south-data predict-newspapers README.md titanic
# list each item on one line
$ exa -1
bp-historical-data
cities
data-science-south-data
predict-newspapers
README.md
titanic
# list as a table - same as `ls -l`
$ exa -l
drwxr-xr-x - adam 26 Apr 20:20 bp-historical-data
drwxr-xr-x - adam 14 Feb 16:42 cities
drwxr-xr-x - adam 26 Apr 20:25 data-science-south-data
drwxr-xr-x - adam 28 Apr 14:52 predict-newspapers
.rw-r--r-- 124 adam 29 Apr 15:20 README.md
drwxr-xr-x - adam 26 Apr 17:31 titanic
$ exa --tree --level=2
├── bp-historical-data
│ ├── __pycache__
│ ├── dashboard.py
│ ├── data
│ ├── notebooks
│ ├── README.md
│ └── requirements.txt
├── README.md
└── titanic
├── data
├── requirements.txt
├── titanic.ipynb
├── titanic.md
└── titanic.py
Alias saya untuk Exa adalah:
alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a'
alias tree = 'exa --tree'
Kelelawar untuk Melihat File
Bat adalah penampil file yang ditulis dalam Rust — alternatif untuk cat.
Penampil file adalah program yang menampilkan konten file.
Bat menawarkan fungsionalitas seperti penyorotan sintaks, integrasi Git, dan paging file otomatis.
Bat digunakan dengan mengarahkan program ke file teks:
$ bat path/to/file
Sedih untuk Mengganti Teks
Sad adalah editor aliran yang ditulis dalam Rust — alternatif untuk sed atau awk.
Editor aliran melakukan operasi pencarian dan penggantian pada aliran teks atau file teks.
Sad (Space Age seD) menunjukkan penggantian yang diusulkan sebelum menerapkannya, memungkinkan Anda untuk memeriksa dan memilih penggantian mana yang harus dilakukan sebelum melakukannya.
Sad digunakan sebagai program baris perintah:
$ sad '<pattern>' '<replacement>'
$ cat README.md
# Data Science South Projects
Example projects for the courses at [Data Science South](https://www.datasciencesouth.com/).
$ exa -1 | sad "courses" "modules"
$ cat README.md
# Data Science South Projects
Example projects for the modules at [Data Science South](https://www.datasciencesouth.com/).
jq untuk Bekerja dengan JSON
jq adalah prosesor JSON yang ditulis dalam C — ini merupakan alternatif untuk fx, jp, atau memproses JSON dalam bahasa seperti Python.
jq memungkinkan Anda memfilter, mengubah, dan memanipulasi data JSON, yang berguna untuk bekerja dengan respons API, file konfigurasi, dan penyimpanan data.
Ide sentral dalam jq adalah filter, yang diterapkan pada masukan JSON:
$ jq 'filter_expression' input.json
.key
- ekstrak nilai kunci,.[]
- ekstrak semua nilai dari array,.[2]
- ekstrak nilai ketiga dari array.
# extract the `name` key
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.name'
"Alice"
# extract the second element from the `data` list
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.data[1]'
12
zoksida untuk Navigasi
zoksida adalah utilitas navigasi terminal yang ditulis dalam Rust — alternatif untuk cd, pushd, dan popd.
zoksida melompat ke direktori dari riwayat kunjungan Anda. Itu memberikan skor ke setiap direktori berdasarkan seberapa sering dan baru-baru ini mereka telah dikunjungi.
zoksida digunakan sebagai program baris perintah:
# move to a folder that best matches `code`
$ z code
Tig untuk Melihat Riwayat Git
Tig adalah penampil riwayat Git yang ditulis dalam C — ini merupakan alternatif untuk menggunakan Git CLI atau Lazygit.
Tig menyediakan antarmuka berkode warna yang dapat dinavigasi untuk menjelajahi riwayat komit Git Anda. Ini memungkinkan pencarian komit, melihat grafik komit dan menampilkan file pada titik waktu yang berbeda.
Tig dijalankan sebagai program baris perintah:
$ tig
direnv untuk Manajemen Variabel Lingkungan
direnv memuat dan membongkar variabel lingkungan shell — ditulis dalam Go, ini merupakan alternatif untuk menggunakan$ source .env
.
direnv secara otomatis memuat & membongkar variabel lingkungan saat Anda menavigasi di antara direktori proyek yang berbeda.
Menggunakan direnv menghindari pemuatan variabel lingkungan secara manual, dan melindungi terhadap variabel lingkungan dari satu proyek yang disetel di proyek lain.
direnv menggunakan .envrc
file untuk menyimpan variabel khusus untuk proyek Anda, yang dijalankan sebagai skrip shell:
# .envrc
export PROJECT_NAME="alpha"
$ direnv allow .
Praktik yang umum adalah secara opsional memuat secret atau private .envrc
:
source_env_if_exists .envrc.secret
Tip — Gunakan direnv exec <path> <command>
untuk menjalankan perintah dengan lingkungan dimuat untuk direktori tertentu tanpa menavigasi ke sana.
Lazydocker untuk Docker
Lazydocker mengelola wadah dan gambar Docker — ditulis dalam Go, ini merupakan alternatif dari Docker Desktop atau Docker CLI.
Lazydocker memudahkan untuk melihat, memulai, menghentikan, dan menghapus kontainer dan gambar melalui UI terminal. Itu juga dapat memberikan ikhtisar real-time tentang status kontainer, log, dan penggunaan sumber daya.
Lazydocker digunakan sebagai program baris perintah:
$ lazydocker
Markserv untuk Pratinjau Markdown
Markserv merender file Markdown di browser — ditulis dalam Node.js, ini merupakan alternatif dari Grip atau Markdown Preview.
Markserv merender Markdown ke HTML secara real time, secara otomatis mencerminkan perubahan saat Anda membuatnya.
Markserv mendukung Markdown rasa GitHub, yang artinya memformat blok kode & tabel sama seperti Github. Markserv bagus untuk mempratinjau README.md
file tanpa mendorong ke Github.
Untuk memulai server Markserv pada port 8010:
$ markserv -p 8010
Ngrok untuk Berbagi Server Lokal
ngrok membuat terowongan ke server lokal Anda — ditulis dalam Go, ini merupakan alternatif dari Serveo, LocalTunnel, atau PageKite.
ngrok memaparkan server lokal di belakang NAT atau firewall ke internet. Ini berguna untuk berbagi server pengembangan dengan tim Anda.
Anda dapat memulai terowongan ke port 8000 dengan menjalankan:
$ ngrok http 8000
Ringkasan
Toolbox Terminal Hypermodern adalah:
- Kitty untuk akselerasi GPU, terminal yang sangat dapat disesuaikan,
- Zsh untuk konfigurasi Shell & Prezto untuk Zsh,
- Neovim sebagai editor teks,
- Tmux untuk mengelola banyak terminal,
- Starship untuk prompt yang cantik,
- Ripgrep untuk mencari file teks,
- fzf untuk pencarian kabur,
- Exa untuk daftar file,
- Kelelawar untuk melihat file,
- Sedih untuk menemukan dan mengganti dalam file teks,
- jq untuk bekerja dengan JSON,
- zoksida untuk navigasi,
- Tig untuk melihat riwayat Git,
- direnv untuk manajemen variabel lingkungan,
- Lazydocker untuk Docker,
- Markserv untuk mempratinjau Markdown,
- ngrok untuk mengekspos server lokal ke internet.
Pelajari satu per satu alat dengan mantap untuk menjadi master terminal
Awalnya diterbitkan di https://www.datasciencesouth.com .
Tingkatkan Pengodean
Terima kasih telah menjadi bagian dari komunitas kami! Sebelum kamu pergi:
- Tepuk tangan untuk ceritanya dan ikuti penulisnya
- Lihat lebih banyak konten di publikasi Level Up Coding
- Kursus wawancara coding gratis ⇒ Lihat Kursus
- Ikuti kami: Twitter | LinkedIn | Buletin