タグ

Tipsとzshに関するAmaiSaetaのブックマーク (16)

  • zshでcommand not foundという冷やかなメッセージを暖かくする - Qiita

    いつもの通り そんなコマンドないよ と冷たくあしらわれてしまいました。 コマンドを間違った時に嫌な気持ちにならないように zsh にはもっと暖かいメッセージを言ってもらいましょう。 command_not_found_handler zsh には command_not_found_handler という特別な関数があります。この関数は、存在しないコマンドを呼びだそうとした時に呼ばれます。 ~/.zshrc に以下のように定義してみます。

    zshでcommand not foundという冷やかなメッセージを暖かくする - Qiita
    AmaiSaeta
    AmaiSaeta 2017/03/20
    `command_not_found_handler`
  • 分岐の zsh っぽい書き方 - Qiita

    Help us understand the problem. What is going on with this article?

    分岐の zsh っぽい書き方 - Qiita
    AmaiSaeta
    AmaiSaeta 2015/12/31
    commands連想配列、${foo:-bar}、$+foo
  • 対話モードか否か? - 日々之迷歩

    10月末に行われた第19回シェル芸勉強会の問題をふと思い出すことがありました。 最初の問題が、端末で実行した場合とシェルスクリプトに書いて実行した場合で動きを変える、という内容でした。出題者上田さんの解答例では、aliasが効くかどうかで判定していました。 問題と解答は、出題者上田さんが公開されているページQ1をご覧ください。 b.ueda.tech この問題の意味は、シェルの状態が対話(インタラクティブ)モードかどうか?の判定をどうするかということだと思います。 ところでFreeBSDのデフォルトログインシェルはtcshです。FreeBSDのサーバで作業をしていた時に、ふとシェルの設定ファイルを確認してみました。デフォルトで提供される設定ファイルが下記のようになっています。 > tail -n +24 .cshrc if ($?prompt) then【←シェル変数promptが定義され

    対話モードか否か? - 日々之迷歩
    AmaiSaeta
    AmaiSaeta 2015/12/09
    プロンプト設定用変数であるpromptやPS1が在るかどうかで判別。
  • zsh で 例外処理 - Qiita

    zsh はプログラム言語で言うところの try/catch のような例外処理ができるので紹介する。 シンプルな例 書き方はこんな感じ。 #!/bin/zsh autoload -Uz catch autoload -Uz throw { echo hoge throw 'MyException' echo fuga } always { if catch 'MyException'; then echo "catch MyException!" fi }

    zsh で 例外処理 - Qiita
    AmaiSaeta
    AmaiSaeta 2013/12/19
    文法が気持ち悪いなw
  • 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
    AmaiSaeta
    AmaiSaeta 2013/12/14
    autoloadについて
  • よく使うディレクトリに別名をつける - Qiita

    コマンドに別名をつける方法はよく知られていると思いますが、同じようにディレクトリに別名をつけることができます。 文法 次のようにすると、~エイリアス名 が ディレクトリパス の別名になります。

    よく使うディレクトリに別名をつける - Qiita
    AmaiSaeta
    AmaiSaeta 2013/12/04
    hash -d ALIAS_NAME=DIRECTORY_PATH 後に ~ALIAS_NAME
  • zsh で find を使わずに簡単にファイルを絞り込む - Qiita

    ファイルの種類、タイムスタンプなんかで条件を指定してファイルを絞り込みたくなる時があるだろう。例えばこんな場合だ。 通常ファイルだけを別の場所に移動させる(ディレクトリはそのまま残す) シンボリックリンクだけ削除する タイムスタンプが1日以上古いファイルだけ削除する こういうときは普通は find コマンドでファイルを探すんだけど、zsh の「ファイル修飾子」を使うと1行で簡単にできるようになるので紹介する。 ファイル修飾子とは 「ファイル名修飾子」とは、ファイル名指定の後に付けるファイルの種類で絞り込みを行うための記号のこと。 例えばこんな感じ。

    zsh で find を使わずに簡単にファイルを絞り込む - Qiita
  • 実行時間が長いコマンドが終わったら、zshが勝手にGrowl通知してくる (Mac/Linux/SSH接続先) - Qiita

    実行時間が長いコマンドが終わったら、zshが勝手にGrowl通知してくる (Mac/Linux/SSH接続先)ZshMacLinuxGrowlMacOSX Linuxカーネルのmakeとか、実行に時間のかかるコマンドを実行して、終わるのを待って眺めるのは辛い。でもその隙に別のことをやると、そのまま完了を待っているのを忘れてしまって時間を無駄にした気持ちになって辛い。&& growlnotify とかコマンドの後につけるのを忘れたことに気がついて、Ctrl-Cで一旦止めるかどうか悩むのが辛い。 というわけで zshのフックを適当に使って、普通にzshでコマンドを叩くだけで、閾値以上の時間がかかるコマンドが終わると通知してくれる設定を考えてみた。 MacのGrowl 対応 ( growlnotify 必須 ) Linuxデスクトップ通知対応 ( notify-send 必須 ) SSH接続先

    実行時間が長いコマンドが終わったら、zshが勝手にGrowl通知してくる (Mac/Linux/SSH接続先) - Qiita
  • zsh の分からない用語を man から素早く探す - Qiita

    zsh でいろいろやろうとするとき man が頼りになるんだけど、大きすぎて目的の単語を探しにくいことがある。そういうときは man の中で検索すればいいんだけど、それを一気にやってくれる関数を作っておくと便利なので紹介する。10 new zsh tricks you may not know... という記事に書いてあったのを元にしてる。 書き方 これを ~/.zshrc に書いておく。

    zsh の分からない用語を man から素早く探す - Qiita
  • zshのalias -s (suffix alias)が神な件 - プログラムモグモグ

    まず, 他のシェルをお使いの人にはごめんなさい. aliasコマンドの-sが使えるのは zsh 4.2.x- で, 他のシェルでは実装されていないと思います. あと, もう既に alias -s 知ってるよーって人は読まなくていいです. alias -s って何? 打ったコマンドの後ろ(suffix)を見て, 適当に宜しくやってくれるやつです. 次の例を見て下さい. ~$ echo "print ('hello, world')" > hello.py ~$ python hello.py hello, world ~$ alias -s py=python py=python ~$ ./hello.py hello, world ~$ Pythonのコードは python hello.py で実行出来ますが, お尻が py なら python を使います, とaliasしておけば, ./

    zshのalias -s (suffix alias)が神な件 - プログラムモグモグ
  • zshrcでOSごとに設定を分ける - chulip.org

    OSTYPEでOSの種類を取得できるので条件分けする case "${OSTYPE}" in # Mac(Unix) darwin*) # ここに設定 ;; # Linux linux*) # ここに設定 ;; esac 参考リンク 【コラム】漢のzsh (22) もってけ泥棒! コピペで始めるzsh - リターンズ

    zshrcでOSごとに設定を分ける - chulip.org
  • zsh の分かりにくい記号、用語のまとめ - Qiita

    zsh Advent Calendar もいよいよ最終日なった。便利な使い方とかがいっぱい載ってるので、まだの人は見てみると良いと思う。 こういう Advent Calendar とか便利な Tips とかの記事なんかは、読んでると自分なりにカスタマイズしたくなってくる。それに、単純にコピペするだけじゃなくて、何をやってるのかちゃんと理解したいって人も多いと思う。 でも、そういうときに困るのが、なんか変な記号みたいなのがいっぱいあって何やってるか分かんなくなること。 例えばこんな感じ。 意味わかんないし、(N-/) とかググってもうまく検索できない。 この手の記号とかはいっぱいあるし、知らないことがあるのはしょうがない。でも「調べ方が分からない」ってのはだいぶまずい。「知らなかったとしても必要なときに調べられる」ことが大事だと思う。 というわけで zsh の分かりにくい記号、用語をまとめて

    zsh の分かりにくい記号、用語のまとめ - Qiita
  • zsh で cd ../ したときにカレントディレクトリを補完候補から除く - Qiita

    例えば今 /home/mollifier/work/ にいるとする。 別のディレクトリに移動したくて cd ../ としてタブを打ったとする。 そこで普通ならこんな風に補完候補がでてくる。

    zsh で cd ../ したときにカレントディレクトリを補完候補から除く - Qiita
  • バージョンに依存した zshrc の書き方 #Zsh - Qiita

    同じ zshrc を複数の環境で使っているとたまにあることですが、古いバージョンだと無効な設定があったりしておこられることがあります。 以前は zsh --version | awk '{print $2}' みたいな感じでバージョンを取得して "." で split して比較してた頃もありました。 これだと細かいバージョンの指定をしようとするとめんどくさかったりします。 同様のことを is-at-least を使えば簡単にできますよっていうお話です。 例えば vcs_info を使おうとした際は 4.3.10 以上となるので以下のようにかけばおkです

    バージョンに依存した zshrc の書き方 #Zsh - Qiita
    AmaiSaeta
    AmaiSaeta 2012/12/03
    is-at-least (versionnumber)
  • はてなブログ | 無料ブログを作成しよう

    わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……

    はてなブログ | 無料ブログを作成しよう
  • shell のちょっとしたテクニック - odz buffer

    後輩が cat README | tr ' ' '\n' | sort | uniq -c | sort -nr | head てなテクニックを見て、びっくりしたみたいな話をしていたのだが、こういうパイプラインを利用するテクニックを学んでいないのは色々損な気がする。 ていうか、サーバで丸一日以上かかるような処理を実行するのもしょっちゅうなのに、GNU screen も nohup も知らないってのはいろいろ支障があるような気もするのだが、だれも教えないものかなぁ。 ということで、bash or zsh のちょっとしたテクニックとか*1。リダイレクトとかパイプラインは略。 連続実行 単純に連続実行。 % foo; barfoo が正常終了したときだけ bar を実行 % foo && barfoo が正常終了しなかったときだけ bar を実行 % foo || bar&&、||は来は論理演

    shell のちょっとしたテクニック - odz buffer
  • 1