タグ

zshに関するdmizuno55のブックマーク (22)

  • bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄

    bashからzshに乗り換えるユーザーを対象に16の違いをまとめました。MacOSもbashからzshに変更になりましたので、zshを使い始めるにあたってのポイントを解説していきます。 はじめに zshとは? 2019年、WWDC19の基調講演でApple社は次にリリースする「MacOS X Catalina」より標準のシェルを「zsh」に変更すると発表しました。そして現在、Macを購入したり最新のバージョンにアップデートしてターミナルを開くとbashではなくzshが起動します。 もともとMacOS Xは当初tcshであったのがv10.3 Pantherよりbashに変更された経緯があり今回それがzshにさらに変更された形になります。 こうなった経緯としてはbashのライセンスとセキュリティによる事情があります。MacOS Mojaveまでに搭載されているbashはバージョンが3で実はこれ

    bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄
  • Macがzshになるなら、ZLEを習得するっきゃない! | DevelopersIO

    こんにちは、平野です。 WWDC 2019にて、macOS Catalinaではzshがデフォルトのシェルとして採用されることが発表されました。 https://support.apple.com/en-ca/HT208050 もちろんデフォルトが変わるというだけで、使い慣れたシェルを使い続けることができますが、 せっかくなのでそれにかこつけて、zshの機能の一つであるZLEをご紹介したいと思います。 zshというと「補完がすごい!」と紹介されることが多いように感じますが、 補完の機能は使いこなすのが難しくて、正直私には手に負えないと感じています。 一方ZLEは上辺をちょっと理解しただけで、 めちゃくちゃ簡単にインタラクティブシェルに機能追加ができちゃいます!! これを機会にzshを使い始めてもいいのよ? なお、あくまでもzshの機能の紹介であり、bashとzshの比較とかそういう内容では

    Macがzshになるなら、ZLEを習得するっきゃない! | DevelopersIO
  • おい、peco もいいけど fzf 使えよ - Qiita

    (続編; --expect オプションの酷使について)私の fzf 活用事例 peco 便利ですよね。正直、使い始めてしまうと使わない日はありません。最近の CLI 界隈では選択的インターフェイスやインタラクティブフィルタなどと呼ばれるツールが盛んに開発されています。特に peco は ghq との連携で一躍人気が出た気がします。 ghqを使ったローカルリポジトリの統一的・効率的な管理について こんなやつですね。以下は ghq のリポジトリへのアクセスを簡単にするためにスクリプトです。 # Require Bash 4.0+ peco-src() { local selected selected="$(ghq list --full-path | peco --query="$READLINE_LINE")" if [ -n "$selected" ]; then READLINE_LI

    おい、peco もいいけど fzf 使えよ - Qiita
  • zsh の補完関数の自作導入編

    # 補完を有効にする autoload -U compinit compinit -u # 補完メッセージを読みやすくする zstyle ':completion:*' verbose yes zstyle ':completion:*' format '%B%d%b' zstyle ':completion:*:warnings' format 'No matches for: %d' zstyle ':completion:*' group-name '' 補完関数のルール $fpath の通ったディレクトリに補完関数を置く nyan コマンドの補完関数なら _nyan という名前で保存する 補完関数の先頭には #compdef nyan と補完対象のコマンド名を書く ファイル名と同じ名前の関数を作りその中に補完関数を書く ~/zsh/functions/_nyan

    zsh の補完関数の自作導入編
  • zshでhook関数を登録する - Qiita

    zshでは、何か操作を行ったときに呼び出されるhook関数を登録できる。これを使うと、例えば「コマンドを実行するたびにこの関数を実行する」ということができるようになる。もうすでに使ってる人も多いと思うけど、ここでその使い方をまとめておく。 hook関数を登録するには、add-zsh-hook関数を使う。使い方としては、「add-zsh-hook <hook名> <関数名>」という形で呼び出す。「hook名」はどういうときに関数が呼び出されるかというイベント種別を表す文字列で、詳しくは後で説明する。 例 次の例ではprecmdのときにprecmd_function1という関数を呼び出すように登録している。

    zshでhook関数を登録する - Qiita
  • zshの起動を高速化する方法 - なっく日報

    ネタがないので、昔こんなことをやってzshの起動を高速化したよというのを共有したいと思います。 計測 〜が遅いという場合、プロファイリングするのが定石ですね。 http://blog.uu59.org/2013-06-01-zsh-optimize.html という素晴らしい記事を参考に、 ボトルネックを割り出しました。 ↑の記事に全て書いてますが、一応プロファイリングの方法をコチラにも書いておくと、 .zshenvの先頭行に↓を足す zmodload zsh/zprof .zshrcの最後の行に↓を足す if type zprof > /dev/null 2>&1; then zprof | less fi という感じ。 新しくzshを起動すると、lessで↓のようなプロファイリング結果が開きます。 num calls time self name -------------------

    zshの起動を高速化する方法 - なっく日報
  • zshの構文を読み解く - $shibayu36->blog;

    ちょっと前にzawで更新順にブランチを表示してチェックアウトするやつを作ったのだけれど、その時参考にしたzshのスクリプトが全く読めなかったので読みといてみた。 local branches_list="$(git show-ref | awk ' $2 != "refs/stash" { print $2 }' )" : ${(A)cand_descriptions::=${${(f)${branches_list}}#refs/(remotes|heads|tags)/}} まずlocalは変数定義。 次に$()はコマンド実行なので、中に含まれているコマンドを実行する。さらにそれが""で囲まれているので、出力結果を文字列として変数に格納する。 次の行。最初の:は何もしないコマンド。これがないと変数展開の結果をコマンド実行しようとしてしまう。 ${}は変数展開。この中でいろいろする。 最

    zshの構文を読み解く - $shibayu36->blog;
  • dotfilesをキレイキレイするついでに晒す - Qiita

    はじめに この記事は チームスピリット Advent Calendar 2017 の17日目の記事です。 クリスマスも近いので少し早い気もしますが私の dotfiles を晒します。 使っているもの macOS/Ubuntu そろそろ自宅のPCmacOS にしたいんですが、時期 Mac mini はいつ発表されるんでしょうねえ。 Homebrew/Linuxbrew macOS で Homebrew を使っているユーザーは多いと思うのですが、Linux派生OSでも Linuxbrew で管理すると捗ります。 パッケージがユーザーインストールになるので管理が容易ですし、頻繁にインストールスクリプトが更新されています。(あるいは自動的に最新版を取得するように設定されている。) Homebrew — macOS 用パッケージマネージャー Linuxbrew | The Homebrew pa

    dotfilesをキレイキレイするついでに晒す - Qiita
  • 唸れ!重装系ZSH!次世代のトレンドを体験せよ。 - Qiita

    突然だが、ZSHは標準シェルとして使っているだろうか? 自分はfishも試してみたが、-Uで設定が自動的に書き込まれるあたりが逆に気に入らなかった。 現在の自分の設定を見渡しにくいというのが印象的だった。 最初から出来上がっているので、シェルというよりもGUIアプリの様だった。普段使いでないマシン、例えばラズパイとかに入れると費用対効果が高くなるとは思うが、ZSHのように「漢の意地」をギュウギュウと詰め込んでいくような代物ではなかった。 だからやっぱりZSHなのだ。 あくまで「インタラクティブ」なシェルの話をしたい。だからBashやボーンシェルは今回は論外なのだ。(インタラクティブとは「双方向な」の意でシェルに関しては対話型という意で使われるが、再描画可能なシェルこそ、よりインタラクティブだと言える。) 現在のトレンド ZSHの中でも潮流がある。現在のトレンドはみな起動時間をそれはもうF1

    唸れ!重装系ZSH!次世代のトレンドを体験せよ。 - Qiita
  • Zsh 入門者のための超速設定ガイド - Qiita

    はじめに このガイドでは、はじめて Zsh を使う人や Zsh の便利な使い方を知らない人に向けて、いくつかの便利な設定と操作方法を紹介します。また、 Zsh についての疑問を素早く解決できるよう、マニュアルの調べ方や他のドキュメントへのリンクも盛り込んであります。 このガイドでカバーしきれていない設定や分かりやすいドキュメントをご存知でしたら、ぜひ編集リクエストやコメントでお知らせください。 設定ファイル ここでは主に普段のキー入力数を大幅に減らせるような設定を紹介します。 .zshrc ~/.zshrc は Zsh のインタラクティブシェル(ユーザーがコマンドを入力する画面)が起動した際に読み込まれる設定ファイルです。 Zsh スクリプトを実行したり、 zsh -c 'command...' でコマンドを実行したりしたときには読み込まれません。このファイルには主に Zsh の操作に関す

    Zsh 入門者のための超速設定ガイド - Qiita
  • .zshrcの設定例(設定内容の説明コメント付き) - Qiita

    zshの設定ファイルである、 .zshrc の設定例です。 標準シェルである bash では出来ない機能をいくつか入れています。 zshのインストール方法については以下をご覧ください。 https://qiita.com/d-dai/items/084cace7f6bfd3580f9d 設定の特徴 cd を実行した後、自動で ls -ltr を実行 cd で自動で pushdされる history コマンドで時刻も表示 Ctrl+rでインクリメンタルサーチ、Ctrl+sで逆順サーチ プロンプトに現在時刻を表示 gitのブランチ名をプロンプト右に表示 cdを省略して、ディレクトリ名だけ入力しても移動が可能 Tabを押して補完を表示したら、左右キーで候補選択可能 # Ctrl+Dでログアウトしてしまうことを防ぐ setopt IGNOREEOF # 日語を使用 export LANG=ja_

    .zshrcの設定例(設定内容の説明コメント付き) - Qiita
  • zsh のシェルをリセット - Qiita

    とかって書いてあると,source する度に,cd した後の ls の結果がダブる(もちろん,chpwd_function"+=" が原因). けど,reset コマンドだと,これを解消してくれない(当は,一度完全にシェルをリセットして,まっさらな状態に .zshrc を適用させて欲しい…☆) …ってことを実現するには,

    zsh のシェルをリセット - Qiita
  • timeコマンドについて調べた - Qiita

    zshのtimeと/usr/bin/timeが別物ってことに気づかずハマったので、メモ。 使い方としてはどちらも引数にコマンドを渡すと、そのコマンドの実行時間を出力してくれるというもの。 zsh zshでtimeコマンドをそのまま使うとzshの提供するtimeが発動する。

    timeコマンドについて調べた - Qiita
  • peco/percolでCUIなスニペットツールを作ってみる - Glide Note

    以前にSheetというスニペットツールを利用すると大変便利と書いた。 CUIなスニペットツールsheetが便利なのでzshでsheetファイルを補完 - Glide Note - グライドノート で、障害対応で使うコマンドとかよく忘れるコマンドを大量に登録してて、毎日使ってて重宝してるんですが、スニペットが 増えると管理が破綻する問題があって、pecoやpercolを使えば解決出来そうと思ってやってみた。 仕組み snippets用のファイル or sheetのスニペットファイルをpeco/percolで絞りこんで、クリップボードに送ったりして簡単に利用できるようにする よく使うコマンドのスニペットファイルを用意 sheetの資産をそのまま利用も出来るんですが、今回は下記のような感じでファイルを~/.snippetsで用意。私が使ってるやつから一部抜粋。 1 2 3 4 5 6 7 8 9

  • bash&zshでシングルクォートのエスケープ - ボクノス

    ハマったのでメモ。 bash&zshでシングルクォートのエスケープをする場合はちょっとしたテクニックが必要らしい。 ダメダメ例 ダメダメなエスケープ。 % echo 'tanaka\'s OS' quote>残念ながら'tanaka\'で終わってしまう。 回避する。 エスケープするにはちょっとしたテクが必要。 % echo 'tanaka'\''s OS' tanaka's OS'\''という意味不明なエスケープをする。 何故か? 分解してみる。 % echo 'tanaka' \' 's OS' tanaka ' s OSシングルクォートの中で\'というエスケープが出来ないので、一旦文字列を終了し、\'を入力。もう一度文字列を再開する。 まとめ シングルクォートのエスケープはかなり面倒。 shも同様なので、シェルスクリプトを書く際は要注意。 ダブルクオートなら"tanaka's OS"だ

    bash&zshでシングルクォートのエスケープ - ボクノス
  • http://blog.uu59.org/2013-06-01-zsh-optimize.html

  • .zshrcで見かけるautoloadの意味と使い方 - Qiita

    今回はこの autoload が何をするものなのか解説します。 autoloadはシェル関数を読み込む autoload はシェル関数を 自動読み込み するシェルの組み込み関数です。上記のスクリプトの場合、 compinit というシェル関数を自動読み込みします。 シェルコマンドは PATH に入っていればそれだけで実行可能でしたが、シェル関数の場合は関数を定義しなければ使えません。 autoload はファイルシステム上にある関数定義を読み込むための関数なのです。そして autoload 探索するディレクトリは FPATH に入っています。 余談ですが FPATH だと : 区切りの文字列、 fpath だと配列になります。PATH と path と同じですね。 シェル関数とシェルコマンドの違い autoloadを使ってみる % mkdir ~/functions % FPATH="${

    .zshrcで見かけるautoloadの意味と使い方 - Qiita
  • zshでHomebrewを使用する場合に設定しておいたほうが良いこと - よんちゅBlog

    Homebrewの導入方法については以前の記事を参考にして下さい。 以下、homebrewおよびzshインストール後に設定していきます。 1.zsh流の環境変数PATHの設定方法 環境変数PAHTに "/usr/local/bin" などを追加する場合、zshでもbashと同じ方法で設定することができますが、今回はzsh流の設定方法を行いましょう。 以下の設定を "~/.zshrc" に追加して下さい。 ## 重複パスを登録しない typeset -U path cdpath fpath manpath ## sudo用のpathを設定 typeset -xT SUDO_PATH sudo_path typeset -U sudo_path sudo_path=({/usr/local,/usr,}/sbin(N-/)) ## pathを設定 path=(~/bin(N-/) /usr/l

    zshでHomebrewを使用する場合に設定しておいたほうが良いこと - よんちゅBlog
  • zshの起動が遅いと感じたら、zprofでプロファイリングしてみる - Qiita

    zshの設定を何も考えずに育てていくと、どんどん起動が遅くなっていくことがある。 最近遅いな、と思ったら、zprofでプロファイリングしてみよう。 まずは、zsh起動時に一番最初に読み込まれる ~/.zshenv の先頭に以下を追記して、zprofを実行。

    zshの起動が遅いと感じたら、zprofでプロファイリングしてみる - Qiita
  • git でよく使う &quot;^&quot;(サーカムフレックス) が zsh に解釈されて困る件 - Qiita

    小手先では、サーカムフレックスをエスケープすれば問題ないのですが、釈然としない… 原因 setopt extendedglob すると、サーカムフレックスがファイル名のパターンマッチに使われるようになります(引用の1)。 そして、パターンマッチしてファイルが見つからなかった時アボートする(引用2)、という振る舞いが合わせ技として効いているようです。 対処 エスケープし続ける tig したり、一覧性のよいフロントエンドが使えるならそうすればいいんじゃね? サーカムフレックスじゃなくて"~"(チルダ)を使う コメントいただきました。daimatz さん、ありがとうございます! zle を駆使する 工夫と趣向と分別と。で紹介されていた git-escape-magic を使うとか 制服ガール(コメントで教えていただきました。tunepolo さん、ありがとうございます!) setopt no_n

    git でよく使う &quot;^&quot;(サーカムフレックス) が zsh に解釈されて困る件 - Qiita