75 Zsh コマンド、プラグイン、エイリアス、ツール
私は一日の多くをターミナルで過ごし、私の選択したシェルは Zsh です。 私は怠惰な開発者であるため、より少ないタイプですべてのことを自動化する方法を常に探しています。 幸運なことに、これは Zsh が得意とするところです。
この投稿では、キーストロークを節約して日々の仕事の生産性を高めることを期待する 75 のコマンド、プラグイン、エイリアス、ツールを紹介します。
Zsh がマシンにインストールされていない場合は、この投稿をチェックして、立ち上げおよび実行する方法を紹介しています。 以下のものはどれも Zsh 独自のものではありませんが、それでも知っておくとよいでしょう。 以下のような操作を行うために、コマンドラインを使い始めることをお勧めします。
- ファイルシステムのどこからでも
cd
を入力すると、ホームディレクトリにまっすぐ戻ります。 -
!!
を入力すると、最後のコマンドを表示します。 これは、あるコマンドが管理者権限を必要とするために失敗した場合に便利です。 この場合、sudo !!
. - と入力します。
&&
を使用すると、複数のコマンドを連結することができます。 例えば、mkdir project && cd project && npm init -y
. - 条件付き実行は
||
を使用することで可能です。 例えば、git commit -m "whatever..." || echo "Commit failed"
. mkdir
コマンドで-p
スイッチを使用すると、必要に応じて親ディレクトリを作成することができる。 中括弧の展開を使用すると、繰り返しを減らすことができます。 たとえば、mkdir -p articles/jim/sitepoint/article{1,2,3}
.- のように、コマンドごとに環境変数を設定します。
NODE_DEBUG=myapp node index.js
. または、セッション単位で次のように設定します。export NODE_DEBUG=myapp
. 設定されているかどうかは、echo $<variable-name>
. - あるコマンドの出力を別のコマンドにパイプする。 例えば、長いログを読めるようにするには
cat /var/log/kern.log | less
、”ssh” を含む履歴を検索するにはhistory | grep ssh
とします。 - ターミナルからエディタでファイルを開くことができます。 例えば、
nano ~/.zshrc
(nano)、subl ~/.zshrc
(Sublime Text)、code ~/.zshrc
(VS Code)などです。 ファイルが存在しない場合、エディターで保存を押すと作成されます。 - ナビゲーションはマスターすべき重要なスキルです。 矢印キーだけに頼らないでください。 例えば、Ctrl + a は行頭に移動します。
- Ctrl + e は行末に移動します。
- Ctrl + w で単語を 1 つ削除できます(逆方向)。
- Ctrl + u はカーソルから行頭まですべてを削除します。
- Ctrl + k はカーソルから行末まですべてをクリアします。 これは、右クリックしてコピーを選択するよりもはるかにエレガントです。
- 逆に、Ctrl + Shift + V でコピーしたテキストを貼り付けることができます。
15 カスタム エイリアスで生産性を向上
エイリアスは、通常のコマンドのターミナル ショートカットです。 エイリアスを
~/.zshrc
ファイルに追加し、(source ~/.zshrc
を使用して) ターミナルをリロードすると、それが有効になります。エイリアスを宣言するためのシンタックスは次のとおりです。 以下は、私が日常的に使用しているものです:
- A
myip
エイリアスは、現在のパブリック IP アドレスをターミナルに表示します。alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
エイリアスで、Linux ディストリビューションに関する情報を出力します。alias distro='cat /etc/*-release'
. - A
reload
というエイリアスは、ターミナルをリロードする方法を決して覚えていないようなので、次のようにします。alias reload='source ~/.zshrc'
. - A
undo-git-reset
のエイリアス。alias undo-git-reset-head="git reset 'HEAD@{1}'"
. これは、パッケージリストを更新するためにgit reset HEAD~
. - An alias を実行した効果を元に戻すものです。
alias sapu='sudo apt-get update'
. - 以前のコマンドを
sudo
で再実行するためのエイリアスです。alias ffs='sudo !!'
. - 私は怠け者なので、
y
をyarn
コマンドにエイリアスしています。alias y='yarn'
. これは、レポをクローンして、y とタイプするだけですべての依存関係を取り込むことができることを意味します。 これは、Syntax の Scott Tolinski から学びました。 - 私が使用しているものではありませんが、このエイリアスは、プロジェクトの依存関係を再インストールする前に
node_modules
フォルダを消去し、package-lock.json
ファイルを削除します。alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. ご存知のように、yolo は You Only Live Once の略です。 - 私の
.zshrc
ファイルを編集用に開くためのエイリアスです。alias zshconfig='subl $HOME/.zshrc'
. - rbenv がインストールできる Ruby のバージョンのリストを更新するためのエイリアスです。
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- 現在のディレクトリでサーバーをキックオフするエイリアス (npm パッケージは不要)。
alias server='python -m SimpleHTTPServer 8000'
. - また、ブラウザでドキュメントを開くためのエイリアスを作成することができます。
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - コマンドの出力を
less
にパイプするグローバル・エイリアス。alias -g L='| less'
. このように使うことができます。cat production.log L
. - コマンドの出力を
grep
にパイプするグローバルなエイリアス。alias -g G='| grep'
. というように使うことができます。history G ssh
. - また、関数を使用してエイリアスを作成することも可能です。 次の例では、GitHub にコードを追加、コミット、プッシュするエイリアスを作成しています:
bash
function acp() {
git add .
git commit -m ""
git push
}
エイリアスに関するアイデアは、オンラインでたくさん見つけることができます。 たとえば、この Hacker News の議論や、Zsh によるコマンドラインの生産性に関するこの投稿です。
15 Cool Things You Can Do with (Oh My) Zsh
Oh My Zsh はコミュニティ主導の Zsh 設定管理用フレームワークで、何千もの役立つ関数、ヘルパー、プラグイン、テーマがバンドルされています。 もしあなたが Z シェルを毎日のドライバにするつもりなら、Oh My Zsh をインストールするべきです。
以下は Oh My Zsh があなたにできる 15 の便利なことです:
-
take
コマンドは新しいディレクトリを作ってその中に移動します。take my-project
はmkdir my-project && cd my-project
を置き換えます。 -
zsh_stats
は上位 20 コマンドのリストと何回実行されたかを表示します。 - Oh My Zsh はファイルシステムのナビゲーションを単純化します。 例えば、
..
はcd ..
のエイリアスです。 - 同じように、
...
は 2 つ上のディレクトリに、....
は 3 つ上に、そして.....
は 4 つ上に移動します。 - 移動するときに
cd
を省略することが可能です。 例えば/
と入力すると、ファイルシステムのルートに直行する。 - 部分一致もサポートされている。 たとえば、
/h/j/De
と入力して TAB キーを押し、リターンを押すと、/home/jim/Desktop/
に移動します。 -
rd
はrmdir
のエイリアスで、md
はmkdir -p
のエイリアスです。 -
d
と入力すると、端末セッションから最後に使用したディレクトリをリストアップします。 - その後、
cd -n
(n
はディレクトリ番号) を使用してこれらのどれかに移動することができます。 たとえば、ls -
と入力して TAB キーを押すと、コマンドのすべてのオプションが、それらが何をするかについての有益な説明とともにリストアップされます。 これはcap
,rake
,ssh
, そしてkill
でも動作します。 alias
と入力すると、現在のエイリアスをすべて表示します。- Grobing (Zsh 機能) により、特定の拡張子を持つファイルをリストすることができます。 たとえば、
ls *.html
と入力すると、現在のディレクトリにあるすべての HTML ファイルをリストアップします。 サブディレクトリを含めるには、次のように変更します。ls **/*.html
. - グロブ修飾子を使用すると、フラグを使用してファイルの種類を選択することができます。 例えば、
ls -l **/*(.x)
は現在のディレクトリとすべてのサブディレクトリにあるすべての実行ファイルを探します。 - 更新日時でファイルを検索することができます。 例えば、
ls *(m-7)
は最近1週間以内に変更されたすべてのファイルをリストアップします。 - サイズによってファイルを検索することができます。 たとえば、
ls *(Lm+1)
は 1MB 以上のサイズのファイルをすべて見つけます。
Using Plugins for Fun and Profit
Oh My Zsh には多くのプラグインが同梱されています。
私がいつも使っている、便利なショートカットやエイリアスを提供する 3 つのプラグインを紹介します。
10 Nifty Git Aliases
git プラグインは多くのエイリアスやいくつかの便利な関数を提供しています。 これらを一通り見て、トップ10を記憶することを試みてはいかがでしょうか。
-
g
は、git
の便利なエイリアスです。 つまり、git clone <whatever>
の代わりにg clone <whatever>
のようなものを入力することができるのです。 -
gaa
はgit add all
のエイリアスです。 -
gb
はgit branch
のエイリアスで、現在のレポのすべてのブランチをリストアップし、どのブランチにいるのかを表示してくれます。 -
gcb
はgit checkout -b
のエイリアスで、新しいブランチを作成するためのコマンドです。 これは master ブランチに戻ります。 -
gdca
はgit diff --cached
のエイリアスです。 これは、コミット用にステージングしたすべてのファイルの diff を取得できます。 -
gf
はgit fetch
のエイリアスです。 -
gm
はgit merge
のエイリアスです。 -
gp
はgit push
のエイリアスです。 レポのフォークを同期するには、こうします。gf upstream
,gm upstream/master
, それに続くgp
. -
glog
はgit log --oneline --decorate --graph
のエイリアスで、これはきれいな git ブランチグラフになります。
10 便利な npm エイリアス
npm プラグインは、便利なエイリアスの束と同様に補完機能を提供します。 たとえば、
npmg nodemon
. - A
-
npmS
はnpm install --save
のエイリアスで、依存関係をインストールし、package.json
のdependencies
セクションに追加するために使用します。 npm 5.0.0 では、これはnpm i <package>
を実行したときのデフォルトであることに注意してください。 -
npmD
はnpm install --save-dev
のエイリアスで、依存関係をインストールし、それらをpackage.json
のdevDependencies
セクションに追加するために使用されます。 -
npmO
はnpm outdated
のエイリアスで、インストールされたパッケージが現在古くなっていないかレジストリをチェックします。 -
npmL
はnpm list
のエイリアスで、インストールされたパッケージをリストします。 これは、巨大な依存関係ツリーで端末を溢れさせることなく、 グローバルにインストールされているモジュールを見るのに特に有用です。npmL0 -g
. -
npmst
はnpm run start
のエイリアスで、アプリケーションを起動するためによく使われる npm スクリプトです。 -
npmt
はnpm run test
のエイリアスで、推測通り、テストの実行に使われます。 -
npmR
はnpm run
のエイリアスです。 このコマンドは、プロジェクトで利用可能なすべての npm スクリプトを、それらの動作の説明とともにリストアップします。 スクリプト名と組み合わせて使用すると、そのスクリプトを実行します。たとえば、npmR build
. -
npmI
は、npm init
のエイリアスです。 これは多くの質問をし、その答えに基づいてpackage.json
を作成します。 このプロセスを自動化するには-y
フラグを使用する。 たとえば、npmI -y
.
10 Time-saving Rails/Rake Aliases
このプラグインは Ruby on Rails フレームワークと Rake プログラムの補完、およびログと環境変数の別名を追加します。
-
rc
はrails console
のエイリアスで、CLI から Rails アプリを操作できるようにします。 -
rdc
はrake db:create
のエイリアスで、(RAILS_ENV
が設定されていなければ)アプリ用の開発およびテスト データベースを作成するようにします。 -
rdd
はrake db:drop
のエイリアスで、アプリの開発およびテスト用データベースを削除します。 -
rdm
はrake db:migrate
のエイリアスで、保留中のデータベース マイグレーションを実行します。 -
rds
はrake db:seed
のエイリアスで、db/seeds.rb
ファイルを実行して開発用データベースにデータを入力します。 -
rgen
はrails generate
のエイリアスで、ボイラープレート コードを生成します。 例えばrgen scaffold item name:string description:text
. -
rgm
はrails generate migration
のエイリアスで、データベースのマイグレーションを生成するものです。 例えばrgm add_description_to_products description:string
. -
rr
はrake routes
のエイリアスで、アプリのすべての定義済みルートをリストします。 -
rrg
はrake routes | grep
のエイリアスで、定義済みルートのリストとフィルタリングが可能です。 たとえば、rrg user
. -
rs
はrails server
のエイリアスで、RailsのデフォルトWebサーバーを起動します。
その他のリソース
上に挙げたプラグインは主に、よく使うコマンドのエイリアスを提供するものです。
私のお気に入りの 4 つを紹介します。
- sudo では、ESC を 2 回押すと、現在または以前のコマンドに簡単に
sudo
というプレフィックスを付けることができます。 その提案が求めているものであれば、→キーを押して受け入れることができます。 本当に時間の節約になります! - command-not-found: コマンドが
$PATH
で認識されない場合、これは Ubuntu の command-not-found パッケージを使ってそれを見つけたり、スペルミスを示唆したりします。 - z は便利なプラグインで、最も頻繁に使用する最近のフォルダー (これを “frecent” と呼びます) のリストを構築し、ひとつのコマンドでそこにジャンプできるようにします。
また、ターミナルで多くの時間を過ごすなら、それを視覚的に魅力的にするための努力をする価値はあります。 幸運なことに、Oh My Zsh にはたくさんのテーマが同梱されており、その中から選ぶことができます。 私が選んだのは Agnoster です。
テーマについて詳しくは、10 Zsh Tips & Tricks の記事で紹介しています。 設定、カスタマイズ & 使用法
まとめ
以上、75 個の Zsh コマンド、プラグイン、エイリアス、およびツールを紹介しました。 そして、GUI からターミナルに移行することをお勧めします。 見た目よりも簡単で、生産性を高める素晴らしい方法です。
お気に入りのプラグインや、時間を節約するエイリアス/コマンドを見逃した場合は、Twitter で教えてください。 Visual Studio Code をチェックしてください。 Web 開発者のためのエンドツーエンドの編集およびデバッグ ツール』を Wiley から入手してください。