驚きのZsh活用術

February 17, 2021
執筆者
レビュー担当者
Diane Phan
Twilion

zsh trick

この記事はTwilio Developer EvangelistのLizzie Siegleこちら(英語)て執筆した記事を日本語化したものてす。

UNIXベースのプログラミングでは、シェル、ターミナル、コマンドラインといったインターフェースを話題にすることがよくあります。最も有名なのはおそらくbashですが、他にも広く使用されているものがあります。その1つがZsh(Zシェル)です。この記事では、Zshの詳細と、開発を最適化するためのヒントやコツを説明します。

Zshとは

Zsh(別名Zシェル)はBourneシェル(sh)の機能を拡張し、プラグインやテーマに関する新機能を追加してサポートを強化したものです。2019年にMacOS Catalinaで採用されてからは、Macのログインとインタラクティブのシェルとして、デフォルトになりました。

Zshのインストール

Zshをインストールするには、Homebrewbrew install zshを使います。

また、最も普及しているZshプラグインであるoh-my-zshもインストールできます。oh-my-zshには、組み込みプラグインとテーマが多数付属しており、次のスクリプトでインストールできます。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Zshのあまり知られていない9つのヒントとコツ

1. 私のチームメイトのValériane Venanceが、takeコマンドについてツイートしています。このコマンドでは、ディレクトリの新規作成と変更を実行できるため、2種類のコマンド(mkdircd)を入力する必要がなくなります。takeを使用すると、必要に応じて中間ディレクトリも作成できます。

zsh - take

2. 履歴内の検索。 ターミナルで矢印を押すと、以前に使用したコマンドを繰り返すことができます。最も新しいコマンドが最初に表示されます。zshでは、使用した特定のコマンド(mkdirなど)を繰り返すことができます。

search history

 

チームメイトのMatthew Gilliardは、ctrl-r ___の便利な利用方法を教えてくれました。このコマンドを使用すると、特定のフレーズを最後に検索したのがいつかが分かります。ctrl-rを再度クリックすると2番目に新しいフレーズ、さらにもう一度クリックすると3番目に新しいフレーズ、のように順番に表示されます。

ctrl-r on the command line

 

3. 自動cdディレクトリを切り替えるときは、cdと入力する必要はありません。ディレクトリ名だけを入力します。 

4. zmvによるファイル名の一括変更。 zmvをインストールするには、autoload zmvを実行します。私は、機械学習モデル用にダウンロードした多数の画像ファイルの名前を、より一貫性のあるものに変更したいと考えていました(1.jpg、2.jpg、3.jpg...ではなくepcot-1.jpg、epcot-2.jpg、epcot-3.jpg…など)。この操作を実行するためのコマンドは次のとおりです。

zmv '(*).(jpg|jpeg)' 'epcot-$1.$2'

コマンド実行前にどういう結果になるのかを確認するには、コマンドを実行する代わりに-nを追加します。

zmv -n '(*).(jpg|jpeg)' 'epcot-$1.$2'

zsh - rename

このコマンドにはどのような意味があるのでしょうか。(*).(jpg|jpeg)を実行すると、末尾に.jpgまたは.jpegが付くディレクトリ内のファイルが検索されます。次に、epcot-$1.$2で各ファイル名を編集します。このためには、epcot-の後に元のファイル名(ここでは$1)と元のファイルタイプ(ここでは$2)を付けます。

5. コマンドラインを計算機代わりに使用する。

zsh - calc

6. 多数用意されている便利なプラグインを活用する。 インストール」の項で述べたとおり、oh-my-zshには多くのプラグインが付属しています。npmプラグインとsudoプラグインを含めるには、次の行を~.zshrcファイルに追加します: plugins=(npm sudo)。特に便利なプラグインは次のとおりです。

  • npm: npmコマンドに自動補完を追加します。
  • sudo: sudoをコマンドに追加します。escをダブルクリックすれば、コマンドを入力した後でも追加できます。

escesc to sudo

 

  • Zsh-autosuggestions: 入力中に、以前使用したコマンドと完了の履歴に従ってコマンドを提示します。

autosuggestions

 

  • web-searchを使用すると、コマンドラインから検索エンジンを開くことができます。例えば、google ___を実行すると、Googleで所定のフレーズ(以下の例ではSerena Williams)が検索されます。

web search google serena

 

  • gitにはgitコマンドの多くのエイリアスが含まれるため、入力の手間と時間を節約できます。例えば、git addと入力する代わりに、gaと入力すれば済みます。エイリアスのリストはこちらにあります
zsh - git

7. パークコマンド。Ctrl-qを使用すると、入力中のコマンドを「保留」し、プロンプトに戻って他のコマンドを新たに入力することができます。他のコマンドを実行すると、元のコマンドが保留解除されてコマンドラインに再入力されます。中断していた作業を忘れずに再開できて便利です。

ctrlq.gif

 

8. コマンドラインに入力した後でも、コマンドを簡単に編集できる。長いコマンドを入力または貼り付けた後、実行前に編集が必要になった場合は、ctrl-x-eを使用して、このコマンドをエディターで開くことができます(通常はviですが、$EDITOR環境変数を使用して任意のテキストエディターに設定できます)。

9. キーボードショートカットを使用できる。 ターミナルをクリアするとき、clearの代わりにctrl lを使用できます

シェル入力を効率化する次のステップ

これまで説明した操作は手始めにすぎません。zshとoh-my-zshの活用方法はまだたくさんあります。こちらのoh-my-zsh虎の巻と、TwilioのエンジニアであるJoe Blockが管理しているZSHのフレームワーク、テーマ、プラグインのリストもご覧ください。また、皆さんのターミナル活用術についても、ぜひオンラインでお寄せください。