Hipermodern Terminal Araç Kutusu

May 10 2023
2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları. Tüm geliştiriciler terminal kullanır; bazıları için tüm iş akışı terminaldir Bu gönderi, 2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları olan Hypermodern Terminal Toolbox'ı tanıtıyor Terminal Emülatörü Olarak Kitty Kitty bir terminal emülatörüdür - GNOME Terminaline bir alternatiftir , Alacritty veya Windows Terminali.

2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları.

Kararlı Difüzyon ile oluşturuldu. Komut istemi: 'bilgisayar terminal ekranı: 0.3, terminal ekranına kabuk programı yazdırma: 0.3, erkek billout stili, canlı, parlak'. Tohum: 42.

Tüm geliştiriciler terminal kullanır; bazıları için tüm iş akışı terminaldir

Bu gönderi , 2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları olan Hipermodern Terminal Araç Kutusu'nu tanıtıyor

Bir Terminal Emülatörü Olarak Kitty

Kitty bir terminal öykünücüsüdür — GNOME Terminali, Alacritty veya Windows Terminaline bir alternatiftir.

`$ kitty +kitten temaları` çalıştırılarak erişilebilen yerleşik Kitty tema tarayıcısı.

Bir terminal öykünücüsü, terminalinizi çalıştıran programdır. Farklı işletim sistemleri (OS), işletim sisteminin bir parçası olarak veya kurulabilir üçüncü taraf programları olarak farklı terminal öykünücüleri sunar.

Kitty, GPU hızlandırmalı, üçüncü taraf bir terminal öykünücüsüdür. Kitty hızlı, son derece özelleştirilebilir ve açık kaynaklıdır.

kitty.confYapılandırma bir metin dosyası kullanılarak yapılır :

# $XDG_CONFIG_HOME/kitty/kitty.conf

font_family      Operator Mono Book
font_size 14.0
scrollback_lines 2000

İpucu — içinde Kitty ayarlarını değiştirirken kitty.conf, Kitty programını tamamen yeniden başlatmanız gerekecek.

Kabuk Olarak Zsh & Prezto

Zsh , C ile yazılmış bir kabuktur - Bash veya Fish'e bir alternatiftir.

Kabuk, bir terminal içinde çalışan bir işletim sistemi metin arayüzüdür. Kabuk komutları, dosya oluşturma ve programları çalıştırma gibi görevleri gerçekleştirir.

Zsh, Bash'ten daha fazla işlevsellik ve özelleştirilebilirlik sunan açık kaynaklı bir kabuktur.

Zsh bir dosya kullanılarak yapılandırılır .zshrc:

# ~/.zshrc

HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"

Prezto'nun özellikleri arasında sözdizimi vurgulama ve komut sekmesi tamamlama yer alır. Sekme tamamlama, yeni komut satırı araçlarını etkileşimli olarak keşfetmek için kullanışlıdır.

Prezto bir dosya kullanılarak yapılandırılır .zpreztorc:

# ~/.zpreztorc

zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'git' \
  'syntax-highlighting' \
  'history-substring-search' \
  'autosuggestions' \
  'prompt'

Bir Metin Editörü Olarak Neovim

Neovim , Lua dilinde yazılmış bir metin editörüdür — Vim, Nano veya Emacs'a bir alternatiftir.

Neovim, Vim'in popüler halefidir. Vimscript'te yazılan Vim eklentilerinin tüm ekosistemi, Lua'da yazılmış Neovim eklentilerinden oluşan hareketli bir ekosistemin üzerinde, Neovim'de çalışır.

İyi yapılandırılmış bir Neovim, otomatik tamamlama için dil sunucularına (VS Code'da bulunan aynı dil sunucuları), Treesitter ile sözdizimi vurgulamaya ve farklı türde listelerde arama yapmak için Telescope'a sahiptir.

Neovim'in yapılandırması, bir dosyadan başlayarak Lua'da yapılır init.lua:

-- $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'

İpucu — Hareketli Neovim ekosistemini kapsayan haftalık bir haber bülteni için Neovim'de Bu Hafta'ya abone olun.

Çoklu Terminaller için Tmux

Tmux , C ile yazılmış bir terminal çoklayıcıdır — Screen'e veya terminalleri birden çok pencerede çalıştırmaya bir alternatiftir.

Terminal çoklayıcılar, birden çok terminal oturumunu tek bir pencerede yönetmenize olanak tanır.

Tmux, özelleştirilebilir anahtar bağlamalarla size kalıcı oturumlar, pencere ve bölme yönetimi sağlar.

Tmux, birden çok terminali yönetmek için bir kavramlar hiyerarşisi kullanır:

  • Bölme, pencere içindeki dikdörtgen bir alandır. Her bölme ayrı bir terminal oturumu görüntüler.
  • Pencere, bir veya daha fazla bölmeyi tutan tam ekran bir kapsayıcıdır.
  • Oturum, bir veya daha fazla pencereden oluşan bir koleksiyondur.

Şununla yeni bir Tmux oturumu başlatabilirsiniz tmux new:

#  create a session named `work`
$ tmux new -s work

Çalışan bir Tmux oturumuna şununla yeniden bağlanabilirsiniz tmux attach:

#  reattach to last session
$ tmux attach

#  reattach the session named `work`
$ tmux attach -t work

  • Ctrl-b c: Yeni bir pencere oluşturun.
  • Ctrl-b n: Bir sonraki pencereye geçin.
  • Ctrl-b p: Önceki pencereye geçin.

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

Güzel Bir Bilgi İstemi için Yıldız Gemisi

Starship , Rust'ta yazılmış bir kabuk komut istemidir — Powerlevel10k veya Pure'a bir alternatiftir.

Bilgi istemi, geçerli dizin veya Git şubesi gibi bağlam sağlayan komut satırının özelleştirilebilir bir parçasıdır.

Starship size hızlı, özelleştirilebilir bir bilgi istemi sunar. Yapılandırma bir dosya kullanılarak yapılır starship.toml:

# $XDG_CONFIG_HOME/starship.toml

[username]
disabled = true

[hostname]
disabled = true

[git_status]
ahead = "↑"
behind = "↓"

[directory]
truncation_length = 2

Metin Arama için Ripgrep

Ripgrep , Rust'ta yazılmış bir metin dosyası arama aracıdır — grep veya find'e bir alternatiftir.

Ripgrep'in birincil özelliği hızdır — alternatif araçlardan daha hızlıdır.

Ripgrep'in temel kullanımı, bir dizinde bir kalıp aramaktır:

$ rg 'pattern' ~/project

alias g='rg -l --hidden --smart-case --line-buffered'

$ g 'some-pattern' some/directory

Bulanık Arama için fzf

fzf , Go'da yazılmış bulanık bir bulucudur — deterministik aramaya bir alternatiftir.

fzf, eksik bilgilerde normal ifade kalıplarıyla eşleşen bulanık bir arama algoritması kullanarak arama yapmanızı sağlar. Bu, siz yazarken yanlış yazımlarda bile arama sonuçlarının görünmesini sağlar.

fzf bir komut satırı programı olarak çalıştırılabilir:

$ fzf

#  fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>

fzf, find, grep veya Ripgrep gibi farklı arama arka uçlarıyla kullanılabilir.

FZF_DEFAULT_COMMANDİpucu — ortam değişkenini ayarlayarak Ripgrep'i fzf arka ucu olarak kullanın export FZF_DEFAULT_COMMAND='rg --files --hidden'.

Dosyaları Listeleme Exa

Exa , Rust'ta yazılmış bir dosya listeleme programıdır — ls ve ağaç'a bir alternatiftir.

Bir dosya listeleme programı size dosya ve dizin listelerini gösterir. Exa, simgeler, Git entegrasyonu ve çok yönlü sıralama seçenekleri gibi özellikler sunar.

Exa'nın birkaç farklı temel görünümü vardır:

#  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

Exa takma adlarım:

alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a' 
alias tree = 'exa --tree'

Dosyaları Görüntülemek İçin Yarasa

Bat , Rust ile yazılmış bir dosya görüntüleyicidir — cat'a bir alternatiftir.

Dosya görüntüleyici, bir dosyanın içeriğini görüntüleyen bir programdır.

Bat, sözdizimi vurgulama, Git entegrasyonu ve otomatik dosya sayfalama gibi işlevler sunar.

Yarasa, programı bir metin dosyasına işaret ederek kullanılır:

$ bat path/to/file

Metni Değiştirmek Üzgünüm

Sad , Rust'ta yazılmış bir yayın düzenleyicisidir — sed veya awk'ye bir alternatiftir.

Akış editörleri, metin akışları veya metin dosyaları üzerinde arama ve değiştirme işlemleri gerçekleştirir.

Sad (Uzay Çağı seD), önerilen değişiklikleri uygulamadan önce gösterir ve bunları gerçekleştirmeden önce hangi değişiklikleri yapacağınızı kontrol etmenize ve seçmenize olanak tanır.

Sad bir komut satırı programı olarak kullanılır:

$ 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/).

JSON ile Çalışmak için jq

jq , C dilinde yazılmış bir JSON işlemcisidir — fx, jp veya Python gibi bir dilde JSON işlemeye bir alternatiftir.

jq, API yanıtları, yapılandırma dosyaları ve veri depolarıyla çalışmak için yararlı olan JSON verilerini filtrelemenize, dönüştürmenize ve değiştirmenize olanak tanır.

Jq'daki ana fikir, JSON girişine uygulanan filtredir:

$ jq 'filter_expression' input.json

  • .key- bir anahtarın değerini çıkarmak,
  • .[]- bir diziden tüm değerleri ayıklayın,
  • .[2]- bir diziden üçüncü değeri çıkarın.

#  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

Navigasyon için zoxide

zoxide , Rust ile yazılmış bir terminal navigasyon yardımcı programıdır — cd, pushd ve popd'ye bir alternatiftir.

zoxide, ziyaret geçmişinizden dizinlere atlar. Her bir dizine, ne sıklıkta ve yakın zamanda ziyaret edildiklerine bağlı olarak bir puan atar.

zoxide bir komut satırı programı olarak kullanılır:

#  move to a folder that best matches `code`
$ z code

Git Geçmişini Görüntülemek için Tig

Tig, C ile yazılmış bir Git geçmişi görüntüleyicisidir — Git CLI veya Lazygit'i kullanmaya bir alternatiftir.

Tig, Git işlem geçmişinize göz atmak için gezilebilir, renk kodlu bir arayüz sağlar. Taahhütlerin aranmasına, taahhüt grafiğinin görüntülenmesine ve dosyaların farklı bir zamanda gösterilmesine izin verir.

Tig, bir komut satırı programı olarak çalıştırılır:

$ tig

Ortam Değişken Yönetimi için direnv

Direnv , kabuk ortam değişkenlerini yükler ve kaldırır — Go'da yazılır,$ source .env.

Direnv, siz farklı proje dizinleri arasında gezinirken ortam değişkenlerini otomatik olarak yükler ve kaldırır.

Direnv'in kullanılması, ortam değişkenlerinin manuel olarak yüklenmesini önler ve bir projedeki ortam değişkenlerinin başka bir projede ayarlanmasına karşı koruma sağlar.

Direnv, .envrcprojenize özgü değişkenleri tutmak için bir kabuk betiği olarak çalışan bir dosya kullanır:

# .envrc

export PROJECT_NAME="alpha"

$ direnv allow .

Yaygın bir uygulama, isteğe bağlı olarak bir secret veya private yüklemektir .envrc:

source_env_if_exists .envrc.secret

İpucu — direnv exec <path> <command>Belirli bir dizine gitmeden ortam yüklenmişken bir komutu çalıştırmak için kullanın.

Docker için Tembel Docker

Lazydocker, Go'da yazılan Docker kapsayıcılarını ve görüntülerini yönetir , Docker Desktop veya Docker CLI'ye bir alternatiftir.

Lazydocker, bir terminal kullanıcı arabirimi aracılığıyla kapları ve görüntüleri görüntülemeyi, başlatmayı, durdurmayı ve kaldırmayı kolaylaştırır. Ayrıca kapsayıcı durumu, günlükler ve kaynak kullanımına ilişkin gerçek zamanlı bir genel bakış sağlayabilir.

Lazydocker bir komut satırı programı olarak kullanılır:

$ lazydocker

Markdown Önizleme için Markserv

Markserv, Markdown dosyalarını bir tarayıcıda işler - Node.js'de yazılmıştır, Grip veya Markdown Preview'a bir alternatiftir.

Markserv, Markdown'ı HTML'ye gerçek zamanlı olarak işler ve değişiklikleri siz yaptıkça otomatik olarak yansıtır.

Markserv, GitHub aromalı Markdown'ı destekler; bu, kod bloklarını ve tabloları Github ile aynı şekilde biçimlendirdiği anlamına gelir. README.mdMarkserv , Github'a zorlamadan dosyaları önizlemek için harikadır .

8010 numaralı bağlantı noktasında bir Markserv sunucusu başlatmak için:

$ markserv -p 8010

Yerel Sunucuları Paylaşmak için Ngrok

ngrok , yerel sunucularınıza giden tüneller oluşturur — Go'da yazılmıştır; bu, Serveo, LocalTunnel veya PageKite'a bir alternatiftir.

ngrok, bir NAT veya güvenlik duvarının arkasındaki yerel bir sunucuyu internete açar. Bu, bir geliştirme sunucusunu ekibinizle paylaşmak için kullanışlıdır.

Aşağıdakileri çalıştırarak 8000 numaralı bağlantı noktasına bir tünel başlatabilirsiniz:

$ ngrok http 8000

Özet

Hipermodern Terminal Araç Kutusu :

  • GPU ile hızlandırılmış, son derece özelleştirilebilir bir terminal için Kitty ,
  • Kabuk için Zsh ve Zsh yapılandırması için Prezto ,
  • Bir metin editörü olarak Neovim ,
  • Birden fazla terminali yönetmek için Tmux ,
  • Güzel bir bilgi istemi için yıldız gemisi ,
  • Metin dosyalarını aramak için Ripgrep ,
  • bulanık arama için fzf ,
  • Dosyaları listelemek için Exa ,
  • Dosyaları görüntülemek için yarasa ,
  • Metin dosyalarında bul ve değiştir için üzücü ,
  • JSON ile çalışmak için jq ,
  • navigasyon için zoksit ,
  • Git geçmişini görüntülemek için Tig ,
  • ortam değişkeni yönetimi için direnv ,
  • Docker için Tembel Docker ,
  • Markdown önizlemesi için Markserv ,
  • yerel sunucuları internete maruz bırakmak için ngrok .

Terminal ustası olmak için her seferinde bir araç öğrenin

İlk olarak https://www.datasciencesouth.com adresinde yayınlanmıştır .

Seviye Atlama Kodlama

Topluluğumuzun bir parçası olduğunuz için teşekkürler! Gitmeden önce:

  • Hikaye için alkışlayın ve yazarı takip edin
  • Seviye Atlama Kodlama yayınında daha fazla içerik görüntüleyin
  • Ücretsiz kodlama mülakat kursu ⇒ Kursu Görüntüle
  • Bizi takip edin: Twitter | LinkedIn | Bülten