タグ

zshに関するsyohexのブックマーク (25)

  • zshで特定のコマンドをヒストリに追加しない条件を柔軟に設定する - mollifier delta blog

    zshを使ってると、 ^R なんかでコマンドヒストリから探すことが多くなる。なので、ヒストリは大事にメンテナンスしたい。余計なのを入れたくない。 zsh であるコマンドを履歴に登録しない方法 | Carpe Diemってページで先頭にスペースを入れるテクニックが解説されてたけど、もうちょっと柔軟に条件指定できる方法があるので紹介。 zshaddhistory を使って HISTIGNORE みたいなことをする bashには HISTIGNORE という環境変数があって、ヒストリに保存しないコマンドの条件を * とかワイルドカードでパターン指定できる。でも、なぜかzshにはない。 でもそこはzsh、何とかする方法があった。zshaddhistory という特殊関数を使うと解決できる。 zshaddhistory 関数はコマンドラインがヒストリに追加される前に呼び出されて、こいつが偽(0以外)

    zshで特定のコマンドをヒストリに追加しない条件を柔軟に設定する - mollifier delta blog
    syohex
    syohex 2017/03/08
  • zsh のあまり知られていなそうな機能 - Qiita

    自分が使っている便利な機能を紹介 $ rm */(-@) ファイル修飾子は使っている人も多いはず。 zsh で find を使わずに簡単にファイルを絞り込む *(@) でシンボリックリンク *(-@) でリンクが切れたシンボリックリンク rm **/*(-@) で下位階層含めたリンク切れのシンボリックリンクの削除 修飾子で他に便利なのは *(-ch-1) シンボリックリンクのリンク先が1時間以内に作られたファイル *(U) 自分のファイル *(u:hoge:) ユーザ hoge のファイル *(/^F) 空のディレクトリ $ tkdiff =(zcat xxx.gz | cut -f 1) =(zcat xxx.gz | cut -f 2) プロセス置換 <(zcat xxxx.gz | grep yyyy | cut -f 2 ) みたいな形でわざわざ一時ファイルにしなくても、ファイル指

    zsh のあまり知られていなそうな機能 - Qiita
    syohex
    syohex 2016/02/11
    cdが二引数を取ることができたとは知らなかった.
  • zshで簡単にコマンドライン オプションを解析する - Qiita

    シェルスクリプトでコマンドライン引数をオプションとして解析したいときは、getoptsを使うのが一般的なやり方だ。 でも、getoptsはGNUスタイルの長いオプションに対応していないので、--helpとかのオプションを受け付けれないという欠点がある。そんなときでも、zshならzparseoptsというコマンドを使えば長いオプションでも解析できるので紹介する。 基パターン まずは一番簡単なパターンとして、次の3つのオプションを解析する例を紹介する(mvコマンドのオプションをイメージしている)。どのオプションも引数は取らない。 -v --help --version このオプションをパースするには、zparseoptsというzshの組み込みコマンドを使って、次のように書く。 #!/bin/zsh local -A opthash zparseopts -D -A opthash -- -h

    zshで簡単にコマンドライン オプションを解析する - Qiita
    syohex
    syohex 2015/03/22
  • zsh で source して使うプラグインを作るのは止めにしよう - Qiita

    特に、cd や bindkey など、今動いているシェル上で副作用のある処理を行いたいときは source を使わないとうまくいかないだろう。 一方、source にはこんなデメリットがある。 .zshrc でいっぱい source するとzsh の起動が遅くなる 現在動いているシェルの alias 設定の影響を受ける 特に2つめが厄介だ。例えば grep とかしたときに、alias grep='grep -E' なんか設定してあったら正規表現の意味が変わってしまう。一応 command grep とすれば alias を設定していない元の grep を実行できるけど、いちいちそう書くのも手間だ。 そんなときは autoload を使う形に書き換えるとうまくいく。 autoload というのは「関数体の読み込みを実行する時まで遅らせる」という zsh の機能のこと。これで ~/.zshr

    zsh で source して使うプラグインを作るのは止めにしよう - Qiita
    syohex
    syohex 2013/12/13
  • はてなブログ | 無料ブログを作成しよう

    中年以降の人生を考えるための5冊 今までずっと、ひたすらラクなことや楽しいことだけをやって生きていきたいと思っていたのだけど、40歳を過ぎた頃から、今までのやり方ではいろいろと行き詰まってくるようになってきました。何をやってもそんなに楽しくない。これからの人生はずっと下り坂が続いてい…

    はてなブログ | 無料ブログを作成しよう
    syohex
    syohex 2013/02/13
  • zsh補完関数を自作すると便利 - はこべにっき ♨

    会社でコードを書いていると、いろんなプロジェクトのディレクトリ間を頻繁に移動します。毎回cdするのはだるいので、それを解消する便利なzsh用の関数と補完関数を書いたので紹介します。はてなエンジニアのひとと、zsh補完関数を書いてみたい人にはそこそこ役立つといった趣のエントリです。 会社のプロジェクトのリポジトリは、~/work/hatena というところに全部まとめています。だいたい以下のような感じです。 > ls ~/work/hatena Hatena-Antenna/ Hatena-Diary/ Hatena-Ugomemo/ git-hooks/ Hatena-Bookmark/ Hatena-Group/ Ridge/ iphone/ Hatena-Coco/ Hatena-Star/ android/ sketch/ 各プロジェクトのリポジトリには頻繁に移動するので、簡単なz

    zsh補完関数を自作すると便利 - はこべにっき ♨
    syohex
    syohex 2012/03/11
  • Emacs の ansi-term でディレクトリの変更を検知 - Slip Ahead Logging

    zsh であれば .zshrc などの設定ファイルに以下を. # notify pwd to ansi-term function chpwd_emacs_ansi_term() { echo '\033AnSiTc' $PWD } if [[ $EMACS =~ "(term:.*)" ]]; then chpwd_functions=($chpwd_functions chpwd_emacs_ansi_term) echo "\033AnSiTu" $USER echo "\033AnSiTh" $HOST chpwd_emacs_ansi_term fi これにより Emacs が ansi-term 内のシェルにおける pwd を default-directory として使ってくれるようになるので C-x C-f などでファイルを開こうとした際にシェルの pwd がデフォルトで選

    Emacs の ansi-term でディレクトリの変更を検知 - Slip Ahead Logging
    syohex
    syohex 2012/02/10
    これは便利だ
  • zsh で /opt/*/bin をいっぺんに PATH に追加する - ヤルキデナイズドだった

    /opt や ~/opt に色々と突っ込んだはいいがそのたびに .zshenv を書き換えるのが面倒、という人に朗報です。 path=( ~/opt/*/(s|)bin(N-/) /opt/*/(s|)bin(N-/) $path ) これで /opt/hoge/bin や ~/opt/fuga/sbin がまとめて PATH に追加されます。よかったですね。 解説 $path は $PATH と関連づけられた配列変数です。 path=(a b c) すると $PATH が a:b:c にセットされます。 /opt/*/(s|)bin ここは普通の glob です。後に続く (N-/) は zsh の拡張 glob パターンで、カッコホゲホゲを後置するとパターンマッチの動作を変更できるアレです。便利ですね。 N はパターンにマッチするパスがなくても警告を出さず空文字列に置換する指定、 -

    syohex
    syohex 2011/12/08
    こんな書き方できたんですねぇ。
  • perlbrew-completionを書いた / またはcompletionスクリプトの開発とデバッグの話 - Islands in the byte stream (legacy)

    きょうびmakeやgitでも補完が効くなか、perlbrewでも補完が効いてほしいですよね。 たとえば私はマシンによってperlbrewで入れたperlはけっこう違っているのですが、どのマシンにどのバージョンのperlを入れたか正確には覚えていません。なのでperlbrew use [tab]で利用可能なperlの一覧が出るなどしてほしいところです。 そこでperlbrew-completionを書きました。pull-req済みなのできっと次のバージョンあたりから使えることでしょう。 $ perlbrew [tab] alias install off available install-cpanm self-upgrade clean install-patchperl switch compgen install-perlbrew switch-off display-bashrc l

    perlbrew-completionを書いた / またはcompletionスクリプトの開発とデバッグの話 - Islands in the byte stream (legacy)
  • brew、cpanm、plackupを使いたい(zsh編) - アリ

    まずはfpathの設定を.zshrcに書く。 fpath=($HOME/.zsh/functions $fpath) brewは補完設定ファイルが付属しているので~/.zsh/functionsにコピーする。 % cp /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/functions/_brew cpanmとplackupの補完設定ファイルはここからもらってくる。 zsh autcompletion for plackup / cpanm / dzil — Gist ~/.zsh/functions以下に_cpanm、_plackupという名前で保存すればいい。

    brew、cpanm、plackupを使いたい(zsh編) - アリ
    syohex
    syohex 2011/04/01
    補完定義ファイルがあるので参考にする
  • zsh でも anything.el っぽいの - memo

    2011-02-22 zsh でも anything.el っぽいの書いた。 https://github.com/zsh-users/zaw $ git clone git://github.com/zsh-users/zaw Cloning into zaw... remote: Counting objects: 199, done. remote: Compressing objects: 100% (149/149), done. remote: Total 199 (delta 76), reused 133 (delta 43) Receiving objects: 100% (199/199), 31.56 KiB, done. Resolving deltas: 100% (76/76), done. $ cd zaw $ source zaw.zsh して、 ^X; で

    syohex
    syohex 2011/02/25
    あとで試す
  • (zsh版)pushし忘れないようにプロンプトに表示するようにした - ( ꒪⌓꒪) ゆるよろ日記

    今日はPython-hack-a-thonなんだけど結局行けなかったため、一人発火村イェーー……。 ってことで pushし忘れないようにプロンプトに表示するようにした - ぱせらんメモを参考に、zshのRPROMPTにremoteにpushしているかを表示するようにしてみた。 今.zshrcに設定してる内容は、zsh で Git の作業コピーに変更があるかどうかをプロンプトに表示する方法 - ess supを参考にさせてもらいました。そこに、上記のエントリの内容を追加してます。 autoload -Uz add-zsh-hook autoload -Uz vcs_info zstyle ':vcs_info:*' enable git svn hg bzr zstyle ':vcs_info:*' formats '(%s)-[%b]' zstyle ':vcs_info:*' actio

    (zsh版)pushし忘れないようにプロンプトに表示するようにした - ( ꒪⌓꒪) ゆるよろ日記
    syohex
    syohex 2011/02/21
    プロンプトの改良
  • filmlang.org is Expired or Suspended.

    「 filmlang.org 」のページは、ドメインが無効な状態です。 ウェブサイト管理者の方はこちらから変更・更新を行ってください。 「 filmlang.org 」is Expired or Suspended. The WHOIS is here.

    syohex
    syohex 2011/02/01
    Zshで anythingインタフェース
  • 【レビュー】UbuntuでネイティブにZFSを使う方法 | エンタープライズ | マイコミジャーナル

    ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, and immense scalability. Linuxに移植が進められているZFSはまだ実用的に利用できるという段階にはないが、カーネルモジュールとして読み込んでそのコマンドを試してみるといったことはすでにできるようになっている。ZFS on Linuxで公開されている成果物がそれだ。27日現在の最新版はZFSファイルシステムのバージョン5、プールがバージョン28がサポートされている。ファイルシステムにマウントすることができず実用的には使えないが、ひと通り作業してみる用途には利用できる。 ZFSを導入するためのビルド手順はHowtoForgeで

  • にひりずむ::しんぷる - tmux + multi tab に対応した オレオレ cdd コマンド

    cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - 川o・-・)<2nd life cdd っていうのがあるわけなんですが、もとのやつは screen でかつ、ターミナルはひとつの状況でしか動かないので、修正して使ってる。 .zsh/etc/cdd at master from xaicron's dotfiles - GitHub 変更点は以下 tmux に対応 複数のターミナル(タブ)に対応 フルパス取得のところで、ruby が入ってないことあるので、perl に変更 これがないと死ねる

    syohex
    syohex 2011/01/25
    cddのフォーク版
  • zsh の zmv を使って簡単に複数ファイルを一括リネームする - mollifier delta blog

    連番のファイルがずらーっとあったとき、複数のファイル名を一気にスマートに変えたいことがある。一個ずつちまちまリネームなんてやってられない。そんなときは zsh の zmv を使うと便利なので紹介する。 zmv で何ができるか 例えばこんな感じで 1.txt から 6.txt までファイルがあったとする。 % ls 1.txt 3.txt 5.txt 2.txt 4.txt 6.txtでも、ファイル名短すぎてわかりにくいなー、file-1.txt みたいに頭に file ってつけたいなー、って思ったとしよう。 そんなときのために zsh には zmv ってコマンドがあって、この手の一括リネームがスマートにできる。お手軽な使い方はこんな感じ。 あらかじめ ~/.zshrc にこう書いておいてから、 autoload -Uz zmv alias zmv='noglob zmv -W' 一回のコマ

    zsh の zmv を使って簡単に複数ファイルを一括リネームする - mollifier delta blog
    syohex
    syohex 2010/12/28
    ファイルの一括リネーム。
  • zshのzptyを使って端末が必要な処理を自動化する - 技術メモ帳

    zsh のモジュールに zpty というのがあるのを最近発見した。 どうもコレを利用すれば指定したコマンドを 仮想端末上で実行することが出来るらしい。 具体的にどういったことが出来るようになるのかというと、 端末が必要なプログラムを自動化することが出来る。 たとえば、パスワード入力処理などだ。 パスワード文字列を標準入力から読み込ませようとしても、 大抵のプログラムでは入力できない。 なぜかというと、多くのプログラムにおいてパスワード入力処理は 端末から読み込むように作られているからだ。 zpty を利用すればそういったたぐいのものをすべて自動化できる。 いわゆる、expect というコマンドで実現していたことが zsh だけで出来るのだ。 今回は、簡単に試すことが出来るサンプルとして、 su コマンドのパスワード入力を zpty を使って自動化してみる。 まず、zsh に標準添付されてい

  • oh-my-zsh を使って zsh の便利な設定をまとめて取り入れる - mollifier delta blog

    最近 oh-my-zsh ってのがあるって聞いた。インストールするだけで zsh が便利になるみたいなので、早速試してみた。 oh-my-zsh って何? oh-my-zsh は zsh の設定を管理するフレームワークで、いろんな設定を有効にして管理、更新できるようになる。プロジェクトGitHub で管理されてる。 http://github.com/robbyrussell/oh-my-zsh 特徴としてこんなことが挙げられてる。 40以上のプロンプト テーマ 便利なプラグイン 自動アップデート機能 コミュニティ主体の開発(みんなの設定を取り込んでいく) インストールすると、だいたいこんなことが設定される。 プロンプトがかっこよく(?)なる alias がいっぱい設定される よく使う option が設定される インストール直後はこんな感じ。 Git のブランチ名も表示される。 必要

    oh-my-zsh を使って zsh の便利な設定をまとめて取り入れる - mollifier delta blog
    syohex
    syohex 2010/10/12
  • 横着プログラミング 第3回: 履歴マニア

    最終更新日: 2002-05-18 (公開日: 2002-05-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 コンピュータの方がうまくできることに人間を使うな。 -- Tom Duff *1 私の見る限り、プログラマという人種は決まって事務作業が嫌いな ようである。同じような書類を何枚も書かされたり、1つ誤字があ るから書き直せと言われたりすると、異常にストレスがたまる。 同様に、計算機を使っていても、同じような作業を何度も繰り返し たり、ちょっとでも間違えたら最初からやり直し、というのは耐え られない。そこで、今回は履歴を活用して作業の再利用をするノウ ハウを取り上げる。 シェルの履歴 Unixを使い始めて間もない初心者が作業しているところを見ると、 打ち間違えたコマンドを律儀に最初から打ち直しているのに気づく

    syohex
    syohex 2010/06/10
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
    syohex
    syohex 2010/06/01