zsh -シート
基礎
基本的なコンセプトから始めましょう.
zshはおそらくbash ++です
zshはkshやtcshの基本的な機能の多くを持っているので、条件文、展開、または割り当てのような一般的な構文はほとんど同じように動作します.
zshはあなたが役に立つかもしれないが、クールな追加機能をもたらします.
zshは"z - shell "を表し、Unixシステム用です.これは、端末上で使用するコマンドをラップするインタラクティブシェルです.
しかし、ZSHはbashもshもありません
たとえZSHがbashとshと非常に互換性があるとしても、若干の顕著な違いがあるのを見ます.その結果、次のように動作します.
zsh myscript
sh myscript.zsh
./myscript.sh
しかし、それは少し紛らわしいです、そして、デフォルトのふるまいが同じでないので、あなたは最悪のシナリオで予想外の誤りさえ得ることさえできます.インストール
zshがシステムですでに利用可能であるならば、zshがあなたの現在のシェルであるかどうかチェックすることができます:
echo $0
zsh
すばやくプロンプトを切り替えるchsh -s /bin/zsh
ベストフレームワーク
インストールできますOh my zsh , 設定を緩和し、カスタマイズのトン(例えば、テーマ、プラグイン、別名など)を提供する素晴らしいフレームワーク.
不可知論法
端末で次のコマンドを実行できます.
sudo apt update && apt install zsh && chsh -s /bin/zsh
上記のコマンドはパッケージをインストールし、デフォルトのシェルとして設定します.を返します./bin/zsh
, 使えます$(which zsh)
代わりにシステムにzshを見つけます.Linuxディストリビューションによっては
sudo apt
適切なコマンドで.例えば、あなたの使用yum -y install
セントスとpacman -S zsh
アーチLinuxで.設定ファイル
zshはbashのような設定ファイルを使います:
.zshenv # env vars
.zprofile # external commands
.zshrc # global settings and customizations such as autocompletion, case sensitivity, aliases, etc
.zlogin # commands on shell login
.zlogout # commands on shell exit
鞘
それは
#!
bashファイルの先頭にあります."Bang "は感嘆符"!"#!/usr/bin/zsh
それを忘れないようにするのが不可欠です#!/usr/bin/bash
, 次に、実行時にbashインタプリタが使用されます./myscript
, デフォルトのシェルにかかわらず.スクリプトの実行
zsh myscript.zsh
また、スクリプトを実行可能にして実行できます.chmod +x myscript.zsh && ./myscript.zsh
ZSHは自動修正できる
zshは、小さなタイプミスを検出し、コマンドの修正を要求するのに十分です.
zsh: correct 'MISPELLED_COMMAND' to 'COMMAND' [nyae]?
また、フォルダ名とファイルのために動作することに注意してください.
それはかなりクールですが、いくつかのケースで悩まされる可能性があります.そのように自動修正を無効にすることができます.
nocorrect MY_CUSTOM_COMMAND
あなたはCDを使用する必要はありません
あなたは既にこのトリックを知っているかもしれませんが、あなたがそうしない場合、変更ディレクトリコマンドはzshでディレクトリを閲覧する必要はありません.以下のコマンドを使用して、希望するパスを取得します.
/Users/ella/Desktop/
例えば、入れ子になったディレクトリにquicky移動するのはかなり便利です.例えば、ドラッグして、端末内のフォルダをドロップしてEnterキーを押します.それは可能性があります
autocd
オプション.端末でキーボードショートカットを使用できます
bashのように、時間とエネルギーを得るために端末でショートカットを使用することができます.例えば、
Ctrl + U
カーソルから行の先頭まで削除できますCtrl + L
端末をクリアします.ベストドキュメント
man zsh
スクリプティング
あなたはbashで学んだほとんどのトリックを使用することができますし、構文は同じです.しかし、追加の機能と重要な違いがあります.
zsh array 1 - indexed
それはbashとの大きな違いです.配列は
0
でも1
, そのため、ほとんどのユーザにとってより直感的ではないでしょう.MyArray=(All In One)
echo ${#MyArray[2]} # displays 2 in zsh (number of chars of the second element) and 3 in bash (number of chars of the third element)
その結果、全長はzshの最後のインデックスと同じです.NB :デフォルトの動作を0 - indexed配列を変更することができますが、一般的なルールとして推奨するものではありません.
ZSHはglobbingでよりよい
bashでは、
find
コマンド.たとえば、すべてのファイルにコマンドを適用するには、次のコマンドを使用します.find . -type f -print | xargs CUSTOM_COMMAND
zshではglobbingを使うことができます.CUSTOM_COMMAND **/*(.)
**/
を返します.*
すべての要素を対象とする.(.)
はファイルにマッチする.すべてのglob修飾子
必要な要素をターゲットにするには、フィルタのような多くのGlob修飾子を結合できます.
修飾子
説明
/
ディレクトリF
空以外のディレクトリ(空:(/^F)
).
プレーンファイル@
シンボリックリンク*
実行可能ファイルr
/A
/R
所有者/グループ/世界によって読めるw
/I
/W
所有者/グループ/世界によって書き込み可能x
/E
/X
所有者/グループ/世界による実行可能s
/S
/t
setuid/setgid/sticky bitf
spec
has chmod
スタイルパーミッションspec
u:
name
:
ユーザー所有name
g:
name
:
グループ所有name
a[Mwhms][-+]
n
与えられた単位のアクセス時間(下記参照)m[Mwhms][-+]
n
与えられた単位の修正時間L[kmp][-+]
n
与えられた単位のサイズ(下記参照)^
修飾子の後にNEGATE-
リンクをトグルします(最初の1つはオンになります).N
マッチがなければ空のパターンが空になるD
リーディングドットn
数値をソートするo[nLamd]
与えられたコードによる順序O[nLamd]
与えられたコードの逆の順序[
num
]
絹篩で篩うたようnum
-ファイルの現在の順序[
num1
,
num2
]
絹篩で篩うたようnum1
-東理大学num2
-ファイルSource: obda.net
コモントリック
彼らは魔法ではないので、修飾子に注意してください.あまりに大きなフォルダをスキャンすると、エラーが発生する可能性があります.とにかく、それは確かに一般的な操作を緩和します.
リストファイルのみ
ls **/*(.)
リストディレクトリのみ
ls **/*(/)
特定の拡張子を持つすべてのファイルを見つける
ls **/*.md
25メガバイトより大きいファイルを見つける
ls **/*(.Lm+25)
最後の2日間に変更されたファイルをリストします
ls **/*(.md-2)
特定のユーザーが所有するファイルのアクセス許可を変更する
chmod 644 **/*(u:ella:) # provided that ella exists ^^
ああ私のzshの選択肢?
それは積極的に維持され、使用して構成するために非常に友好的であるので、devはしばしば私のzshを使用することをお勧めします.それはZSHをすべてカスタマイズする唯一の方法ではない.
たとえば、開いている
.zshrc
ファイルを追加し、追加のレイヤーなしでプロンプトをカスタマイズする特定の行を書き込みます.主な注意点としては、もう少し複雑で、おそらく面倒なことですが、多くのdevはフレームワークをインストールするのではなく、ネイティブのツールに固執するでしょう.# for all options @see https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html
PROMPT='%F{red}%1~%f %# '
# aliases
alias gs='git status'
alias gc='git commit'
私は完全にそのアプローチを尊重する.私は、しかし、代わりのフレームワークの大ファンでありません.私がテストしたほとんどのツールは信頼性がありません.あまりに多くの依存関係は懸念でありえます.加えて、多くの場合、すべての機能とエイリアスのわずかな割合を使用してプラグインをトンのインストールとロードを終了します.
更なる
あなたは、より多くのカスタマイズと結合を必要とするかもしれません.
カリ・リナックス
カリリナックスとそのデフォルトに飛び込む価値がある
.zshrc
ファイル.ペンのテストディストリビューションでは、バインドや補完などの高度な機能を使用することができます.# ~/.zshrc file for zsh interactive shells.
# see /usr/share/doc/zsh/examples/zshrc for examples
setopt autocd # change directory just by typing its name
#setopt correct # auto correct mistakes
setopt interactivecomments # allow comments in interactive mode
setopt magicequalsubst # enable filename expansion for arguments of the form ‘anything=expression’
setopt nonomatch # hide error message if there is no match for the pattern
setopt notify # report the status of background jobs immediately
setopt numericglobsort # sort filenames numerically when it makes sense
setopt promptsubst # enable command substitution in prompt
# enable completion features
autoload -Uz compinit
compinit -d ~/.cache/zcompdump
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' rehash true
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
# force zsh to show the complete history
alias history="history 0"
# configure `time` format
TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S\ncpu\t%P'
Source: Kali Linux - .zshrc ソースコマンドを忘れないでください
The
source
他のスクリプトの中でスクリプトを実行したり、現在の端末で修正を適用したい場合はコマンドが必要です.たびに変更する.zshrc
, Aを実行するsource ~/.zshrc
更新された設定を読み込みます.また、現在の端末を閉じることができます.
エイリアス
私はエイリアスを使うのが大好きです.私はそれが生産性を向上させると、同じコマンドラインを繰り返し覚えての面倒を削除する素晴らしい方法だと思う.
もちろん、zshで設定できます.あなたは直接それらを置くことができます
.zshrc
:# 🥷🏻
alias erase="history -p"
別のファイルからのソース
いくつかのエイリアスがあるのですが、別のファイルを使って物事を整理しておくことをお勧めします.私は通常グローバルエイリアスと特定のものを設定します.例えば、私のフリータイムと仕事のエイリアスに使用するエイリアスです.
それを達成するためにいくつかのアプローチが、最も簡単ですが
source
あなたの追加ファイル.zshrc
:source "~/.aliases_for_work"
source "~/.aliases_for_fun"
サフィックスエイリアス
エイリアスを定義するには
-s
オプション:alias -s {css,html}=vi
上の行が設定されますvi
編集者として.css
and .html
ファイル.グローバルエイリアス
zshではどこでも拡張されるグローバルエイリアスを定義できます.
alias -g vid='-v -i --d' # letters are arbitrary here
次に、使用することができますvid
端末に直接、先頭、中央、またはコマンドラインの末尾にあるかどうか.Reference
この問題について(zsh -シート), 我々は、より多くの情報をここで見つけました https://dev.to/jmau111/zsh-the-sheet-4mb9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol