75 Zsh parancsok, pluginok, aliasok és eszközök
Napjaim nagy részét a terminálban töltöm, és az általam választott shell a Zsh – egy rendkívül testreszabható Unix shell, amely nagyon erős funkciókkal rendelkezik. Mivel lusta fejlesztőTM vagyok, mindig keresem a módját, hogy kevesebbet gépeljek és mindent automatizáljak. Szerencsére ez olyasmi, amihez a Zsh jól alkalmazkodik.
Ebben a bejegyzésben 75 olyan parancsot, bővítményt, aliasokat és eszközt osztok meg veled, amelyekkel remélhetőleg megspórolhatsz néhány billentyűleütést, és produktívabbá teheted a mindennapi munkádat.
Ha még nincs telepítve a Zsh a gépeden, akkor nézd meg ezt a bejegyzést, ahol megmutatom, hogyan tudod beüzemelni.
15 dolog, amit a Zsh tud a dobozból
A Zsh sok praktikus funkciót oszt meg a Bash-sel. Az alábbiak közül egyik sem egyedi a Zsh számára, de ettől függetlenül jó tudni róluk. Arra bátorítom, hogy kezdje el használni a parancssort az alább felsoroltakhoz hasonló műveletek elvégzésére. Lehet, hogy elsőre több munkának tűnik, mint a GUI használata, de ha egyszer beletanulsz, soha többé nem fogsz visszanézni.
- A
cd
beírása a fájlrendszer bármely pontjáról egyenesen a kezdeti könyvtáradba visz vissza. - A
!!
beírása az utolsó parancsot hozza elő. Ez praktikus, ha egy parancs azért nem sikerül, mert admin jogokat igényel. Ebben az esetben beírhatja asudo !!
. - A
&&
használatával több parancsot is láncolhat. Például:mkdir project && cd project && npm init -y
. - A feltételes végrehajtás a
||
használatával lehetséges. Például:git commit -m "whatever..." || echo "Commit failed"
. - A
-p
kapcsoló használata amkdir
paranccsal lehetővé teszi, hogy szükség szerint szülő könyvtárakat hozzon létre. A zárójel-kiterjesztés használata csökkenti az ismétlődést. Például:mkdir -p articles/jim/sitepoint/article{1,2,3}
. - A környezeti változókat parancsonként állítsa be a következőképpen:
NODE_DEBUG=myapp node index.js
. Vagy munkamenetenként, például így:export NODE_DEBUG=myapp
. Ellenőrizheted, hogy be lett-e állítva aecho $<variable-name>
. - Egy parancs kimenetét átvezetheted egy másik parancsba. Például:
cat /var/log/kern.log | less
egy hosszú napló olvashatóvá tételéhez, vagyhistory | grep ssh
az “ssh” szót tartalmazó előzménybejegyzések kereséséhez. - Fájlokat nyithatsz meg a terminálból a szerkesztődben. Például
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Ha a fájl nem létezik, akkor létrejön, amikor a szerkesztőben megnyomja a Mentés gombot. - A navigáció fontos elsajátítandó készség. Ne csak a nyílbillentyűkre hagyatkozzon. A Ctrl + a például a sor elejére visz.
- A Ctrl + e viszont a sor végére visz.
- A Ctrl + w segítségével törölhetsz egy szót (visszafelé).
- A Ctrl + u mindent eltávolít a kurzortól a sor elejéig.
- A Ctrl + k mindent töröl a kurzortól a sor végéig. Ez utóbbi három visszacsinálható a Ctrl + y billentyűkombinációval.
- Szöveget másolhat a Ctrl + Shift + c billentyűkombinációval. Ez sokkal elegánsabb, mint a jobb egérgombbal való kattintás és a Másolás kiválasztása.
- Megfordítva, a másolt szöveget beillesztheti a Ctrl + Shift + v billentyűkombinációval.
Próbálja meg megjegyezni ezeket a billentyűkombinációkat. Meg fog lepődni, milyen gyakran jönnek jól.
15 egyéni alias, amivel növelheti a termelékenységét
Az aliasok a terminálon a szokásos parancsok gyorsbillentyűi. Hozzáadhatod őket a ~/.zshrc
fájlodhoz, majd újratöltheted a terminálodat (a source ~/.zshrc
használatával), hogy érvénybe lépjenek.
Az (egyszerű) aliasok deklarálásának szintaxisa a következő:
alias =''
Az aliasok nagyszerűek a gyakran használt, hosszú vagy nehezen megjegyezhető szintaxisú parancsokhoz. Íme néhány azok közül, amelyeket rendszeresen használok:
- A
myip
alias, amely kiírja a terminálra az aktuális nyilvános IP-címedet:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias a Linux-disztribúciójára vonatkozó információk kiadásához:alias distro='cat /etc/*-release'
. - A
reload
alias, mivel úgy tűnik, soha nem emlékszem, hogyan kell újratölteni a terminálomat:alias reload='source ~/.zshrc'
. - A
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Ez visszafordítja agit reset HEAD~
. - An alias futtatásának hatását a csomaglisták frissítésére:
alias sapu='sudo apt-get update'
. - Az előző parancs
sudo
-val történő újrafuttatásához használt alias:alias ffs='sudo !!'
. - Mert lusta vagyok, a
y
aliasát ayarn
parancsra tettem:alias y='yarn'
. Ez azt jelenti, hogy klónozhatok egy repót, majd csak beírom az y-t, hogy behívjam az összes függőséget. Ezt Scott Tolinski-től tanultam a Syntax-on. - Nem az általam használtak közé tartozik, de ez az alias elfújja a
node_modules
mappát és eltávolítja apackage-lock.json
fájlt, mielőtt újra telepítené a projekt függőségeit:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Mint valószínűleg tudod, a yolo a You Only Live Once (Csak egyszer élsz) rövidítése. - Egy alias a
.zshrc
fájlom megnyitására szerkesztéshez:alias zshconfig='subl $HOME/.zshrc'
. - Alias az rbenv által telepíthető Ruby verziók listájának frissítéséhez:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Egy alias a szerver elindításához az aktuális könyvtárban (npm csomagok nem szükségesek):
alias server='python -m SimpleHTTPServer 8000'
. - Egy alias létrehozható a dokumentáció megnyitásához is a böngészőben:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - A globális alias egy parancs kimenetének a
less
-be történő átvezetéséhez:alias -g L='| less'
. Ezt a következőképpen használhatja:cat production.log L
. - A globális alias egy parancs kimenetének a
grep
-be történő átvezetéséhez:alias -g G='| grep'
. Így használhatja:history G ssh
. - Az aliasok létrehozásához függvényeket is használhat. A következő (innen vett) egy olyan aliast hoz létre, amely kódot ad hozzá, commitol és pushol a GitHubra:
bash
function acp() {
git add .
git commit -m ""
git push
}
Az interneten rengeteg helyen találhatsz további ötleteket az aliasokhoz. Például ez a Hacker News megbeszélés, vagy ez a bejegyzés a parancssori termelékenységről a Zsh-val.
15 Cool Things You Can Do with (Oh My) Zsh
Az Oh My Zsh egy közösség által vezérelt keretrendszer a Zsh konfigurációjának kezelésére, és több ezer hasznos funkcióval, segédprogrammal, bővítménnyel és témával együtt érkezik. Ha a Z shell-t a mindennapi vezetőjévé teszi, akkor tényleg érdemes telepítenie az Oh My Zsh-t.
Itt van tizenöt hasznos dolog, amit az Oh My Zsh megtehet önnek:
- A
take
parancs létrehoz egy új könyvtárat, és ebbe változik. Atake my-project
helyettesíti amkdir my-project && cd my-project
parancsot. -
zsh_stats
Megjeleníti a 20 leggyakoribb parancs listáját és azt, hogy hányszor futtattad őket. - Az Oh My Zsh leegyszerűsíti a navigációt a fájlrendszeredben. Például a
..
acd ..
aliasa. - Az
...
két könyvtárral feljebb lép, a....
hárommal feljebb lép, a.....
pedig néggyel feljebb. - Navigáláskor a
cd
elhagyható. A/
beírásával például egyenesen a fájlrendszer gyökeréhez jutsz. - A részleges megfeleltetés is támogatott. Például a
/h/j/De
beírása és a TAB, majd a Return billentyű lenyomása a/home/jim/Desktop/
-re visz. -
rd
armdir
és amd
amkdir -p
álneve. - A terminál munkamenetből a
d
beírásával listázhatjuk az utoljára használt könyvtárakat. - Ezek bármelyikébe navigálhatunk a
cd -n
használatával, ahol an
a könyvtár száma. - A lapkakiegészítés egy másik nagyszerű funkció. Például a
ls -
beírásával és a TAB billentyű lenyomásával a parancs összes opciója felsorolásra kerül, egy hasznos leírással együtt, hogy mit csinálnak. Ez acap
,rake
,ssh
éskill
parancsok esetében is működik. - A
alias
beírása kilistázza az összes aktuális aliasát. - A globbing (egy Zsh funkció) segítségével listázhatja az adott kiterjesztésű fájlokat. Például a
ls *.html
az aktuális könyvtárban található összes HTML fájlt kilistázza. Az alkönyvtárak bevonásához módosítsuk a következőre:ls **/*.html
. - A glob minősítők lehetővé teszik a fájlok típusainak kiválasztását zászlók segítségével. Például a
ls -l **/*(.x)
az aktuális könyvtárban és az összes alkönyvtárban található összes futtatható fájlt megkeresi. - A fájlokat a módosítás dátuma alapján is keresheti. Például a
ls *(m-7)
az elmúlt héten módosított összes fájlt listázza. - A fájlokat méret szerint is keresheti. Például a
ls *(Lm+1)
megtalálja az összes 1 MB-nál nagyobb méretű fájlt.
Bővítmények használata szórakozásból és haszonból
A Zsh-hez rengeteg bővítmény tartozik. Érdemes átnézni ezeket, és befektetni egy kis időt azoknak a megtanulására, amelyek segítik a munkafolyamatokat.
Itt van három olyan plugin, amelyet rendszeresen használok, és amelyek rengeteg praktikus gyorsbillentyűt és aliast biztosítanak.
10 Nifty Git Aliases
A git plugin számos aliast és számos hasznos funkciót biztosít. Miért nem nézzük át ezeket, és próbáljuk meg megjegyezni a tíz legjobbat? Itt vannak az általam leggyakrabban használtak.
-
g
egy praktikus alias agit
számára. Ez azt jelenti, hogy agit clone <whatever>
helyett olyan dolgokat írhatsz be, mintg clone <whatever>
. Lehet, hogy csak két billentyűleütés, de hamar összeadódik. -
gaa
agit add all
aliasszava. Én ezt használom állandóan. -
gb
agit branch
aliasa, ami felsorolja az összes ágat az aktuális repóban, és megmutatja, hogy melyikben vagy. -
gcb
agit checkout -b
aliasa, a parancs, amivel új ágat hozhatsz létre. -
gcm
agit checkout master
aliasa. Ezzel visszatér a master ágra. -
gdca
agit diff --cached
aliasszava. Ez lehetővé teszi, hogy diff minden olyan fájlt, amelyet commit-ra állítottál be. -
gf
agit fetch
aliasa. -
gm
agit merge
aliasa. -
gp
agit push
aliasa. Egy repo forkjának szinkronizálásához a következőt tehetjük:gf upstream
,gm upstream/master
, majdgp
. -
glog
egy alias agit log --oneline --decorate --graph
-hez, ami egy szép git ággráfot ad.
10 Praktikus npm aliasok
Az npm plugin egy csomó hasznos alias kiegészítését is biztosítja.
-
npmg
egy alias anpm install --global
-hez, amivel globálisan telepíthetsz függőségeket a rendszeredre. Például anpmg nodemon
. -
npmS
egy alias anpm install --save
számára, amelyet a függőségek telepítésére és apackage.json
dependencies
szakaszához való hozzáadására használhatsz. Vedd figyelembe, hogy az npm 5.0.0-tól kezdve ez az alapértelmezett, ha anpm i <package>
. -
npmD
anpm install --save-dev
aliasneve, amelyet a függőségek telepítésére és apackage.json
devDependencies
szakaszához való hozzáadására használsz. -
npmO
egy alias anpm outdated
-nak, amely ellenőrzi a nyilvántartást, hogy bármely (vagy bizonyos) telepített csomagok jelenleg elavultak-e. -
npmL
egy alias anpm list
-nak, amely a telepített csomagokat listázza. -
npmL0
egy alias anpm list --depth=0
-nek, amely a felső szintű csomagokat listázza. Ez különösen hasznos, ha meg akarod nézni, hogy mely modulok vannak globálisan telepítve anélkül, hogy a terminálodat elárasztaná egy hatalmas függőségi fa:npmL0 -g
. -
npmst
egy alias anpm run start
-nek, egy npm szkriptnek, amit gyakran használnak egy alkalmazás indításához. -
npmt
egy alias anpm run test
-nek, amit, mint sejthetjük, a tesztek futtatására használunk. -
npmR
egy alias anpm run
-nak. Önmagában ez a parancs felsorolja a projekt összes elérhető npm szkriptjét, és leírja, hogy mit csinálnak. Egy szkriptnévvel együtt használva az adott szkriptet futtatja, Például anpmR build
. -
npmI
anpm init
aliasa. Ez egy csomó kérdést fog feltenni, majd a válaszok alapján létrehoz egypackage.json
-at. A folyamat automatizálásához használd a-y
jelzőt. Például:npmI -y
.
10 Időtakarékos Rails/Rake aliasok
Ez a bővítmény kiegészíti a Ruby on Rails keretrendszer és a Rake program kiegészítését, valamint néhány aliast a naplókhoz és a környezeti változókhoz.
-
rc
egy alias arails console
-hez, amely lehetővé teszi a Rails-alkalmazással való interakciót a CLI-ről. -
rdc
egy alias arake db:create
-hez, amely (hacsak aRAILS_ENV
nincs beállítva) létrehozza az alkalmazás fejlesztési és tesztadatbázisát. -
rdd
egy alias arake db:drop
-nak, amely az alkalmazás fejlesztői és tesztadatbázisát törli. -
rdm
egy alias arake db:migrate
-nak, amely lefuttatja a függőben lévő adatbázis-migrációkat. -
rds
egy alias arake db:seed
-nak, amely lefuttatja adb/seeds.rb
fájlt, hogy feltöltse a fejlesztői adatbázisát adatokkal. -
rgen
egy alias arails generate
-nek, amely boilerplate kódot generál. Például:rgen scaffold item name:string description:text
. -
rgm
egy alias arails generate migration
számára, amely egy adatbázis-migrációt fog generálni. Például:rgm add_description_to_products description:string
. -
rr
egy alias arake routes
számára, amely felsorolja az alkalmazás összes definiált útvonalát. -
rrg
egy alias arake routes | grep
számára, amely lehetővé teszi a definiált útvonalak listázását és szűrését. Példáulrrg user
. -
rs
egy alias arails server
-nek, amely elindítja a Rails alapértelmezett webszerverét.
Kiegészítő erőforrások
A fent felsorolt pluginok fő feladata, hogy aliasokat adjanak a gyakran használt parancsokhoz. Kérjük, vegye figyelembe, hogy rengeteg további bővítmény létezik, amelyek további funkciókkal bővítik a shell-jét.
Itt van négy kedvencem:
- A sudo lehetővé teszi, hogy az ESC kétszeri megnyomásával könnyen előtagot adjon az aktuális vagy korábbi parancsainak a
sudo
-nak. - autosuggestions parancsokat javasol beírás közben az előzmények és a befejezések alapján. Ha a javaslat megfelel a keresettnek, a → billentyű lenyomásával fogadhatja el. Igazi időmegtakarítás!
- command-not-found: ha egy parancsot nem ismer fel a
$PATH
, akkor ez az Ubuntu command-not-found csomagját használja, hogy megtalálja vagy helyesírási hibákat javasoljon. - z egy praktikus bővítmény, amely összeállítja a leggyakoribb és legfrissebb mappáid listáját (ezeket “frecent”-nek hívja), és lehetővé teszi, hogy egyetlen paranccsal ugorj rájuk.
És ne feledd, ha sok időt töltesz a terminálban, érdemes némi energiát fektetni a vizuális megjelenítésébe. Szerencsére az Oh My Zsh egy csomó témával érkezik, amelyek közül választhatsz. Az én választásom az Agnoster.
A témákról többet megtudhatsz a 10 Zsh tipp & Trükk című cikkemben: Configuration, Customization & Usage.
Conclusion
Szóval ennyi: 75 Zsh parancs, plugin, alias és eszköz. Remélem, megtanultál egy-két trükköt az út során, és arra bátorítalak, hogy hagyd el a grafikus felületeket és menj be a terminálba. Könnyebb, mint amilyennek látszik, és nagyszerű módja annak, hogy növelje a termelékenységét.
Ha kihagytam a kedvenc bővítményét, vagy időtakarékos aliasát/parancsát, ossza meg velem a Twitteren.
Még többet szeretne kihozni az eszköztárából? Nézze meg a Visual Studio Code-ot: End-to-End szerkesztési és hibakeresési eszközök webfejlesztők számára a Wiley-tól.