75 Zsh Polecenia, wtyczki, aliasy i narzędzia
Spędzam dużą część dnia w terminalu, a moją powłoką z wyboru jest Zsh – wysoce konfigurowalna powłoka uniksowa, która zawiera kilka bardzo potężnych funkcji. Jako że jestem leniwym programistąTM, zawsze szukam sposobów by pisać mniej i zautomatyzować wszystkie rzeczy. Na szczęście jest to coś, do czego Zsh nadaje się bardzo dobrze.
W tym poście podzielę się z tobą 75 komendami, wtyczkami, aliasami i narzędziami, które, mam nadzieję, pozwolą ci zaoszczędzić trochę naciśnięć klawiszy i sprawią, że będziesz bardziej produktywny w swojej codziennej pracy.
Jeśli nie masz zainstalowanego Zsh na swoim komputerze, to sprawdź ten post, gdzie pokażę ci, jak zacząć i działać.
15 rzeczy, które Zsh potrafi zrobić po wyjęciu z pudełka
Zsh dzieli wiele przydatnych funkcji z Bash. Żadna z nich nie jest unikalna dla Zsh, ale mimo to dobrze jest je znać. Zachęcam do rozpoczęcia używania wiersza poleceń do wykonywania operacji takich jak te wymienione poniżej. Na początku może się to wydawać bardziej pracochłonne niż korzystanie z GUI, ale gdy już się w tym połapiesz, nigdy nie spojrzysz wstecz.
- Wpisanie
cd
z dowolnego miejsca w systemie plików spowoduje powrót do katalogu domowego. - Wpisanie
!!
spowoduje wyświetlenie ostatniego polecenia. Jest to przydatne, jeśli polecenie nie powiedzie się, ponieważ wymaga uprawnień administratora. W takim przypadku możesz wpisaćsudo !!
. - Możesz użyć
&&
, aby połączyć wiele poleceń. Na przykładmkdir project && cd project && npm init -y
. - Wykonanie warunkowe jest możliwe przy użyciu
||
. Na przykładgit commit -m "whatever..." || echo "Commit failed"
. - Użycie przełącznika
-p
z poleceniemmkdir
pozwoli na tworzenie katalogów nadrzędnych w razie potrzeby. Użycie interpretacji nawiasów zmniejsza liczbę powtórzeń. Na przykładmkdir -p articles/jim/sitepoint/article{1,2,3}
. - Ustaw zmienne środowiskowe na podstawie poszczególnych poleceń w następujący sposób:
NODE_DEBUG=myapp node index.js
. Lub, na zasadzie per-sesji, jak na przykład:export NODE_DEBUG=myapp
. Możesz sprawdzić, czy zostały ustawione, wpisującecho $<variable-name>
. - Pipe wyjście jednego polecenia do drugiego polecenia. Na przykład,
cat /var/log/kern.log | less
aby uczynić długi dziennik czytelnym, lubhistory | grep ssh
aby wyszukać wszelkie wpisy historii zawierające „ssh”. - Możesz otwierać pliki w edytorze z terminala. Na przykład,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Jeśli plik nie istnieje, zostanie utworzony po naciśnięciu przycisku Zapisz w edytorze. - Nawigacja jest ważną umiejętnością do opanowania. Nie polegaj tylko na klawiszach strzałek. Na przykład, Ctrl + a zabierze cię na początek linii.
- Ale Ctrl + e zabierze cię na koniec.
- Możesz użyć Ctrl + w, aby usunąć jedno słowo (wstecz).
- Ctrl + u usunie wszystko od kursora do początku linii.
- Ctrl + k wyczyści wszystko od kursora do końca linii. Te ostatnie trzy mogą być cofnięte z Ctrl + y.
- Możesz skopiować tekst z Ctrl + Shift + c. To jest znacznie bardziej eleganckie niż kliknięcie prawym przyciskiem myszy i wybranie Copy.
- Odwrotnie, można wkleić skopiowany tekst z Ctrl + shift + v.
Spróbuj popełnić te kombinacje klawiszy do pamięci. Będziesz zaskoczony, jak często się przydają.
15 niestandardowych aliasów, które zwiększą twoją produktywność
Aliasy są skrótami terminalowymi dla zwykłych poleceń. Możesz dodać je do swojego pliku ~/.zshrc
, a następnie przeładować terminal (używając source ~/.zshrc
), aby zaczęły działać.
Składnia deklaracji (prostego) aliasu jest następująca:
alias =''
Aliasy są świetne dla często używanych poleceń, długich poleceń lub poleceń z trudną do zapamiętania składnią. Oto kilka z tych, których używam regularnie:
- A
myip
alias, który wypisuje na terminalu twój aktualny publiczny adres IP:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias, który wypisuje informacje o twojej dystrybucji Linuksa:alias distro='cat /etc/*-release'
. - A
reload
alias, ponieważ nigdy nie mogę sobie przypomnieć jak przeładować mój terminal:alias reload='source ~/.zshrc'
. - An
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. To odwraca skutki uruchomieniagit reset HEAD~
. - An alias do aktualizacji list pakietów:
alias sapu='sudo apt-get update'
. - Alias umożliwiający ponowne wykonanie poprzedniego polecenia z
sudo
:alias ffs='sudo !!'
. - Ponieważ jestem leniwy, aliasowałem
y
do poleceniayarn
:alias y='yarn'
. Oznacza to, że mogę sklonować repo, a następnie po prostu wpisać y, aby wciągnąć wszystkie zależności. Nauczyłem się tego od Scotta Tolinski’ego na Syntax. - Nie jeden z tych, których używam, ale ten alias wywala folder
node_modules
i usuwa plikpackage-lock.json
, przed ponownym zainstalowaniem zależności projektu:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Jak zapewne wiesz, yolo to skrót od You Only Live Once. - Alias otwierający mój plik
.zshrc
do edycji:alias zshconfig='subl $HOME/.zshrc'
. - Alias do aktualizacji listy wersji Ruby, które rbenv może zainstalować:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- An alias to kick off a server in your current directory (no npm packages required):
alias server='python -m SimpleHTTPServer 8000'
. - Możesz również utworzyć alias, aby otworzyć dokumentację w przeglądarce:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Alias globalny do potokowania danych wyjściowych polecenia do
less
:alias -g L='| less'
. Możesz go użyć tak:cat production.log L
. - A global alias to pipe a command’s output to
grep
:alias -g G='| grep'
. Możesz go użyć tak jak:history G ssh
. - Możesz również użyć funkcji do tworzenia aliasów. Poniższe (zaczerpnięte stąd) tworzy alias, który dodaje, zatwierdza i popycha kod do GitHuba:
bash
function acp() {
git add .
git commit -m ""
git push
}
Jest wiele miejsc, w których można znaleźć więcej pomysłów na aliasy online. Na przykład, ta dyskusja w Hacker News, lub ten post o produktywności linii poleceń z Zsh.
15 Fajnych rzeczy, które możesz zrobić z (Oh My) Zsh
Oh My Zsh jest napędzanym przez społeczność frameworkiem do zarządzania konfiguracją Zsh i jest wyposażony w tysiące pomocnych funkcji, pomocników, wtyczek i motywów. Jeśli zamierzasz uczynić powłokę Z swoim codziennym kierowcą, powinieneś naprawdę zainstalować Oh My Zsh.
Oto piętnaście przydatnych rzeczy, które Oh My Zsh może dla ciebie zrobić:
- Polecenie
take
utworzy nowy katalog i zmieni się w nim.take my-project
zastępujemkdir my-project && cd my-project
. -
zsh_stats
da Ci listę 20 najlepszych poleceń i ile razy były uruchamiane. - Oh My Zsh upraszcza poruszanie się po systemie plików. Na przykład
..
jest aliasem dlacd ..
. - W ten sam sposób
...
przenosi użytkownika w górę o dwa katalogi,....
przenosi go w górę o trzy, a.....
przenosi go w górę o cztery. - Podczas nawigacji można pominąć
cd
. Wpisanie/
, na przykład, przeniesie cię prosto do korzenia twojego systemu plików. - Pasowanie częściowe jest również obsługiwane. Na przykład, wpisanie
/h/j/De
i naciśnięcie TAB, a następnie Return, przenosi mnie do/home/jim/Desktop/
. -
rd
jest aliasem dlarmdir
, amd
jest aliasem dlamkdir -p
. - Możesz wpisać
d
, aby wyświetlić listę ostatnio używanych katalogów z sesji terminala. - Możesz następnie przejść do dowolnego z nich, używając
cd -n
, gdzien
jest numerem katalogu. - Uzupełnianie tabulatorów to kolejna wspaniała funkcja. Na przykład, wpisanie
ls -
i naciśnięcie klawisza TAB spowoduje wyświetlenie listy wszystkich opcji polecenia, wraz z pomocnym opisem ich działania. Działa to również dlacap
,rake
,ssh
ikill
. - Wpisanie
alias
wyświetli listę wszystkich twoich bieżących aliasów. - Dzięki globalizacji (cecha Zsh) możesz wyświetlić listę plików z określonym rozszerzeniem. Na przykład,
ls *.html
wyświetli wszystkie pliki HTML w bieżącym katalogu. Aby uwzględnić podkatalogi, zmień na:ls **/*.html
. - Kwalifikatory globalne pozwalają na wybieranie typów plików za pomocą flag. Na przykład,
ls -l **/*(.x)
znajdzie wszystkie pliki wykonywalne w bieżącym katalogu i wszystkich podkatalogach. - Można wyszukiwać pliki według daty modyfikacji. Na przykład,
ls *(m-7)
wyświetli listę wszystkich plików zmodyfikowanych w ciągu ostatniego tygodnia. - Możesz wyszukiwać pliki według rozmiaru. Na przykład,
ls *(Lm+1)
znajdzie wszystkie pliki o rozmiarze większym niż 1MB.
Używanie wtyczek dla zabawy i zysku
Oh My Zsh jest dostarczany z wieloma wtyczkami. Powinieneś je przejrzeć i zainwestować trochę czasu w naukę tych, które pomogą ci w pracy.
Tutaj są trzy wtyczki, których regularnie używam, a które zapewniają mnóstwo przydatnych skrótów i aliasów.
10 Nifty Git Aliases
Wtyczka git zapewnia wiele aliasów i kilka przydatnych funkcji. Dlaczego nie przejrzeć ich i nie spróbować zapamiętać swojej pierwszej dziesiątki? Oto te, których używam najczęściej.
-
g
jest poręcznym aliasem dlagit
. Oznacza to, że możesz wpisywać takie rzeczy jakg clone <whatever>
zamiastgit clone <whatever>
. Może to tylko dwa naciśnięcia klawisza, ale szybko się sumują. -
gaa
to alias dlagit add all
. Używam go cały czas. -
gb
to alias dlagit branch
, który wyświetli listę wszystkich gałęzi w bieżącym repo i pokaże, na której się znajdujesz. -
gcb
to alias dlagit checkout -b
, polecenia, które pozwala utworzyć nową gałąź. -
gcm
to alias dlagit checkout master
. To powoduje powrót do gałęzi głównej. -
gdca
jest aliasem dlagit diff --cached
. Pozwala to na dyfuzję plików, które zostały przygotowane do zatwierdzenia. -
gf
jest aliasem dlagit fetch
. -
gm
jest aliasem dlagit merge
. -
gp
jest aliasem dlagit push
. Aby zsynchronizować rozwidlenie repo, mógłbyś zrobić:gf upstream
,gm upstream/master
, a następniegp
. -
glog
jest aliasem dlagit log --oneline --decorate --graph
, co da ci ładny wykres gałęzi git.
10 Poręczne aliasy npm
Wtyczka npm zapewnia uzupełnianie, a także kilka przydatnych aliasów.
-
npmg
jest aliasem dlanpm install --global
, którego można użyć do zainstalowania zależności globalnie w systemie. Na przykładnpmg nodemon
. -
npmS
jest aliasem dlanpm install --save
, którego używasz do instalowania zależności i dodawania ich do sekcjidependencies
twojegopackage.json
. Zauważ, że od npm 5.0.0 jest to wartość domyślna podczas uruchamianianpm i <package>
. -
npmD
jest aliasem dlanpm install --save-dev
, którego używasz do instalowania zależności i dodawania ich do sekcjidevDependencies
twojegopackage.json
. -
npmO
jest aliasem dlanpm outdated
, który sprawdzi rejestr, aby zobaczyć, czy jakiekolwiek (lub, konkretne) zainstalowane pakiety są obecnie nieaktualne. -
npmL
jest aliasem dlanpm list
, który wyświetli listę zainstalowanych pakietów. -
npmL0
jest aliasem dlanpm list --depth=0
, który wymienia pakiety najwyższego poziomu. Jest to szczególnie przydatne do zobaczenia, które moduły są zainstalowane globalnie bez zalewania terminala ogromnym drzewem zależności:npmL0 -g
. -
npmst
jest aliasem dlanpm run start
, skryptu npm często używanego do uruchamiania aplikacji. -
npmt
jest aliasem dlanpm run test
, który, jak można się domyślić, jest używany do uruchamiania testów. -
npmR
jest aliasem dlanpm run
. Samo to polecenie wyświetli listę wszystkich dostępnych w projekcie skryptów npm, wraz z opisem tego, co robią. Użyte w połączeniu z nazwą skryptu spowoduje jego uruchomienie, na przykładnpmR build
. -
npmI
jest aliasem dlanpm init
. To zada ci kilka pytań, a następnie utworzypackage.json
na podstawie twoich odpowiedzi. Użyj flagi-y
, aby zautomatyzować ten proces. Na przykład,npmI -y
.
10 oszczędzających czas aliasów Rails/Rake
Ta wtyczka dodaje uzupełnianie dla frameworka Ruby on Rails i programu Rake, jak również kilka aliasów dla logów i zmiennych środowiskowych.
-
rc
jest aliasem dlarails console
, który pozwala na interakcję z aplikacją Rails z CLI. -
rdc
jest aliasem dlarake db:create
, który (chyba żeRAILS_ENV
jest ustawiony) tworzy deweloperskie i testowe bazy danych dla twojej aplikacji. -
rdd
to alias dlarake db:drop
, który usuwa rozwojowe i testowe bazy danych Twojej aplikacji. -
rdm
to alias dlarake db:migrate
, który uruchomi wszelkie oczekujące migracje baz danych. -
rds
jest aliasem dlarake db:seed
, który uruchamia plikdb/seeds.rb
w celu zapełnienia rozwojowej bazy danych danymi. -
rgen
jest aliasem dlarails generate
, który wygeneruje kod szablonu. Na przykład:rgen scaffold item name:string description:text
. -
rgm
jest aliasem dlarails generate migration
, który wygeneruje migrację bazy danych. Na przykład:rgm add_description_to_products description:string
. -
rr
to alias dlarake routes
, który wylistuje wszystkie zdefiniowane trasy aplikacji. -
rrg
to alias dlarake routes | grep
, który pozwoli na wylistowanie i filtrowanie zdefiniowanych tras. Na przykład,rrg user
. -
rs
jest aliasem dlarails server
, który uruchamia domyślny serwer WWW Railsów.
Dodatkowe zasoby
Głównym zadaniem wtyczek wymienionych powyżej jest zapewnienie aliasów do często używanych poleceń. Należy pamiętać, że istnieje wiele innych wtyczek, które rozszerzają powłokę o dodatkowe funkcje.
Oto cztery z moich ulubionych:
- sudo pozwala łatwo poprzedzić bieżące lub poprzednie polecenia znakiem
sudo
przez dwukrotne naciśnięcie ESC. - autosugestie sugerują polecenia podczas wpisywania na podstawie historii i uzupełnień. Jeśli sugestia jest tym, czego szukasz, naciśnij klawisz →, aby ją zaakceptować. Prawdziwa oszczędność czasu!
- command-not-found: jeśli polecenie nie jest rozpoznawane w
$PATH
, to użyje Ubuntu pakiet command-not-found, aby go znaleźć lub sugeruje błędy w pisowni. - z jest poręczną wtyczką, która buduje listę twoich najczęstszych i ostatnich folderów (nazywa je „frecent”) i pozwala ci przeskoczyć do nich za pomocą jednego polecenia.
I nie zapominaj, jeśli spędzasz dużo czasu w terminalu, warto zainwestować trochę wysiłku w uczynienie go atrakcyjnym wizualnie. Na szczęście Oh My Zsh dostarcza całą masę motywów, z których możesz wybierać. Moim wyborem jest Agnoster.
Możesz dowiedzieć się więcej o motywach w moim artykule 10 Zsh Tips & Tricks: Configuration, Customization & Usage.
Conclusion
Więc mamy to: 75 poleceń Zsh, wtyczek, aliasów i narzędzi. Mam nadzieję, że nauczyłeś się jakiegoś triku lub dwóch po drodze, i zachęcam cię do wyjścia z GUI i wejścia do terminala. Jest to łatwiejsze niż się wydaje i jest to świetny sposób na zwiększenie wydajności.
Jeśli pominąłem twoją ulubioną wtyczkę lub oszczędzający czas alias/polecenie, daj mi znać na Twitterze.
Chcesz uzyskać jeszcze więcej ze swojego zestawu narzędzi? Sprawdź Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers od Wiley.