SlideShare a Scribd company logo
1 of 48
Download to read offline
zshとわたし
@第04回 福岡Debian勉強会
しもかわ としひこ
@ToshiChan
toshi@smkwlab.net
Outline
•自己紹介
•zsh
•初期設定ファイルを眺めながらよも
やま話
•まとめ
自己紹介
• しもかわとしひこ(下川俊彦)
• 九州産業大学 情報科学部 情報科学科
• 専門は広域分散処理
• 89ぐらいからUNIX使い
• Ultrix, SunOS, Solaris, Linux, FreeBSD, OS X
• Debian は使ったことがないです ^^;
• ubuntu は仕事で使ってます
質問
• login shell はなんですか?
• zsh
• bash
• tcsh
• csh
• ksh
• ash
• その他?
zshとは?
Zsh is a UNIX command interpreter (shell)
usable as an interactive login shell and as a
shell script command processor. Of the
standard shells, zsh most closely resembles ksh
but includes many enhancements. Zsh has
command line editing, builtin spelling correction,
programmable command completion, shell
functions (with autoloading), a history
mechanism, and a host of other features.
zsh は良い
•なんと言っても名前がカッコ良い
•Zが付くものはすべからくカッコ良い
zsh は良い(続き)
• 最近の bash はよく知りませんが…
• RPROMPT
• global alias
• function の autoload
• 強力なパターンマッチ
• ** による再帰的なディレクトリ検索とか
• 強力なコマンドラインエディタ
• Esc-q とか
• 様々な build in function
• [[ とか
• 様々な option
zshの初期化ファイル
1. /etc/zshenv
2. $ZDOTDIR/.zshenv
3. /etc/zprofile (login shell 時のみ)
4. $ZDOTDIR/.zprofile (login shell 時のみ)
5. /etc/zshrc (対話モード時のみ)
6. $ZDOTDIR/.zshrc (対話モード時のみ)
7. /etc/zlogin (login shell 時のみ)
8. $ZDOTDIR/.zlogin (login shell 時のみ)
$ZDOTDIR
•未設定の場合 $HOME が使われる
•ZDOTDIR 設定してる人います?
僕の .z*
• 僕が使っているzsh初期化ファイルを紹介
• 決して「良い設定」の例ではないです
• 青はお気に入りの設定
• 赤は不要あるいは僕にも意味不明の設定
• 20年以上使っている設定なので ^^;
• 全て一部略なので心の目で読んでね
• 折り返しがわかりにくいので行番号を入れてます
• 普段 Debian 使ってないので、一部 OS X 用を使いますが許してね
cvs log -r1.1 .zshrc
1. RCS file: /home1/toshi/lib/cvsroot/dots/.zshrc,v
2. Working file: .zshrc
3. head: 2.18
4. branch:
5. locks: strict
6. access list:
7. symbolic names:
8. keyword substitution: kv
9. total revisions: 38; selected revisions: 1
10. description:
11. zsh initialize file.
12. ----------------------------
13. revision 1.1
14. date: 1993-03-09 13:54:55 +0900; author: toshi; state: Exp;
15. Initial revision
16. ===================================================
zshenv
• 常に実行される
• 最小限の設定に抑えることが重要
• とマニュアルに書いてある
• 基本的には環境変数・umask ぐらい?
• 対話モードに関係ある設定は入れない
• プロンプトの設定など
僕の .zshenv (1)
1. # $Id: .zshenv,v 2.23 2013/02/15 01:54:40 toshi Exp $
2. #
3. #setopt XTRACE
4. case "$-" in
5. *i*) # this is interactive shell
6. echo `LANG=C date` : reading .zshenv
7. esac
8.  
9. umask 022
僕の .zshenv (2)
1. PATH="${HOME}/bin:${HOME}/bin/${MACHTYPE}-${OSTYPE}:${HOME}/bin:
2. /opt/local/sbin:/opt/local/bin:
3. /usr/pkg/bin:/usr/pkg/sbin:
4. /usr/local/bin:
5. /usr/X11R6/bin:/usr/local/X11R6/bin:
6. /usr/openwin/bin:/usr/openwin/demo:
7. /usr/ccs/bin:/opt/SUNWspro/bin:
8. /usr/local/WordPerfect8/wpbin:
9. /usr/ucb:/usr/bin:/bin:/usr/lib:/usr/5bin:/usr/kvm:
10. /usr/local/etc:/etc:/usr/etc:/usr/hosts:
11. /usr/local/sbin:/usr/sbin:/sbin"
12. export PATH
僕の .zshenv (3)
1. LC_TIME=C
2. export LC_TIME
3. EDITOR=vi
4. export EDITOR
5.
6. # application specific environments
7. PAGER=less
8. export PAGER
9. LESS=ciMrf
10. export LESS
11.
12. # architecuture dependent
13. if [ -r ${HOME}/.zshenv-${OSTYPE} ]; then
14. . ${HOME}/.zshenv-${OSTYPE}
15. fi
16. # site dependent
17. if [ -r ${HOME}/.zshenv-local ]; then
18. . ${HOME}/.zshenv-local
19. fi
20.
21. # Finish
22. EnvironSetup='Ok'
23. export EnvironSetup
僕の .zshenv-darwin (1)
1. # $Id: .zshenv-darwin,v 1.1 2013/02/10 12:44:04 toshi Exp $
2. #
3. #setopt XTRACE
4. case "$-" in
5. *i*) # this is interactive shell
6. echo `LANG=C date` : reading .zshenv-darwin
7. esac
僕の .zshenv-darwin (2)
1. PAGER=lv
2.  
3. PATH=
4. ${HOME}/.rbenv/shims:
5. /usr/local/bin:
6. `xcode-select --print-path`/usr/bin:
7. /Applications/Ghostscript.app/bin:
8. /Applications/eclipse/android/platform-tools:
9. ${PATH}
某サーバマシンでの僕の .zshenv-local
1. # $Id: .zshenv,v 2.19 2007/08/28 04:07:50 toshi Exp $
2. #
3. #setopt XTRACE
4. case "$-" in
5. *i*) # this is interactive shell
6. echo `date` : reading .zshenv-local
7. esac
8.  
9. source ${HOME}/.keychain/${HOST}-sh
zshenv 考察
•PATHの設定は悩ましい
•環境依存、利用者依存の設定の綺麗な
共存
•つーか、そろそろ CVS 捨てたい
(閑話休題)環境設定ファイルの同期
• 2つの shell script を利用
• リポジトリからファイル群を check out (clone?)
• ウィンドウ間の cut & paste で実行できるようにシンプル
• 今のところリポジトリは CVS だけど git にしたいなぁ
• check out した script を、$HOME 他適切な場所へ deploy
• deploy つーても symlink して、最低限必要なディレクトリ
を掘るだけ
• deploy 用 script はリポジトリ内に入ってるので、多少複
雑な処理をしても大丈夫
$HOME/lib/dots/init
1. CVSWORK=${HOME}/lib
2.  
3. CVSROOT=ひ・み・つ♡
4. export CVSROOT
5.  
6. CVS_RSH=ssh
7. export CVS_RSH
8.  
9. mkdir -p ${CVSWORK}
10. cd ${CVSWORK}
11. cvs checkout dots
$HOME/lib/dots/setup
1. #! /bin/sh
2. # $Id: setup,v 2.15 2008/08/14 12:58:29 toshi Exp $
3. FILES='.z* .cvsrc .cvsignore .screenrc'
4. LN='ln -sf'
5. CP='cp'
6. CHMOD='chmod'
7. cd ${HOME}/lib/dots/
8. for i in ${FILES}
9. do
10. ${LN} lib/dots/${i} ${HOME}
11. done
12. if [ ! -d ${HOME}/.ssh ]; then
13. mkdir ${HOME}/.ssh
14. fi
15. if [ -f ${HOME}/.ssh/authorized_keys2 ]; then
16. mv ${HOME}/.ssh/authorized_keys2 ${HOME}/.ssh/
authorized_keys2.old
17. fi
18. ${CP} ${HOME}/lib/dots/authorized_keys2 ${HOME}/.ssh
19. ${CHMOD} 600 ${HOME}/.ssh/authorized_keys2
20.  
21. if [ ! -d ${HOME}/tmp ]; then
22. mkdir ${HOME}/tmp
23. fi
zprofile
•login shell 時に zshrc より前に実行
•何に使ってます?
•昔は Window System の起動に使っ
てたけど…
僕の .zprofile
1. # $Id: .zprofile,v 1.9 2006/09/12 01:19:57 toshi Exp $
2. #
3. #setopt XTRACE
4. echo `LANG=C date` : reading .zprofile
5. if [ -e /.todo ]; then
6. todo=`cat /.todo`
7. rm /.todo
8. $todo
9. exit
10. fi
zprofile 考察
•何に使うとおしゃれなんだろう?
zshrc
•対話shellで使う設定はここ
•プロンプト, alias, function, キーバイ
ンド, オプション, shell変数…
僕の .zshrc (1)
1. # $Id: .zshrc,v 2.18 2012/06/13 08:53:44
toshi Exp $
2. #setopt XTRACE
3. echo `date` : reading .zshrc
4. # This is interactive shell
5. stty erase ^h
6. # set zsh options
7. setopt append_history auto_cd auto_menu
auto_pushd
8. setopt auto_param_keys
auto_remove_slash auto_resume
9. setopt cdable_vars correct
extended_history hash_cmds
10. setopt hist_ignore_dups hist_ignore_space
11. setopt hist_no_store ignore_eof list_types
long_list_jobs notify
12. setopt numeric_glob_sort print_exit_value
13. setopt pushd_silent pushd_ignore_dups
pushd_to_home
14. setopt no_prompt_cr always_last_prompt
no_flow_control
15. setopt share_history prompt_subst
僕の .zshrc (2)1. # set zsh original variables
2. CDPATH=
3. fignore=( .o .fasl .aux .dvi .toc .class)
4. _myfpath=${HOME}/lib/dots/zfunc
5. fpath=(/usr/local/share/zsh/site-functions $fpath)
6. [[ -z $fpath[(r)$_myfpath] ]] && fpath=($_myfpath $fpath)
7. host=`echo $HOST ¦ sed -e 's/([^.]*).*/1/'`
8. DIRSTACKSIZE=10
9. HISTSIZE=100000
10. HISTFILE= /.zhistory
11. SAVEHIST=100000
12. if [[ -d /var/mail ]]; then
13. MAILSPOOL=/var/mail
14. else
15. MAILSPOOL=/usr/spool/mail
16. fi
17. MAIL=${MAIL:-${MAILSPOOL}/${LOGNAME}}
18. MAILCHECK=1
19. WATCH=notme
20. WATCHFMT='%n has %a %l from %M at %T.'
21. HELPDIR=/usr/local/lib/zsh/help
22. REPORTTIME=1
僕の .zshrc (3)
1. if [[ ! ($TERM = "screen" ¦¦ $TERM = "screen-bce") ]]; then
2. PROMPT=$'%{e[$[32+$RANDOM % 5]m%}''%S%h%s%n@%U%m
%u[%T] %c %# '$'%{e[m%
3. }'
4. RPROMPT=$'%{e[33m%}% %{e[m%}'
5. else
6. PROMPT=$'%{e[$[32+$RANDOM % 5]m%}''%S%h%s%n@%U%m
%u($WINDOW)[%T] %c %# '
7. $'%{e[m%}'
8. RPROMPT='[%U% %u]'
9. fi
僕の .zshrc (4)
1. if [[ -z "$ZSH_VERSION" ]]; then
2. ZSH=`echo $VERSION ¦ cut -d -f2`
3. else
4. ZSH=${ZSH_VERSION:s/-/./}
5. fi
6. rev=$ZSH:r:r
7. rel=$ZSH:r:e
8. pat=$ZSH:e
9. _zsh_version=`expr $rev * 1000000 + $rel * 1000 + $pat`
僕の .zshrc (4)
1. autoload acx cx harden mere namedir proto randline run-
help yp yu zed
2. autoload inc-and-show lhal mman my-rm lstmp unzip-v
3. autoload whichls up unload mk-dist ps-tty delpath
settermgw
4. autoload cdmatch multicomp tail-f
5. [[ $TERM = "xterm-color" ¦¦ $TERM = "xterm" ¦¦ $TERM =
"kterm" ¦¦ $TERM = "vt100" ¦¦ $TERM = "screen" ¦¦ $TERM
= "screen-bce" ¦¦ $TERM = "cons25" ¦¦ $TERM =
"cygwin" ]] && stty pass8 && bindkey -e
僕の .zshrc (5)
1. bindkey ^X^I reverse-menu-complete
2. bindkey ^X^P reverse-menu-complete
3. bindkey ^X^N menu-complete
4. bindkey ^X= expand-cmd-path
5. if [[ $_zsh_version -lt 3001000 ]]; then
6. bindkey ^P up-line-or-search
7. bindkey ^N down-line-or-search
8. fi
僕の .zshrc (6)
1. safe_source() {
2. if [[ $pat = pre2 ]]; then
3. return
4. fi
5. if [[ -r /$1 ]]; then
6. . /$1
7. elif [[ -r $2/$1 ]]; then
8. . $2/$1
9. fi
10.}
11.[[ -z "$EnvironSetup" ]] && safe_source .zshenv toshi
僕の .zshrc (7)
1. if [[ $_zsh_version -gt 3001007 ]]; then
2. zstyle ':completion:*' completer
'_complete'
3. zstyle :compinstall filename "$
{HOME}/.zcompsys"
4. autoload -Uz compinit
5. compinit -u
6. if [ -f /.ssh/known_hosts ]; then
7. hosts() { reply=(`sed -e 's/[ ,].*//'
/.ssh/known_hosts`) }
8. else
9. hosts() { reply=(sh.example.jp. 
10. sh.example.com. ) }
11. fi
12. fi
13. safe_source .zaliases toshi
14. safe_source .zshrc-${OSTYPE} toshi
15. safe_source .zshrc-${host} toshi
16. safe_source .zshrc-local toshi
僕の .zaliases (1)
1. # $Id: .zaliases,v 2.17 2009/07/05 02:29:59 toshi Exp $
2. #
3. #setopt XTRACE
4. echo `date` : reading .zaliases
5.  
6. alias rcd='cd'
7. alias back='cd -'
8. alias .='dirs -v'
9. alias ..='cd ..'
10. alias ,='back'
11. alias ,,='cd +2'
12. alias ,,,='cd +3'
13. alias ,,,,='cd +4'
14. alias ,,,,,='cd +5'
15. alias ,,,,,,='cd +6'
16. alias ,,,,,,,='cd +7'
17. alias ,,,,,,,,='cd +8'
18. alias ,,,,,,,,,='cd +9'
僕の .zaliases (2)
1. alias l=ls
2. case ${OSTYPE} in
3. freebsd*)
4. alias ls='ls -CFw'
5. ;;
6. cygwin*)
7. alias ls='ls -CF --show-control-chars'
8. ;;
9. *)
10. alias ls='ls -CF'
11. ;;
12. esac
13. alias ll='ls -l'
14. alias lL='ls -L'
15. alias la='ls -a'
16. alias lc='ls -c'
17. alias lt='ls -t'
18. alias lcr='lc -r'
19. alias ltr='lt -r'
20. alias lla='ll -a'
21. alias llc='ll -c'
22. alias lls='ll -s'
23. alias llt='ll -t'
24. alias llL='ll -L'
25. alias llcr='llc -r'
26. alias lltr='llt -r'
27. alias lss='ls -s'
28. alias dir='ls'
僕の .zaliases (3)
1. alias diff='diff -u'
2.  
3. alias rm='rm -i'
4. for i in $fpath; do [[ -f $i/my-
rm ]] && alias rm='my-rm' &&
break; done
5. alias cp='cp -i'
6. alias mv='mv -i'
7.  
8. alias lo='exit'
9. alias cleartmp='/bin/rm -rf /
tmp/*(ND) &'
10.alias so='source'
11.alias screen='screen -h 200'
12.alias resume='screen -x'
13.alias D='/bin/pwd'
14.alias -g LL='¦& L'
僕の .zaliases (4)
1. case "${TERM}" in
2. kterm¦xterm¦screen¦screen-bce¦
cygwin)
3. function precmd() {
4. # title
5. echo -n "e]2;${host} : $PWD007"
6. # icon
7. echo -n "e]1;${host} : $PWD007"
8. }
9. ;;
10. screen)
11. function precmd() {
12. echo -ne "033_${WinNum}${host}($
{WINDOW}) : $PWD";
13. echo -ne "033"
14. }
15. ;;
16. esac
僕の .zshrc-darwin
1. # $Id: .zshenv-darwin,v 1.1 2013/02/10
12:44:04 toshi Exp $
2. #
3. #setopt XTRACE
4. case "$-" in
5. *i*) # this is interactive shell
6. echo `LANG=C date` :
reading .zshenv-darwin
7. esac
8.  
9. PAGER=lv
10. PATH=
11. ${HOME}/.rbenv/shims:
12. /usr/local/bin:
13. `xcode-select --print-path`/usr/bin:
14. /Applications/Ghostscript.app/bin:
15. /Applications/eclipse/android/platform-tools:
16. ${PATH}
zshrc 考察
•環境依存性の切り分けが悩ましい
•OS依存の設定
•ホスト依存の設定
•今や使わなくなった多数の alias,
function その他をどうするべきか
zlogin
•login shell 時に zshrc より後に実行
•何に使ってます?
•昔はパスワード記憶系エージェントの
起動に使ってたけど…
僕の .zlogin
1. # $Id: .zlogin,v 1.13 2009/07/05 02:33:55 toshi Exp $
2. #
3. #setopt XTRACE
4. echo `LANG=C date` : reading .zlogin
5.
6. MOTD= /etc/motd
7. if [ -r ${MOTD} ]; then
8. echo -=-=-=- motd -=-=-
9. cat ${MOTD}
10. echo -=-=-=- motd -=-=-
11. fi
zlogin 考察
•今どき login shell と、非 login shell
を区別する意味はあるの?
•教えて偉い人
なにか忘れてる気が
zlogout !!
•login shell 終了時
僕の .zlogout
1. # $Id: .zlogout,v 1.1 1993/03/09 04:56:17 toshi Exp $
2. #
3. LANG=
4. echo "`hostname`: `whoami` logged out at `date`"
zlogout
•唯一、最初の check in から全く変更
なし
•ステキな使い方募集中
まとまらないまとめ
•zsh はステキ

More Related Content

What's hot

Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能hitode909
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 
もにかじ2 lt @studio3104
もにかじ2 lt @studio3104もにかじ2 lt @studio3104
もにかじ2 lt @studio3104Satoshi Suzuki
 
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Satoshi Suzuki
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようRyota Shiroguchi
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
オンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてオンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてYASUKAZU NAGATOMI
 
Start printf 6_takarakasai
Start printf 6_takarakasaiStart printf 6_takarakasai
Start printf 6_takarakasaitakara kasai
 
Acme minechan
Acme minechanAcme minechan
Acme minechantakesako
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Joe_noh
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Joe_noh
 
できないことはPortで外注
できないことはPortで外注できないことはPortで外注
できないことはPortで外注Joe_noh
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方 Nagi Teramo
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Joe_noh
 
Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Satoshi Suzuki
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回Joe_noh
 
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンenchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンRyota Shiroguchi
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"deepblue will
 

What's hot (20)

Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 
もにかじ2 lt @studio3104
もにかじ2 lt @studio3104もにかじ2 lt @studio3104
もにかじ2 lt @studio3104
 
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
オンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてオンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用について
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
Start printf 6_takarakasai
Start printf 6_takarakasaiStart printf 6_takarakasai
Start printf 6_takarakasai
 
Acme minechan
Acme minechanAcme minechan
Acme minechan
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -
 
できないことはPortで外注
できないことはPortで外注できないことはPortで外注
できないことはPortで外注
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
 
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンenchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"
 

Viewers also liked

無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) Yuki Uchikoba
 
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそうSanae Yamashita
 
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたいRubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたいSanae Yamashita
 
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...Takashi Iba
 
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」Takuya Mukohira
 
Future Language (フューチャー・ランゲージ)
Future Language (フューチャー・ランゲージ)Future Language (フューチャー・ランゲージ)
Future Language (フューチャー・ランゲージ)Takashi Iba
 
話題のイベントの作り方 Event Salonとは
話題のイベントの作り方 Event Salonとは 話題のイベントの作り方 Event Salonとは
話題のイベントの作り方 Event Salonとは Peatix Japan
 
Walk, Flow, and Creation: Toward Natural & Creative Living Lab
Walk, Flow, and Creation: Toward Natural & Creative Living LabWalk, Flow, and Creation: Toward Natural & Creative Living Lab
Walk, Flow, and Creation: Toward Natural & Creative Living LabTakashi Iba
 
20150928楽しいlambda
20150928楽しいlambda20150928楽しいlambda
20150928楽しいlambdaNorifumi Homma
 
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012Takashi Iba
 
The Cooking Language: Extending the Theory of Pattens for a New Way to Cook
The Cooking Language: Extending the Theory of Pattens for a New Way to CookThe Cooking Language: Extending the Theory of Pattens for a New Way to Cook
The Cooking Language: Extending the Theory of Pattens for a New Way to CookTaichi Isaku
 
つくること = 生きること : パターン・ランゲージによる創造の支援
つくること = 生きること : パターン・ランゲージによる創造の支援 つくること = 生きること : パターン・ランゲージによる創造の支援
つくること = 生きること : パターン・ランゲージによる創造の支援 Takashi Iba
 
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」Takashi Iba
 
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)Takashi Iba
 
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳schoowebcampus
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Yohei Yasukawa
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkVolker Hirsch
 

Viewers also liked (17)

無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル)
 
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
 
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたいRubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
 
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...
Workshop Design #5・6 「クリストファー・アレグザンダーの 『ザ・ネイチャー・オブ・オーダー』 の概念を用いてワークショップの デザイン...
 
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
 
Future Language (フューチャー・ランゲージ)
Future Language (フューチャー・ランゲージ)Future Language (フューチャー・ランゲージ)
Future Language (フューチャー・ランゲージ)
 
話題のイベントの作り方 Event Salonとは
話題のイベントの作り方 Event Salonとは 話題のイベントの作り方 Event Salonとは
話題のイベントの作り方 Event Salonとは
 
Walk, Flow, and Creation: Toward Natural & Creative Living Lab
Walk, Flow, and Creation: Toward Natural & Creative Living LabWalk, Flow, and Creation: Toward Natural & Creative Living Lab
Walk, Flow, and Creation: Toward Natural & Creative Living Lab
 
20150928楽しいlambda
20150928楽しいlambda20150928楽しいlambda
20150928楽しいlambda
 
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012
「学びのパターン・ランゲージを用いた対話ワークショップ」@ DevLOVE2012
 
The Cooking Language: Extending the Theory of Pattens for a New Way to Cook
The Cooking Language: Extending the Theory of Pattens for a New Way to CookThe Cooking Language: Extending the Theory of Pattens for a New Way to Cook
The Cooking Language: Extending the Theory of Pattens for a New Way to Cook
 
つくること = 生きること : パターン・ランゲージによる創造の支援
つくること = 生きること : パターン・ランゲージによる創造の支援 つくること = 生きること : パターン・ランゲージによる創造の支援
つくること = 生きること : パターン・ランゲージによる創造の支援
 
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」
Workshop Design #1・2 ワークショップのつくり方「全体を分化させていく」
 
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)
文章のクオリティを上げる方法(井庭研レクチャーズ Vol.3)
 
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳
パターン・ランゲージ『Personal Culture Patterns』で「自分らしく生きる」を考える 先生:鎌田 安里紗・仲田 未佳
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

Similar to zsh とわたし

お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0Satoshi Kume
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料Yasutaka Hamada
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistranokumachang_LL
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方浩平 渡邉
 
コンテナで作れるFaaS
コンテナで作れるFaaSコンテナで作れるFaaS
コンテナで作れるFaaS真吾 吉田
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327Kunihiro TANAKA
 
ssh_configのススメ
ssh_configのススメssh_configのススメ
ssh_configのススメHisaharu Ishii
 

Similar to zsh とわたし (20)

お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方
 
コンテナで作れるFaaS
コンテナで作れるFaaSコンテナで作れるFaaS
コンテナで作れるFaaS
 
SSH Tips & Tricks
SSH Tips & TricksSSH Tips & Tricks
SSH Tips & Tricks
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327
 
ssh_configのススメ
ssh_configのススメssh_configのススメ
ssh_configのススメ
 

Recently uploaded

部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)keikoitakurag
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationToru Tamaki
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayersToru Tamaki
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdfAyachika Kitazaki
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 

Recently uploaded (14)

部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 

zsh とわたし

  • 3. 自己紹介 • しもかわとしひこ(下川俊彦) • 九州産業大学 情報科学部 情報科学科 • 専門は広域分散処理 • 89ぐらいからUNIX使い • Ultrix, SunOS, Solaris, Linux, FreeBSD, OS X • Debian は使ったことがないです ^^; • ubuntu は仕事で使ってます
  • 4. 質問 • login shell はなんですか? • zsh • bash • tcsh • csh • ksh • ash • その他?
  • 5. zshとは? Zsh is a UNIX command interpreter (shell) usable as an interactive login shell and as a shell script command processor. Of the standard shells, zsh most closely resembles ksh but includes many enhancements. Zsh has command line editing, builtin spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and a host of other features.
  • 7. zsh は良い(続き) • 最近の bash はよく知りませんが… • RPROMPT • global alias • function の autoload • 強力なパターンマッチ • ** による再帰的なディレクトリ検索とか • 強力なコマンドラインエディタ • Esc-q とか • 様々な build in function • [[ とか • 様々な option
  • 8. zshの初期化ファイル 1. /etc/zshenv 2. $ZDOTDIR/.zshenv 3. /etc/zprofile (login shell 時のみ) 4. $ZDOTDIR/.zprofile (login shell 時のみ) 5. /etc/zshrc (対話モード時のみ) 6. $ZDOTDIR/.zshrc (対話モード時のみ) 7. /etc/zlogin (login shell 時のみ) 8. $ZDOTDIR/.zlogin (login shell 時のみ)
  • 10. 僕の .z* • 僕が使っているzsh初期化ファイルを紹介 • 決して「良い設定」の例ではないです • 青はお気に入りの設定 • 赤は不要あるいは僕にも意味不明の設定 • 20年以上使っている設定なので ^^; • 全て一部略なので心の目で読んでね • 折り返しがわかりにくいので行番号を入れてます • 普段 Debian 使ってないので、一部 OS X 用を使いますが許してね
  • 11. cvs log -r1.1 .zshrc 1. RCS file: /home1/toshi/lib/cvsroot/dots/.zshrc,v 2. Working file: .zshrc 3. head: 2.18 4. branch: 5. locks: strict 6. access list: 7. symbolic names: 8. keyword substitution: kv 9. total revisions: 38; selected revisions: 1 10. description: 11. zsh initialize file. 12. ---------------------------- 13. revision 1.1 14. date: 1993-03-09 13:54:55 +0900; author: toshi; state: Exp; 15. Initial revision 16. ===================================================
  • 12. zshenv • 常に実行される • 最小限の設定に抑えることが重要 • とマニュアルに書いてある • 基本的には環境変数・umask ぐらい? • 対話モードに関係ある設定は入れない • プロンプトの設定など
  • 13. 僕の .zshenv (1) 1. # $Id: .zshenv,v 2.23 2013/02/15 01:54:40 toshi Exp $ 2. # 3. #setopt XTRACE 4. case "$-" in 5. *i*) # this is interactive shell 6. echo `LANG=C date` : reading .zshenv 7. esac 8.   9. umask 022
  • 14. 僕の .zshenv (2) 1. PATH="${HOME}/bin:${HOME}/bin/${MACHTYPE}-${OSTYPE}:${HOME}/bin: 2. /opt/local/sbin:/opt/local/bin: 3. /usr/pkg/bin:/usr/pkg/sbin: 4. /usr/local/bin: 5. /usr/X11R6/bin:/usr/local/X11R6/bin: 6. /usr/openwin/bin:/usr/openwin/demo: 7. /usr/ccs/bin:/opt/SUNWspro/bin: 8. /usr/local/WordPerfect8/wpbin: 9. /usr/ucb:/usr/bin:/bin:/usr/lib:/usr/5bin:/usr/kvm: 10. /usr/local/etc:/etc:/usr/etc:/usr/hosts: 11. /usr/local/sbin:/usr/sbin:/sbin" 12. export PATH
  • 15. 僕の .zshenv (3) 1. LC_TIME=C 2. export LC_TIME 3. EDITOR=vi 4. export EDITOR 5. 6. # application specific environments 7. PAGER=less 8. export PAGER 9. LESS=ciMrf 10. export LESS 11. 12. # architecuture dependent 13. if [ -r ${HOME}/.zshenv-${OSTYPE} ]; then 14. . ${HOME}/.zshenv-${OSTYPE} 15. fi 16. # site dependent 17. if [ -r ${HOME}/.zshenv-local ]; then 18. . ${HOME}/.zshenv-local 19. fi 20. 21. # Finish 22. EnvironSetup='Ok' 23. export EnvironSetup
  • 16. 僕の .zshenv-darwin (1) 1. # $Id: .zshenv-darwin,v 1.1 2013/02/10 12:44:04 toshi Exp $ 2. # 3. #setopt XTRACE 4. case "$-" in 5. *i*) # this is interactive shell 6. echo `LANG=C date` : reading .zshenv-darwin 7. esac
  • 17. 僕の .zshenv-darwin (2) 1. PAGER=lv 2.   3. PATH= 4. ${HOME}/.rbenv/shims: 5. /usr/local/bin: 6. `xcode-select --print-path`/usr/bin: 7. /Applications/Ghostscript.app/bin: 8. /Applications/eclipse/android/platform-tools: 9. ${PATH}
  • 18. 某サーバマシンでの僕の .zshenv-local 1. # $Id: .zshenv,v 2.19 2007/08/28 04:07:50 toshi Exp $ 2. # 3. #setopt XTRACE 4. case "$-" in 5. *i*) # this is interactive shell 6. echo `date` : reading .zshenv-local 7. esac 8.   9. source ${HOME}/.keychain/${HOST}-sh
  • 20. (閑話休題)環境設定ファイルの同期 • 2つの shell script を利用 • リポジトリからファイル群を check out (clone?) • ウィンドウ間の cut & paste で実行できるようにシンプル • 今のところリポジトリは CVS だけど git にしたいなぁ • check out した script を、$HOME 他適切な場所へ deploy • deploy つーても symlink して、最低限必要なディレクトリ を掘るだけ • deploy 用 script はリポジトリ内に入ってるので、多少複 雑な処理をしても大丈夫
  • 21. $HOME/lib/dots/init 1. CVSWORK=${HOME}/lib 2.   3. CVSROOT=ひ・み・つ♡ 4. export CVSROOT 5.   6. CVS_RSH=ssh 7. export CVS_RSH 8.   9. mkdir -p ${CVSWORK} 10. cd ${CVSWORK} 11. cvs checkout dots
  • 22. $HOME/lib/dots/setup 1. #! /bin/sh 2. # $Id: setup,v 2.15 2008/08/14 12:58:29 toshi Exp $ 3. FILES='.z* .cvsrc .cvsignore .screenrc' 4. LN='ln -sf' 5. CP='cp' 6. CHMOD='chmod' 7. cd ${HOME}/lib/dots/ 8. for i in ${FILES} 9. do 10. ${LN} lib/dots/${i} ${HOME} 11. done 12. if [ ! -d ${HOME}/.ssh ]; then 13. mkdir ${HOME}/.ssh 14. fi 15. if [ -f ${HOME}/.ssh/authorized_keys2 ]; then 16. mv ${HOME}/.ssh/authorized_keys2 ${HOME}/.ssh/ authorized_keys2.old 17. fi 18. ${CP} ${HOME}/lib/dots/authorized_keys2 ${HOME}/.ssh 19. ${CHMOD} 600 ${HOME}/.ssh/authorized_keys2 20.   21. if [ ! -d ${HOME}/tmp ]; then 22. mkdir ${HOME}/tmp 23. fi
  • 23. zprofile •login shell 時に zshrc より前に実行 •何に使ってます? •昔は Window System の起動に使っ てたけど…
  • 24. 僕の .zprofile 1. # $Id: .zprofile,v 1.9 2006/09/12 01:19:57 toshi Exp $ 2. # 3. #setopt XTRACE 4. echo `LANG=C date` : reading .zprofile 5. if [ -e /.todo ]; then 6. todo=`cat /.todo` 7. rm /.todo 8. $todo 9. exit 10. fi
  • 26. zshrc •対話shellで使う設定はここ •プロンプト, alias, function, キーバイ ンド, オプション, shell変数…
  • 27. 僕の .zshrc (1) 1. # $Id: .zshrc,v 2.18 2012/06/13 08:53:44 toshi Exp $ 2. #setopt XTRACE 3. echo `date` : reading .zshrc 4. # This is interactive shell 5. stty erase ^h 6. # set zsh options 7. setopt append_history auto_cd auto_menu auto_pushd 8. setopt auto_param_keys auto_remove_slash auto_resume 9. setopt cdable_vars correct extended_history hash_cmds 10. setopt hist_ignore_dups hist_ignore_space 11. setopt hist_no_store ignore_eof list_types long_list_jobs notify 12. setopt numeric_glob_sort print_exit_value 13. setopt pushd_silent pushd_ignore_dups pushd_to_home 14. setopt no_prompt_cr always_last_prompt no_flow_control 15. setopt share_history prompt_subst
  • 28. 僕の .zshrc (2)1. # set zsh original variables 2. CDPATH= 3. fignore=( .o .fasl .aux .dvi .toc .class) 4. _myfpath=${HOME}/lib/dots/zfunc 5. fpath=(/usr/local/share/zsh/site-functions $fpath) 6. [[ -z $fpath[(r)$_myfpath] ]] && fpath=($_myfpath $fpath) 7. host=`echo $HOST ¦ sed -e 's/([^.]*).*/1/'` 8. DIRSTACKSIZE=10 9. HISTSIZE=100000 10. HISTFILE= /.zhistory 11. SAVEHIST=100000 12. if [[ -d /var/mail ]]; then 13. MAILSPOOL=/var/mail 14. else 15. MAILSPOOL=/usr/spool/mail 16. fi 17. MAIL=${MAIL:-${MAILSPOOL}/${LOGNAME}} 18. MAILCHECK=1 19. WATCH=notme 20. WATCHFMT='%n has %a %l from %M at %T.' 21. HELPDIR=/usr/local/lib/zsh/help 22. REPORTTIME=1
  • 29. 僕の .zshrc (3) 1. if [[ ! ($TERM = "screen" ¦¦ $TERM = "screen-bce") ]]; then 2. PROMPT=$'%{e[$[32+$RANDOM % 5]m%}''%S%h%s%n@%U%m %u[%T] %c %# '$'%{e[m% 3. }' 4. RPROMPT=$'%{e[33m%}% %{e[m%}' 5. else 6. PROMPT=$'%{e[$[32+$RANDOM % 5]m%}''%S%h%s%n@%U%m %u($WINDOW)[%T] %c %# ' 7. $'%{e[m%}' 8. RPROMPT='[%U% %u]' 9. fi
  • 30. 僕の .zshrc (4) 1. if [[ -z "$ZSH_VERSION" ]]; then 2. ZSH=`echo $VERSION ¦ cut -d -f2` 3. else 4. ZSH=${ZSH_VERSION:s/-/./} 5. fi 6. rev=$ZSH:r:r 7. rel=$ZSH:r:e 8. pat=$ZSH:e 9. _zsh_version=`expr $rev * 1000000 + $rel * 1000 + $pat`
  • 31. 僕の .zshrc (4) 1. autoload acx cx harden mere namedir proto randline run- help yp yu zed 2. autoload inc-and-show lhal mman my-rm lstmp unzip-v 3. autoload whichls up unload mk-dist ps-tty delpath settermgw 4. autoload cdmatch multicomp tail-f 5. [[ $TERM = "xterm-color" ¦¦ $TERM = "xterm" ¦¦ $TERM = "kterm" ¦¦ $TERM = "vt100" ¦¦ $TERM = "screen" ¦¦ $TERM = "screen-bce" ¦¦ $TERM = "cons25" ¦¦ $TERM = "cygwin" ]] && stty pass8 && bindkey -e
  • 32. 僕の .zshrc (5) 1. bindkey ^X^I reverse-menu-complete 2. bindkey ^X^P reverse-menu-complete 3. bindkey ^X^N menu-complete 4. bindkey ^X= expand-cmd-path 5. if [[ $_zsh_version -lt 3001000 ]]; then 6. bindkey ^P up-line-or-search 7. bindkey ^N down-line-or-search 8. fi
  • 33. 僕の .zshrc (6) 1. safe_source() { 2. if [[ $pat = pre2 ]]; then 3. return 4. fi 5. if [[ -r /$1 ]]; then 6. . /$1 7. elif [[ -r $2/$1 ]]; then 8. . $2/$1 9. fi 10.} 11.[[ -z "$EnvironSetup" ]] && safe_source .zshenv toshi
  • 34. 僕の .zshrc (7) 1. if [[ $_zsh_version -gt 3001007 ]]; then 2. zstyle ':completion:*' completer '_complete' 3. zstyle :compinstall filename "$ {HOME}/.zcompsys" 4. autoload -Uz compinit 5. compinit -u 6. if [ -f /.ssh/known_hosts ]; then 7. hosts() { reply=(`sed -e 's/[ ,].*//' /.ssh/known_hosts`) } 8. else 9. hosts() { reply=(sh.example.jp. 10. sh.example.com. ) } 11. fi 12. fi 13. safe_source .zaliases toshi 14. safe_source .zshrc-${OSTYPE} toshi 15. safe_source .zshrc-${host} toshi 16. safe_source .zshrc-local toshi
  • 35. 僕の .zaliases (1) 1. # $Id: .zaliases,v 2.17 2009/07/05 02:29:59 toshi Exp $ 2. # 3. #setopt XTRACE 4. echo `date` : reading .zaliases 5.   6. alias rcd='cd' 7. alias back='cd -' 8. alias .='dirs -v' 9. alias ..='cd ..' 10. alias ,='back' 11. alias ,,='cd +2' 12. alias ,,,='cd +3' 13. alias ,,,,='cd +4' 14. alias ,,,,,='cd +5' 15. alias ,,,,,,='cd +6' 16. alias ,,,,,,,='cd +7' 17. alias ,,,,,,,,='cd +8' 18. alias ,,,,,,,,,='cd +9'
  • 36. 僕の .zaliases (2) 1. alias l=ls 2. case ${OSTYPE} in 3. freebsd*) 4. alias ls='ls -CFw' 5. ;; 6. cygwin*) 7. alias ls='ls -CF --show-control-chars' 8. ;; 9. *) 10. alias ls='ls -CF' 11. ;; 12. esac 13. alias ll='ls -l' 14. alias lL='ls -L' 15. alias la='ls -a' 16. alias lc='ls -c' 17. alias lt='ls -t' 18. alias lcr='lc -r' 19. alias ltr='lt -r' 20. alias lla='ll -a' 21. alias llc='ll -c' 22. alias lls='ll -s' 23. alias llt='ll -t' 24. alias llL='ll -L' 25. alias llcr='llc -r' 26. alias lltr='llt -r' 27. alias lss='ls -s' 28. alias dir='ls'
  • 37. 僕の .zaliases (3) 1. alias diff='diff -u' 2.   3. alias rm='rm -i' 4. for i in $fpath; do [[ -f $i/my- rm ]] && alias rm='my-rm' && break; done 5. alias cp='cp -i' 6. alias mv='mv -i' 7.   8. alias lo='exit' 9. alias cleartmp='/bin/rm -rf / tmp/*(ND) &' 10.alias so='source' 11.alias screen='screen -h 200' 12.alias resume='screen -x' 13.alias D='/bin/pwd' 14.alias -g LL='¦& L'
  • 38. 僕の .zaliases (4) 1. case "${TERM}" in 2. kterm¦xterm¦screen¦screen-bce¦ cygwin) 3. function precmd() { 4. # title 5. echo -n "e]2;${host} : $PWD007" 6. # icon 7. echo -n "e]1;${host} : $PWD007" 8. } 9. ;; 10. screen) 11. function precmd() { 12. echo -ne "033_${WinNum}${host}($ {WINDOW}) : $PWD"; 13. echo -ne "033" 14. } 15. ;; 16. esac
  • 39. 僕の .zshrc-darwin 1. # $Id: .zshenv-darwin,v 1.1 2013/02/10 12:44:04 toshi Exp $ 2. # 3. #setopt XTRACE 4. case "$-" in 5. *i*) # this is interactive shell 6. echo `LANG=C date` : reading .zshenv-darwin 7. esac 8.   9. PAGER=lv 10. PATH= 11. ${HOME}/.rbenv/shims: 12. /usr/local/bin: 13. `xcode-select --print-path`/usr/bin: 14. /Applications/Ghostscript.app/bin: 15. /Applications/eclipse/android/platform-tools: 16. ${PATH}
  • 41. zlogin •login shell 時に zshrc より後に実行 •何に使ってます? •昔はパスワード記憶系エージェントの 起動に使ってたけど…
  • 42. 僕の .zlogin 1. # $Id: .zlogin,v 1.13 2009/07/05 02:33:55 toshi Exp $ 2. # 3. #setopt XTRACE 4. echo `LANG=C date` : reading .zlogin 5. 6. MOTD= /etc/motd 7. if [ -r ${MOTD} ]; then 8. echo -=-=-=- motd -=-=- 9. cat ${MOTD} 10. echo -=-=-=- motd -=-=- 11. fi
  • 43. zlogin 考察 •今どき login shell と、非 login shell を区別する意味はあるの? •教えて偉い人
  • 46. 僕の .zlogout 1. # $Id: .zlogout,v 1.1 1993/03/09 04:56:17 toshi Exp $ 2. # 3. LANG= 4. echo "`hostname`: `whoami` logged out at `date`"
  • 47. zlogout •唯一、最初の check in から全く変更 なし •ステキな使い方募集中