Hipermodern Terminal Araç Kutusu
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 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.
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.conf
Yapı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, .envrc
projenize ö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.md
Markserv , 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