GNU/Linux >> Linux の 問題 >  >> Linux

Zshの使用を開始する

Z-shell(またはZsh)は、革新的な機能が豊富にあることで知られる、BourneのようなインタラクティブなPOSIXシェルです。 Z-Shellのユーザーは、多くの場合、その多くの便利さを引用し、効率の向上と広範なカスタマイズを評価しています。

LinuxまたはUnixに比較的慣れていないが、ターミナルを開いていくつかのコマンドを実行するのに十分な経験がある場合は、おそらくBashシェルを使用したことがあります。 Bashは、その進歩的な機能と、人気のあるLinuxおよびUnixオペレーティングシステムのほとんどにデフォルトのシェルとして出荷されていることから、間違いなく最も信頼のおけるフリーソフトウェアシェルです。ただし、シェルを使用すればするほど、使用したい方法に適した小さなものを見つけるようになります。オープンソースで有名なものが1つあるとすれば、それは選択です。 。多くの人がBashからZに「卒業」することを選択します。

Zshとは何ですか?

シェルは、オペレーティングシステムへの単なるインターフェイスです。インタラクティブシェルを使用すると、標準入力と呼ばれるものを使用してコマンドを入力できます。 、または stdin 、および標準出力を介して出力を取得します および標準エラー 、または stdout およびstderr 。 Bash、Csh、Ksh、Tcsh、Dash、Zshなどの多くのシェルがあります。それぞれに、プログラマーがシェルに最適だと考えたものに基づいた機能があります。これらの機能が良いか悪いかは、エンドユーザー次第です。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

Zshには、インタラクティブなタブ補完、自動ファイル検索、正規表現の統合、コマンドスコープを定義するための高度な省略形、豊富なテーマエンジンなどの機能があります。これらの機能は、他の点ではおなじみのBourneのようなシェル環境に含まれています。つまり、Bashをすでに知っていて愛している場合は、より多くの機能を除いて、Zshもおなじみです。一種のBash++と考えるかもしれません。

Zshのインストール

パッケージマネージャーを使用してZshをインストールします。

Fedora、RHEL、およびCentOSの場合:

$ sudo dnf install zsh

UbuntuとDebianの場合:

$ sudo apt install zsh

MacOSでは、MacPortsを使用してインストールできます:

$ sudo port install zsh

または自作で:

$ brew install zsh

ZshはWindowsで実行できますが、LinuxまたはWindows Subsystem for Linux(WSL)やCygwinなどのLinuxに似たレイヤーの上でのみ実行できます。そのインストールはこの記事の範囲外なので、Microsoftのドキュメントを参照してください。

Zshのセットアップ

Zshはターミナルエミュレータではありません。これは、ターミナルエミュレータ内で実行されるシェルです。したがって、Zshを起動するには、最初にGNOMEターミナル、Konsole、ターミナル、iTerm2、rxvt、または好みの別のターミナルなどのターミナルウィンドウを起動する必要があります。次に、次のように入力してZshを起動できます。

$ zsh

Zshを初めて起動するときは、いくつかの構成オプションを選択するように求められます。これらはすべて後で変更できるため、 1を押します。 続行します。

This is the Z Shell configuration function for new users, zsh-newuser-install.

(q)  Quit and do nothing.

(0)  Exit, creating the file ~/.zshrc

(1)  Continue to the main menu.

設定には4つのカテゴリがあるため、最初から始めてください。

  1. 最初のカテゴリでは、シェル履歴ファイルに保持するコマンドの数を選択できます。デフォルトでは、1,000行に設定されています。
  2. Zshの完了は、その最もエキサイティングな機能の1つです。簡単にするために、動作に慣れるまで、デフォルトのオプションでアクティブ化することを検討してください。 1を押します デフォルトオプションの場合、 2 オプションを手動で設定します。
  3. EmacsまたはViキーバインディングを選択します。 BashはEmacsバインディングを使用しているので、すでに慣れているかもしれません。
  4. 最後に、Zshの微妙な機能のいくつかについて学ぶ(そして設定または設定解除する)ことができます。たとえば、 cdの使用を停止できます コマンドなしで実行不可能なパスを指定した場合に、Zshがディレクトリ変更を開始できるようにすることでコマンドを実行します。これらの追加オプションの1つをアクティブにするには、オプション番号を入力して sと入力します 設定する それ。完全なZshエクスペリエンスを得るには、すべてのオプションをオンにしてみてください。 〜/ .zshrc を編集して、後で設定を解除できます。 。

構成を完了するには、 0を押します 。

Zshの使用

最初、ZshはBashを使用しているように感じます。これは、間違いなくその多くの機能の1つです。たとえば、BashとTcshには重大な違いがあるため、BashとZshを切り替えることができると、職場やサーバーでBashを使用する必要がある場合に、Zshを自宅で簡単に試すことができます。

Zshでディレクトリを変更する

Zshを優れたものにしているのは小さな違いです。まず、ディレクトリを cdなしでドキュメントフォルダに変更してみてください コマンド 。真実であるには良すぎるようです。ただし、それ以上の指示なしにディレクトリパスを入力すると、Zshはそのディレクトリに移動します。

% Documents
% pwd
/home/seth/Documents

これにより、Bashまたはその他の通常のシェルでエラーが発生します。しかし、Zshは通常とはほど遠いものであり、これはほんの始まりにすぎません。

Zshで検索

通常のシェルを使用してファイルを検索する場合は、おそらく検索を使用します。 または検索 指図。少なくとも、 ls -Rを使用した可能性があります ディレクトリのセットの再帰的なリスト。 Zshには、現在のサブディレクトリまたはその他のサブディレクトリでファイルを検索できる機能が組み込まれています。

たとえば、 foo.txtという2つのファイルがあるとします。 。 1つは現在のディレクトリにあり、もう1つは fooというサブディレクトリにあります。 。 Bashシェルでは、現在のディレクトリにあるファイルを次のコマンドで一覧表示できます。

$ ls
foo.txt

サブディレクトリのパスを明示的に指定することで、もう一方を一覧表示できます。

$ ls foo
foo.txt

両方を一覧表示するには、 -Rを使用する必要があります スイッチ、おそらく grepと組み合わせる :

$ ls -R | grep foo.txt
foo.txt
foo.txt

ただし、Zshでは、 **を使用できます。 速記:

% ls **/foo.txt
foo.txt
foo.txt

また、この構文は、 ls だけでなく、任意のコマンドで使用できます。 。特定のファイルタイプをディレクトリの1つのコレクションから単一の場所に移動したり、テキストのスニペットをファイルに連結したり、ログを調べたりするときの効率の向上を想像してみてください。

Zshタブ補完の使用

タブ補完は、Bashやその他のいくつかのシェルのパワーユーザー機能であり、Unixの世界が一般的になったとき、それは嵐に見舞われました。 Unixユーザーは、長くて退屈なパス( / h * / s * h / V * / SCS / sc * / comp * / t * / a * / * 9 /など)を入力するときにワイルドカードを使用する必要がなくなりました。 04 /LS*ボート*v /home/seth/Videos/SCS/scenes/composite/takes/authorized/109/04/LS_boat-port-cargo-mover.mkvと入力するよりもはるかに簡単です。 )。代わりに、十分な数の一意の文字列を入力したときにTabキーを押すだけで済みます。たとえば、 hで始まるディレクトリが1つしかないことがわかっている場合 システムのルートレベルで、 / hと入力します。 次にTabキーを押します。高速で、シンプルで、効率的です。また、パスが存在することを確認します。 Tabが何も完了しない場合は、間違った場所を探しているか、パスの一部を間違って入力したことがわかります。

ただし、同じ最初の文字を5つ以上共有するディレクトリが多数ある場合、Tabは断固として完了を拒否します。最近のほとんどの端末では、(少なくとも)ファイルが表示されて意味を推測できなくなりますが、通常、タブを2回押すだけで表示されます。したがって、タブ補完は、キーボード全体での文字とタブの相互作用になり、ピアノのリサイタルのトレーニングをしているように感じることがよくあります。

Zshは、可能な完了を循環することにより、この小さな煩わしさを解決します。 ls〜/ Dと入力した場合 Tabキーを押すと、Zshはドキュメントでコマンドを完了します 最初;もう一度Tabキーを押すと、ダウンロードが表示されます 、など、必要なものが見つかるまで続けます。

Zshのワイルドカード

Zshでのワイルドカードの動作は、Bashユーザーが慣れているものとは異なります。まず第一に、それらは変更することができます。たとえば、現在のディレクトリ内のすべてのフォルダを一覧表示する場合は、変更されたワイルドカードを使用できます。

% ls
dir0   dir1   dir2   file0   file1
% ls *(/)
dir0   dir1   dir2

この例では、(/) Zshがディレクトリのみを表示するように、ワイルドカードの結果を修飾します。ファイルだけを一覧表示するには、(。)を使用します 。シンボリックリンクを一覧表示するには、(@)を使用します 。実行可能ファイルを一覧表示するには、(*)を使用します 。

% ls ~/bin/*(*)
fop  exify  tt

Zshはファイルタイプのみを認識しません。また、同じワイルドカード修飾子の規則を使用して、変更時間に従って一覧表示することもできます。たとえば、過去8時間以内に変更されたファイルを検索する場合は、 mhを使用します。 修飾子(変更済みの場合) および時間 )および時間の負の整数:

% ls ~/Documents/*(mh-8)
cal.org   game.org   home.org

(たとえば)2日以上前に変更されたファイルを見つけるには、修飾子が mdに変更されます。 (変更済みの場合 および )正の整数の場合:

% ls ~/Documents/*(+2)
holiday.org

ワイルドカード修飾子と修飾子を使用してできることは他にもたくさんあるので、詳細についてはZshのmanページをお読みください。

ワイルドカードの副作用

ワイルドカードをBashで使用するのと同じように使用するには、Zshでワイルドカードをエスケープする必要がある場合があります。たとえば、Bashのサーバーにいくつかのファイルをコピーする場合は、次のようなワイルドカードを使用できます。

$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14

これはBashで機能しますが、Zshは scp を発行する前にリモート側の変数を展開しようとするため、エラーを返します。 指図。これを回避するには、リモート変数をエスケープする必要があります:

% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14

新しいシェルに切り替えるときにイライラするのは、これらのタイプの小さな例外です。 Zshを使用する場合はそれほど多くはありませんが(Zshを体験した後にBashに戻すと、おそらくもっと多くなります)、それらが発生した場合は、落ち着いて明示的にしてください。 POSIXを厳密に順守することに失敗することはめったにありませんが、それが失敗した場合は、問題を調べて解決し、先に進んでください。 Hyperpolyglot.orgは、職場と自宅で1つのシェルに固執している多くのユーザーにとって非常に貴重であることが証明されています。

次のZshの記事では、テーマとプラグインをインストールしてZ-ShellをさらにZ-ierにする方法を紹介します。


Linux
  1. lsの使用を開始する

  2. 相互運用性のためのSambaの使用開始

  3. LinuxでSSHを使い始める

  1. GnuCashの使用を開始する

  2. LinuxでPostgreSQLを使い始める

  3. 方法:Ansibleを使い始める

  1. Etcher.ioを使い始める

  2. 正規表現を使い始める

  3. Tmuxを使い始める