Search Results: tag:zsh

12 件ヒットしました。 1 - 10 番目を表示しています。

zsh if 文を使う

if、then、elif、else、fi で記述する。

#!/usr/bin/zsh
n=$1
if [[ $n -eq 1 ]]; then
    echo "1"
elif [[ $n -eq 2 ]]; then
    echo "2"
else
    echo "else"
fi

zsh zsh 組み込みコマンドについて調べる

man zshbuiltins

を読む。

zsh 拡張 glob を使う

zsh の拡張 glob を使うには、~/.zshrcに

setopt extended_glob

と書いておく。

ls *(^/)
ls *(*)
ls *(x)
ls *~*.txt

とすると、それぞれ

  • ディレクトリを除くファイル
  • ディレクトリを除く実行形式のファイル
  • 実行形式のファイル
  • *.txt に当てはまるファイルを除いたファイル

を表す。

zsh ディレクトリ内のファイルに対してコマンドを繰り返す

for file in *.zip
do
  unzip $file
done

とすると、カレントディレクトリの zip ファイルを 順に解凍していく。

zsh 実行前のコマンドを一時的に保存する(コマンドラインスタック)

端末でコマンドを入力しているときに、 そのコマンドを実行する前に別のコマンドを実行したくなることがある。 zshではそういうときに「Alt + q」を押すと 入力途中のコマンドを一時的に保存してくれる。 別のコマンドを実行すると保存してあった入力が 挿入される。

zsh 自動ヘルプでコマンドを調べる

コマンドを途中まで打った状態、たとえば

ls dir

で「Alt + h」を押すと man が起動してヘルプを見ることができる。 ヘルプを見終えるとコマンド入力途中の

ls dir

に戻る。

zsh ファイル名を操作する

拡張子の部分を取り出すには

f=filenam.txt
echo $f:e

とする。また、拡張子の部分を取り除くには

echo $f:r

とする。ディレクトリの部分を取り除くには

f=dir/filenam.txt
echo $f:t

とする。

zsh 変数を置換する

http://d.hatena.ne.jp/meitetujikokuhyou/20090410/1239366777 の bash の場合と 同じようにできる。

for f in *01.txt
echo ${f/01.txt/10.txt}

zsh zsh 実行時に detached な screen があれば attach する

ssh で接続したときに detach した screen があれば作業を続けるのに attach する。 この処理を自動化するのに、私は次を .zshrc に書いて利用している。

# Attache screen
if [ -z "$STY" ] && ( ! expr $TERM : "^screen" > /dev/null ) && which screen > /dev/null; then
    screen -q -ls
    num=$?
    if [ $num -eq 9 ]; then
    	screen
    elif [ $num -gt 10 ]; then
    	detached=`screen -ls | grep -e '(Detached)' | head -n 1`
    	if [ -n "$detached" ]; then
    	    screen -r `echo $detached | sed -e "s/\..*$//g"`
    	else
    	    screen -ls
    	fi
    fi
fi

screen が存在しなければ自動で実行する、 screen が存在していて attach されていなければ attach する。 また、すでに screen が attach されていれば、 別の screen を実行することも detach して attach することもしない。

この設定は、いろいろなところで干渉する可能性があるので注意。

zsh mlterm の OPEN_PTY で zsh を起動する

環境変数 SHELL を zsh にして起動する。 たとえば次のようなファイルを mlterm_zsh という名前で保存し、実行権限を与えておく。

#!/bin/sh
SHELL=zsh exec mlterm --meta=esc --metakey=alt

gnome のランチャでおなじようにするには、次のコマンドを使う。

env SHELL=zsh mlterm  --meta=esc --metakey=alt