Hipernowoczesny zestaw narzędzi terminala
Narzędzia terminala, powłoki i wiersza poleceń wyznaczają standardy w 2023 roku.
Wszyscy programiści używają terminali; dla niektórych cały przepływ pracy to terminal
Ten post przedstawia Hypermodern Terminal Toolbox — narzędzia terminala, powłoki i wiersza poleceń wyznaczające standardy w 2023 roku
Kitty jako emulator terminala
Kitty to emulator terminala — alternatywa dla terminala GNOME, Alacritty czy Windows Terminal.
Emulator terminala to program, który uruchamia twój terminal. Różne systemy operacyjne (OS) oferują różne emulatory terminali, jako część systemu operacyjnego lub jako instalowalne programy innych firm.
Kitty to akcelerowany przez GPU emulator terminala innej firmy. Kitty jest szybka, wysoce konfigurowalna i ma otwarte oprogramowanie.
Konfiguracja odbywa się za pomocą kitty.conf
pliku tekstowego:
# $XDG_CONFIG_HOME/kitty/kitty.conf
font_family Operator Mono Book
font_size 14.0
scrollback_lines 2000
Wskazówka — podczas zmiany ustawień Kitty w kitty.conf
, będziesz musiał całkowicie zrestartować program Kitty.
Zsh & Prezto jako powłoka
Zsh to powłoka napisana w C — jest alternatywą dla Bash czy Fish.
Powłoka to tekstowy interfejs systemu operacyjnego działający wewnątrz terminala. Polecenia powłoki wykonują zadania, takie jak tworzenie plików i uruchamianie programów.
Zsh to powłoka typu open source, oferująca większą funkcjonalność i możliwości dostosowywania niż Bash.
Zsh jest konfigurowany za pomocą .zshrc
pliku:
# ~/.zshrc
HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"
Funkcje Prezto obejmują podświetlanie składni i uzupełnianie kart poleceń. Uzupełnianie tabulacji jest przydatne do interaktywnego eksplorowania nowych narzędzi wiersza poleceń.
Prezto jest konfigurowane za pomocą .zpreztorc
pliku:
# ~/.zpreztorc
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'git' \
'syntax-highlighting' \
'history-substring-search' \
'autosuggestions' \
'prompt'
Neovim jako edytor tekstu
Neovim to edytor tekstu napisany w Lua — jest alternatywą dla Vima, Nano czy Emacsa.
Neovim jest popularnym następcą Vima. Cały ekosystem wtyczek Vima napisanych w Vimscript działa w Neovim, oprócz tętniącego życiem ekosystemu wtyczek Neovim napisanych w Lua.
Dobrze skonfigurowany Neovim posiada serwery językowe do autouzupełniania (te same serwery językowe dostępne w VS Code), podświetlanie składni za pomocą Treesitter oraz Telescope do przeszukiwania różnych typów list.
Konfiguracja Neovima odbywa się w Lua — począwszy od init.lua
pliku:
-- $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'
Wskazówka — zasubskrybuj Ten tydzień w Neovim, aby otrzymywać cotygodniowy biuletyn dotyczący tętniącego życiem ekosystemu Neovim.
Tmux dla wielu terminali
Tmux to multiplekser terminali napisany w C — jest alternatywą dla Screena lub uruchamiania terminali w wielu oknach.
Multipleksery terminali umożliwiają zarządzanie wieloma sesjami terminali w jednym oknie.
Tmux zapewnia trwałe sesje, zarządzanie oknami i panelami z konfigurowalnymi powiązaniami klawiszy.
Tmux używa hierarchii pojęć do zarządzania wieloma terminalami:
- Szyba to prostokątny obszar w oknie. W każdym okienku wyświetlana jest oddzielna sesja terminala.
- Okno to kontener pełnoekranowy, który zawiera jeden lub więcej paneli.
- Sesja to zbiór jednego lub więcej okien.
Możesz rozpocząć nową sesję Tmux za pomocą tmux new
:
# create a session named `work`
$ tmux new -s work
Możesz ponownie dołączyć do działającej sesji Tmux za pomocą tmux attach
:
# reattach to last session
$ tmux attach
# reattach the session named `work`
$ tmux attach -t work
Ctrl-b c
: Utwórz nowe okno.Ctrl-b n
: Przejście do następnego okna.Ctrl-b p
: Przejście do poprzedniego okna.
# ~/.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
Statek kosmiczny dla ładnej zachęty
Starship to zachęta powłoki napisana w Rust — jest alternatywą dla Powerlevel10k lub Pure.
Monit to dostosowywalna część wiersza poleceń, która zapewnia kontekst, taki jak bieżący katalog lub gałąź Git.
Starship zapewnia szybki, konfigurowalny monit. Konfiguracja odbywa się za pomocą starship.toml
pliku:
# $XDG_CONFIG_HOME/starship.toml
[username]
disabled = true
[hostname]
disabled = true
[git_status]
ahead = "↑"
behind = "↓"
[directory]
truncation_length = 2
Ripgrep do wyszukiwania tekstu
Ripgrep to wyszukiwarka plików tekstowych napisana w Rust — jest alternatywą dla grep lub find.
Podstawową cechą Ripgrep jest szybkość — jest szybsza niż alternatywne narzędzia.
Podstawowym zastosowaniem Ripgrep jest wyszukiwanie wzorca w katalogu:
$ rg 'pattern' ~/project
alias g='rg -l --hidden --smart-case --line-buffered'
$ g 'some-pattern' some/directory
fzf do wyszukiwania rozmytego
fzf to wyszukiwarka rozmyta napisana w Go — jest alternatywą dla wyszukiwania deterministycznego.
fzf umożliwia wyszukiwanie przy użyciu algorytmu wyszukiwania rozmytego, który dopasowuje wzorce wyrażeń regularnych do niekompletnych informacji. Dzięki temu wyniki wyszukiwania pojawiają się podczas pisania, nawet z błędami ortograficznymi.
fzf można uruchomić jako program wiersza poleceń:
$ fzf
# fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>
fzf może być używany z różnymi backendami wyszukiwania, takimi jak find, grep lub Ripgrep.
Wskazówka — użyj Ripgrep jako backendu fzf, ustawiając FZF_DEFAULT_COMMAND
zmienną środowiskową export FZF_DEFAULT_COMMAND='rg --files --hidden'
.
Exa do wyświetlania plików
Exa to program do listy plików napisany w Rust — jest alternatywą dla ls i tree.
Program do wyświetlania plików pokazuje listę plików i katalogów. Exa oferuje takie funkcje, jak ikony, integracja z Git i wszechstronne opcje sortowania.
Exa ma kilka różnych podstawowych widoków:
# 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
Moje pseudonimy dla Exa to:
alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a'
alias tree = 'exa --tree'
Bat do przeglądania plików
Bat to przeglądarka plików napisana w Rust — jest alternatywą dla cat.
Przeglądarka plików to program, który wyświetla zawartość pliku.
Bat oferuje takie funkcje, jak podświetlanie składni, integracja z Git i automatyczne stronicowanie plików.
Bat jest używany przez wskazanie programu na plik tekstowy:
$ bat path/to/file
Smutny za zamianę tekstu
Sad to edytor strumieniowy napisany w języku Rust — jest alternatywą dla sed lub awk.
Edytory strumieni wykonują operacje wyszukiwania i zamiany na strumieniach tekstowych lub plikach tekstowych.
Sad (Space Age seD) pokazuje proponowane zamienniki przed ich zastosowaniem, umożliwiając sprawdzenie i wybranie zamienników przed ich zatwierdzeniem.
Sad jest używany jako program wiersza poleceń:
$ 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 do pracy z JSON
jq to procesor JSON napisany w C — jest alternatywą dla fx, jp lub przetwarzania JSON w języku takim jak Python.
jq umożliwia filtrowanie, przekształcanie i manipulowanie danymi JSON, co jest przydatne do pracy z odpowiedziami API, plikami konfiguracyjnymi i magazynami danych.
Główną ideą w jq jest filtr, który stosuje się do wejściowego JSON:
$ jq 'filter_expression' input.json
.key
- wyodrębnić wartość klucza,.[]
- wyodrębnij wszystkie wartości z tablicy,.[2]
- wyodrębnij trzecią wartość z tablicy.
# 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
zoxide dla nawigacji
zoxide to narzędzie do nawigacji terminala napisane w języku Rust — jest alternatywą dla cd, pushd i popd.
zoxide przeskakuje do katalogów z Twojej historii odwiedzin. Przypisuje punktację każdemu katalogowi na podstawie tego, jak często i ostatnio był odwiedzany.
zoxide jest używany jako program wiersza poleceń:
# move to a folder that best matches `code`
$ z code
Tig do przeglądania historii Git
Tig to przeglądarka historii Git napisana w C — jest alternatywą dla korzystania z Git CLI lub Lazygit.
Tig zapewnia łatwy w nawigacji, oznaczony kolorami interfejs do przeglądania historii zatwierdzeń Git. Umożliwia wyszukiwanie zatwierdzeń, przeglądanie wykresu zatwierdzeń i wyświetlanie plików w innym momencie.
Tig jest uruchamiany jako program wiersza poleceń:
$ tig
direnv do zarządzania zmiennymi środowiskowymi
direnv ładuje i usuwa zmienne środowiskowe powłoki — napisany w Go, jest alternatywą dla używania$ source .env
.
direnv automatycznie ładuje i usuwa zmienne środowiskowe podczas nawigacji między różnymi katalogami projektów.
Używanie direnv pozwala uniknąć ręcznego ładowania zmiennych środowiskowych i chroni przed ustawianiem zmiennych środowiskowych z jednego projektu w innym projekcie.
direnv używa .envrc
pliku do przechowywania zmiennych specyficznych dla twojego projektu, który jest uruchamiany jako skrypt powłoki:
# .envrc
export PROJECT_NAME="alpha"
$ direnv allow .
Powszechną praktyką jest opcjonalne załadowanie klucza tajnego lub prywatnego .envrc
:
source_env_if_exists .envrc.secret
Wskazówka — Służy direnv exec <path> <command>
do uruchamiania polecenia ze środowiskiem załadowanym dla określonego katalogu bez przechodzenia do niego.
Lazydocker dla Dockera
Lazydocker zarządza kontenerami i obrazami Docker — napisany w Go, jest alternatywą dla Docker Desktop lub Docker CLI.
Lazydocker ułatwia przeglądanie, uruchamianie, zatrzymywanie i usuwanie kontenerów i obrazów za pośrednictwem interfejsu użytkownika terminala. Może również zapewniać przegląd stanu kontenera, dzienników i wykorzystania zasobów w czasie rzeczywistym.
Lazydocker jest używany jako program wiersza poleceń:
$ lazydocker
Markserv do podglądu Markdown
Markserv renderuje pliki Markdown w przeglądarce — napisane w Node.js, jest alternatywą dla Grip lub Markdown Preview.
Markserv renderuje Markdown do HTML w czasie rzeczywistym, automatycznie odzwierciedlając wprowadzane przez Ciebie zmiany.
Markserv obsługuje Markdown o smaku GitHub, co oznacza, że formatuje bloki kodu i tabele tak samo jak Github. Markserv doskonale nadaje się do przeglądania README.md
plików bez wypychania ich do Github.
Aby uruchomić serwer Markserv na porcie 8010:
$ markserv -p 8010
Ngrok do udostępniania lokalnych serwerów
ngrok tworzy tunele do twoich lokalnych serwerów — napisany w Go, jest alternatywą dla Serveo, LocalTunnel lub PageKite.
ngrok udostępnia Internetowi lokalny serwer za NAT lub zaporą ogniową. Jest to przydatne do udostępniania serwera programistycznego zespołowi.
Możesz uruchomić tunel do portu 8000, uruchamiając:
$ ngrok http 8000
Streszczenie
Hypermodern Terminal Toolbox to:
- Kitty dla akcelerowanego GPU, wysoce konfigurowalnego terminala,
- Zsh dla powłoki i Prezto dla konfiguracji Zsh,
- Neovim jako edytor tekstu,
- Tmux do zarządzania wieloma terminalami,
- Statek kosmiczny za niezłą zachętę,
- Ripgrep do wyszukiwania plików tekstowych,
- fzf do wyszukiwania rozmytego,
- Exa do listowania plików,
- Bat do przeglądania plików,
- Smutne z powodu znajdowania i zastępowania w plikach tekstowych,
- jq do pracy z JSON,
- zoxide do nawigacji,
- Tig do przeglądania historii Git,
- direnv do zarządzania zmiennymi środowiskowymi,
- Lazydocker dla Dockera,
- Markserv do podglądu Markdown,
- ngrok do udostępniania lokalnych serwerów w Internecie.
Stopniowo ucz się jednego narzędzia na raz, aby zostać mistrzem terminali
Pierwotnie opublikowane na stronie https://www.datasciencesouth.com .
Kodowanie na wyższym poziomie
Dziękujemy za bycie częścią naszej społeczności! Zanim pójdziesz:
- Klaskajcie za relację i śledźcie autora
- Zobacz więcej treści w publikacji Level Up Coding
- Bezpłatny kurs rozmowy o kodowaniu ⇒ Zobacz kurs
- Śledź nas: Twitter | LinkedIn | Biuletyn