75 Příkazy, zásuvné moduly, aliasy a nástroje Zsh
Velkou část dne trávím v terminálu a mým oblíbeným shellem je Zsh – vysoce přizpůsobitelný unixový shell, který má několik velmi výkonných funkcí. Protože jsem líný vývojářTM, vždy hledám způsoby, jak psát méně a jak všechny věci automatizovat. Naštěstí je to něco, k čemu se Zsh dobře hodí.
V tomto příspěvku se s vámi podělím o 75 příkazů, zásuvných modulů, aliasů a nástrojů, které vám snad ušetří několik stisků kláves a zvýší vaši produktivitu při každodenní práci.
Pokud nemáte na svém počítači nainstalovaný Zsh, pak se podívejte na tento příspěvek, kde vám ukážu, jak jej zprovoznit.
15 věcí, které Zsh umí hned po vybalení
Zsh sdílí spoustu užitečných funkcí s Bash. Žádná z následujících funkcí není pro Zsh jedinečná, ale přesto je dobré je znát. Doporučuji vám, abyste začali používat příkazový řádek k provádění operací, jako jsou ty uvedené níže. Zpočátku se to může zdát pracnější než používání grafického uživatelského rozhraní, ale jakmile si věci osvojíte, už se nikdy neohlédnete zpět.
- Zadáním příkazu
cd
odkudkoli ze souborového systému se vrátíte přímo do svého domovského adresáře. - Zadáním příkazu
!!
se zobrazí poslední příkaz. To se hodí v případě, že příkaz selže, protože potřebuje administrátorská práva. V takovém případě můžete zadatsudo !!
. - Pomocí
&&
můžete zřetězit více příkazů. Napříkladmkdir project && cd project && npm init -y
. - Podmíněné spuštění je možné pomocí
||
. Napříkladgit commit -m "whatever..." || echo "Commit failed"
. - Použití přepínače
-p
s příkazemmkdir
vám umožní vytvářet nadřazené adresáře podle potřeby. Použití rozšiřujících závorek snižuje počet opakování. Například:mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Proměnné prostředí nastavíte na základě jednotlivých příkazů takto:
NODE_DEBUG=myapp node index.js
. Nebo na základě jednotlivých relací takto:export NODE_DEBUG=myapp
. Jejich nastavení můžete zkontrolovat zadáním příkazuecho $<variable-name>
. - Výstup jednoho příkazu vložte do druhého příkazu. Například
cat /var/log/kern.log | less
pro zpřístupnění dlouhého protokolu nebohistory | grep ssh
pro vyhledání všech záznamů v historii obsahujících „ssh“. - Z terminálu můžete otevírat soubory v editoru. Například
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Pokud soubor neexistuje, vytvoří se po stisknutí tlačítka Uložit v editoru. - Navigace je důležitá dovednost, kterou je třeba zvládnout. Nespoléhejte se jen na klávesy se šipkami. Například klávesami Ctrl + a se dostanete na začátek řádku.
- Naopak klávesami Ctrl + e se dostanete na jeho konec.
- Pomocí kláves Ctrl + w můžete odstranit jedno slovo (pozpátku).
- Klávesami Ctrl + u odstraníte vše od kurzoru po začátek řádku.
- Klávesami Ctrl + k odstraníte vše od kurzoru po konec řádku. Poslední tři lze zrušit pomocí Ctrl + y.
- Kopírovat text můžete pomocí Ctrl + Shift + c. Je to mnohem elegantnější než kliknutí pravým tlačítkem myši a volba Kopírovat.
- Kopírovaný text můžete naopak vložit pomocí Ctrl + Shift + v.
Zkuste si tyto kombinace kláves uložit do paměti. Budete překvapeni, jak často se vám budou hodit.
15 vlastních aliasů, které zvýší vaši produktivitu
Aliasy jsou terminálové zkratky pro běžné příkazy. Můžete je přidat do souboru ~/.zshrc
a poté znovu načíst terminál (pomocí source ~/.zshrc
), aby se projevily.
Syntaxe pro deklarování (jednoduchého) aliasu je následující:
alias =''
Aliasy jsou skvělé pro často používané příkazy, dlouhé příkazy nebo příkazy s těžko zapamatovatelnou syntaxí. Zde jsou některé z těch, které pravidelně používám:
- A alias
myip
, který vypíše do terminálu vaši aktuální veřejnou IP adresu:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias, který vypíše informace o vaší distribuci Linuxu:alias distro='cat /etc/*-release'
. - A
reload
alias, protože si nikdy nemohu vzpomenout, jak znovu načíst terminál:alias reload='source ~/.zshrc'
. - An
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Tím se vrátí účinky spuštění aliasugit reset HEAD~
. - An pro aktualizaci seznamů balíčků:
alias sapu='sudo apt-get update'
. - Alias pro opětovné spuštění předchozího příkazu s
sudo
:alias ffs='sudo !!'
. - Protože jsem líný, použil jsem alias
y
na příkazyarn
:alias y='yarn'
. To znamená, že mohu klonovat repozitář a pak jen zadat y, aby se stáhly všechny závislosti. Tohle jsem se naučil od Scotta Tolinského na Syntax. - Není to jeden z těch, které používám, ale tento alias odstraní složku
node_modules
a odstraní souborpackage-lock.json
, než znovu nainstaluje závislosti projektu:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Jak asi víte, yolo je zkratka pro You Only Live Once (Žiješ jen jednou). - Alias pro otevření mého souboru
.zshrc
pro úpravy:alias zshconfig='subl $HOME/.zshrc'
. - A alias pro aktualizaci seznamu verzí Ruby, které může rbenv nainstalovat:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- A alias pro spuštění serveru ve vašem aktuálním adresáři (nevyžaduje balíčky npm):
alias server='python -m SimpleHTTPServer 8000'
. - Můžete také vytvořit alias pro otevření dokumentace v prohlížeči:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Globální alias pro odeslání výstupu příkazu do roury
less
:alias -g L='| less'
. Můžete jej použít takto:cat production.log L
. - Globální alias pro směrování výstupu příkazu do
grep
:alias -g G='| grep'
. Můžete jej použít takto:history G ssh
. - K vytváření aliasů můžete použít také funkce. Následující příklad (převzatý odtud) vytvoří alias, který přidá, odevzdá a odešle kód na GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
Na internetu najdete spoustu míst, kde najdete další nápady pro aliasy. Například tato diskuse na Hacker News nebo tento příspěvek o produktivitě příkazového řádku pomocí Zsh.
15 skvělých věcí, které můžete dělat s (Oh My) Zsh
Oh My Zsh je komunitou řízený framework pro správu konfigurace Zsh a je dodáván s tisíci užitečných funkcí, pomocníků, zásuvných modulů a motivů. Pokud se chystáte udělat ze shellu Z svůj každodenní ovladač, měli byste si Oh My Zsh opravdu nainstalovat.
Tady je patnáct užitečných věcí, které pro vás Oh My Zsh může udělat:
- Příkaz
take
vytvoří nový adresář a změní se do něj. Příkaztake my-project
nahradí příkazmkdir my-project && cd my-project
. -
zsh_stats
vám poskytne seznam 20 nejčastějších příkazů a kolikrát byly spuštěny. - Oh My Zsh zjednodušuje orientaci v souborovém systému. Například
..
je alias procd ..
. - Stejně tak
...
vás přesune o dva adresáře výše,....
o tři a.....
o čtyři. - Při navigaci můžete vynechat
cd
. Například zadáním/
se dostanete přímo do kořenového adresáře souborového systému. - Podporováno je také částečné přiřazování. Například zadáním
/h/j/De
a stisknutím TAB a poté Return se dostanu na/home/jim/Desktop/
. -
rd
je alias prormdir
amd
je alias promkdir -p
. - Můžete zadat
d
pro výpis naposledy použitých adresářů z relace terminálu. - Na kterýkoli z nich pak můžete přejít pomocí
cd -n
, kden
je číslo adresáře. - Doplňování tabulek je další skvělá funkce. Například po zadání
ls -
a stisknutí klávesy TAB se zobrazí seznam všech možností příkazu spolu s užitečným popisem jejich funkce. To funguje také pro příkazycap
,rake
,ssh
akill
. - Při zadání
alias
se vypíší všechny vaše aktuální aliasy. - Pomocí globbingu (funkce Zsh) můžete vypsat soubory s určitou příponou. Například
ls *.html
vypíše všechny soubory HTML v aktuálním adresáři. Chcete-li zahrnout i podadresáře, změňte na:ls **/*.html
. - Globální kvalifikátory umožňují vybrat typy souborů pomocí příznaků. Například
ls -l **/*(.x)
vyhledá všechny spustitelné soubory v aktuálním adresáři a všech podadresářích. - Soubory můžete vyhledávat podle data změny. Například
ls *(m-7)
vypíše všechny soubory změněné během posledního týdne. - Soubory můžete vyhledávat podle velikosti. Například
ls *(Lm+1)
vyhledá všechny soubory s velikostí větší než 1 MB.
Používání zásuvných modulů pro zábavu a zisk
Oh My Zsh se dodává s mnoha zásuvnými moduly. Měli byste si je prohlédnout a investovat nějaký čas do učení těch, které vám pomohou při práci.
Tady jsou tři zásuvné moduly, které pravidelně používám a které poskytují spoustu užitečných zkratek a aliasů.
10 Nifty Git Aliases
Zásuvný modul git poskytuje mnoho aliasů a několik užitečných funkcí. Proč si je neprojít a nepokusit se zapamatovat si deset nejlepších? Zde jsou ty, které používám nejčastěji.
-
g
je šikovný alias progit
. To znamená, že místogit clone <whatever>
můžete napsat napříkladg clone <whatever>
. Mohou to být jen dva stisky kláves, ale brzy se sečtou. -
gaa
je alias progit add all
. Používám ho pořád. -
gb
je alias progit branch
, který vypíše všechny větve v aktuálním repozitáři a ukáže vám, ve které se nacházíte. -
gcb
je alias progit checkout -b
, příkaz, který vám umožní vytvořit novou větev. -
gcm
je alias progit checkout master
. Tím se vrátíte do hlavní větve. -
gdca
je alias příkazugit diff --cached
. To vám umožní porovnat všechny soubory, které jste zařadili do revize. -
gf
je alias progit fetch
. -
gm
je alias progit merge
. -
gp
je alias progit push
. Chcete-li synchronizovat fork repozitáře, můžete provést:gf upstream
,gm upstream/master
a následněgp
. -
glog
je alias progit log --oneline --decorate --graph
, čímž získáte pěkný graf větví systému git.
10 Šikovné aliasy npm
Zásuvný modul npm poskytuje doplnění i spoustu užitečných aliasů.
-
npmg
je alias pronpm install --global
, který můžete použít pro globální instalaci závislostí v systému. Napříkladnpmg nodemon
. -
npmS
je alias pronpm install --save
, který použijete k instalaci závislostí a jejich přidání do sekcedependencies
vašehopackage.json
. Všimněte si, že od verze npm 5.0.0 je toto výchozí nastavení při spuštěnínpm i <package>
. -
npmD
je alias pronpm install --save-dev
, který používáte k instalaci závislostí a jejich přidání do sekcedevDependencies
vašehopackage.json
. -
npmO
je alias pronpm outdated
, který zkontroluje registr, zda některý (nebo, konkrétní) nainstalovaný balíček není aktuálně zastaralý. -
npmL
je alias pronpm list
, který vypíše nainstalované balíčky. -
npmL0
je alias pronpm list --depth=0
, který vypíše balíčky nejvyšší úrovně. To je užitečné zejména pro zjištění, které moduly jsou nainstalovány globálně, aniž byste museli zahltit terminál obrovským stromem závislostí:npmL0 -g
. -
npmst
je alias pronpm run start
, skript npm, který se často používá ke spuštění aplikace. -
npmt
je alias pronpm run test
, který, jak asi tušíte, slouží ke spouštění testů. -
npmR
je alias pronpm run
. Tento příkaz sám o sobě vypíše všechny dostupné skripty npm projektu spolu s popisem, co dělají. Pokud se použije ve spojení s názvem skriptu, spustí tento skript, NapříkladnpmR build
. -
npmI
je alias pronpm init
. Ten vám položí několik otázek a na základě vašich odpovědí vytvoří skriptpackage.json
. Chcete-li proces automatizovat, použijte příznak-y
. NapříkladnpmI -y
.
10 Časově úsporné aliasy Rails/Rake
Tento doplněk přidává doplňování pro framework Ruby on Rails a program Rake a také některé aliasy pro protokoly a proměnné prostředí.
-
rc
je alias prorails console
, který umožňuje komunikovat s aplikací Rails z rozhraní CLI. -
rdc
je alias prorake db:create
, který (pokud není nastavenRAILS_ENV
) vytváří vývojové a testovací databáze pro vaši aplikaci. -
rdd
je alias prorake db:drop
, který zruší vývojové a testovací databáze vaší aplikace. -
rdm
je alias prorake db:migrate
, který spustí všechny čekající migrace databází. -
rds
je alias prorake db:seed
, který spustí soubordb/seeds.rb
pro naplnění vaší vývojové databáze daty. -
rgen
je alias prorails generate
, který vygeneruje kód kotle. Například:rgen scaffold item name:string description:text
. -
rgm
je alias prorails generate migration
, který vygeneruje migraci databáze. Například:rgm add_description_to_products description:string
. -
rr
je alias prorake routes
, který vytvoří seznam všech definovaných tras aplikace. -
rrg
je alias prorake routes | grep
, který umožní vypsat a filtrovat definované trasy. Napříkladrrg user
. -
rs
je alias prorails server
, který spustí výchozí webový server Rails.
Další zdroje
Hlavním úkolem výše uvedených zásuvných modulů je poskytovat aliasy pro často používané příkazy. Uvědomte si prosím, že existuje spousta dalších zásuvných modulů, které rozšiřují váš shell o další funkce.
Zde jsou čtyři z mých oblíbených:
- sudo umožňuje snadno předřadit aktuální nebo předchozí příkazy pomocí
sudo
dvojitým stisknutím ESC. - autosuggestions navrhuje příkazy při psaní na základě historie a dokončení. Pokud je návrh ten, který hledáte, stisknutím klávesy → jej přijmete. Skutečná úspora času!
- příkaz-nenalezen: pokud není příkaz rozpoznán v
$PATH
, použije se k jeho nalezení balík Ubuntu příkaz-nenalezen nebo se navrhnou pravopisné chyby. - z je šikovný doplněk, který sestaví seznam vašich nejčastějších a nejnovějších složek (nazývá je „frecent“) a umožní vám na ně přejít jedním příkazem.
A nezapomeňte, že pokud trávíte v terminálu hodně času, vyplatí se investovat trochu úsilí do jeho vizuální úpravy. Naštěstí je Oh My Zsh dodáván s celou řadou motivů, ze kterých si můžete vybrat. Můj výběr je Agnoster.
Další informace o tématech najdete v mém článku 10 tipů pro Zsh &Triky:
Závěr
Tady to máme: 75 příkazů, doplňků, aliasů a nástrojů Zsh. Doufám, že jste se cestou naučili jeden nebo dva triky, a doporučuji vám, abyste se z grafických uživatelských rozhraní přesunuli do terminálu. Je to jednodušší, než to vypadá, a je to skvělý způsob, jak zvýšit svou produktivitu.
Pokud jsem vynechal váš oblíbený doplněk nebo časově úsporný alias/příkaz, dejte mi vědět na Twitteru.
Chcete ze své sady nástrojů vytěžit ještě více? Podívejte se na Visual Studio Code:
: End-to-End Editing and Debugging Tools for Web Developers od Wiley.