75 Zsh Polecenia, wtyczki, aliasy i narzędzia

maj 9, 2021
admin

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ład mkdir project && cd project && npm init -y.
  • Wykonanie warunkowe jest możliwe przy użyciu ||. Na przykład git commit -m "whatever..." || echo "Commit failed".
  • Użycie przełącznika -p z poleceniem mkdir pozwoli na tworzenie katalogów nadrzędnych w razie potrzeby. Użycie interpretacji nawiasów zmniejsza liczbę powtórzeń. Na przykład mkdir -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ąc echo $<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, lub history | 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 uruchomienia git 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 polecenia yarn: 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 plik package-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ępuje mkdir 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 dla cd ...
  • 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 dla rmdir, a md jest aliasem dla mkdir -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, gdzie n 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ż dla cap, rake, ssh i kill.
  • 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.

  1. g jest poręcznym aliasem dla git. Oznacza to, że możesz wpisywać takie rzeczy jak g clone <whatever> zamiast git clone <whatever>. Może to tylko dwa naciśnięcia klawisza, ale szybko się sumują.
  2. gaa to alias dla git add all. Używam go cały czas.
  3. gb to alias dla git branch, który wyświetli listę wszystkich gałęzi w bieżącym repo i pokaże, na której się znajdujesz.
  4. gcb to alias dla git checkout -b, polecenia, które pozwala utworzyć nową gałąź.
  5. gcm to alias dla git checkout master. To powoduje powrót do gałęzi głównej.
  6. gdca jest aliasem dla git diff --cached. Pozwala to na dyfuzję plików, które zostały przygotowane do zatwierdzenia.
  7. gf jest aliasem dla git fetch.
  8. gm jest aliasem dla git merge.
  9. gp jest aliasem dla git push. Aby zsynchronizować rozwidlenie repo, mógłbyś zrobić: gf upstream, gm upstream/master, a następnie gp.
  10. glog jest aliasem dla git 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 dla npm install --global, którego można użyć do zainstalowania zależności globalnie w systemie. Na przykład npmg nodemon.
  • npmS jest aliasem dla npm install --save, którego używasz do instalowania zależności i dodawania ich do sekcji dependencies twojego package.json. Zauważ, że od npm 5.0.0 jest to wartość domyślna podczas uruchamiania npm i <package>.
  • npmD jest aliasem dla npm install --save-dev, którego używasz do instalowania zależności i dodawania ich do sekcji devDependencies twojego package.json.
  • npmO jest aliasem dla npm outdated, który sprawdzi rejestr, aby zobaczyć, czy jakiekolwiek (lub, konkretne) zainstalowane pakiety są obecnie nieaktualne.
  • npmL jest aliasem dla npm list, który wyświetli listę zainstalowanych pakietów.
  • npmL0 jest aliasem dla npm 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 dla npm run start, skryptu npm często używanego do uruchamiania aplikacji.
  • npmt jest aliasem dla npm run test, który, jak można się domyślić, jest używany do uruchamiania testów.
  • npmR jest aliasem dla npm 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ład npmR build.
  • npmI jest aliasem dla npm init. To zada ci kilka pytań, a następnie utworzy package.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 dla rails console, który pozwala na interakcję z aplikacją Rails z CLI.
  • rdc jest aliasem dla rake db:create, który (chyba że RAILS_ENV jest ustawiony) tworzy deweloperskie i testowe bazy danych dla twojej aplikacji.
  • rdd to alias dla rake db:drop, który usuwa rozwojowe i testowe bazy danych Twojej aplikacji.
  • rdm to alias dla rake db:migrate, który uruchomi wszelkie oczekujące migracje baz danych.
  • rds jest aliasem dla rake db:seed, który uruchamia plik db/seeds.rb w celu zapełnienia rozwojowej bazy danych danymi.
  • rgen jest aliasem dla rails generate, który wygeneruje kod szablonu. Na przykład: rgen scaffold item name:string description:text.
  • rgm jest aliasem dla rails generate migration, który wygeneruje migrację bazy danych. Na przykład: rgm add_description_to_products description:string.
  • rr to alias dla rake routes, który wylistuje wszystkie zdefiniowane trasy aplikacji.
  • rrg to alias dla rake routes | grep, który pozwoli na wylistowanie i filtrowanie zdefiniowanych tras. Na przykład, rrg user.
  • rs jest aliasem dla rails 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.