Kotak Alat Terminal Hipermodern

May 10 2023
Alat terminal, shell, dan baris perintah menetapkan standar pada tahun 2023. Semua pengembang menggunakan terminal; bagi sebagian orang, seluruh alur kerja mereka adalah terminal Posting ini memperkenalkan Hypermodern Terminal Toolbox — 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.

Alat terminal, shell, dan baris perintah menetapkan standar pada tahun 2023.

Dibuat dengan Difusi Stabil. Prompt: 'layar terminal komputer: 0,3, pencetakan program shell ke layar terminal: 0,3, gaya billout pria, bersemangat, cerah'. Benih: 42.

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.

Peramban tema Kitty bawaan, dapat diakses dengan menjalankan `$ kitty + tema kucing`.

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.conffile 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 .zshrcfile:

# ~/.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 .zpreztorcfile:

# ~/.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.luafile:

-- $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.tomlfile:

# $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_COMMANDvariabel 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 .envrcfile 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.mdfile 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