理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> bash
このエントリーをはてなブックマークに追加

bashメモ

  1. 連番のついたフォルダを一度に作成するには
  2. コマンドが失敗したときに別のコマンドを実行するには
  3. .bash_profile と .bashrc について
  4. シェル変数と環境変数
  5. 直前にいたディレクトリに移動
  6. スタックサイズの変更
  7. プロンプトの変更
  8. ヒストリーをインクリメンタルサーチ

連番のついたフォルダを一度に作成するには

作成日:2014/8/17

シェルスクリプトを使って、フォルダ名に01~20の付いたフォルダを一気に作成するには、次のようなシェルスクリプトを使うと良い。

#!/bin/bash
for i in `seq 1 20`
do
  if [ $i -lt 10 ] ; then
    str="0"$i
  else
    str=$i 
  fi
  echo  "mkdir folder-"$str
  mkdir folder-$str
done

コマンドが失敗したときに別のコマンドを実行するには

作成日:2014/8/9

あるコマンドcommand1が失敗したときにだけ,command2を実行するには||を用いる。

$ command1 || command2

例えば,ディレクトリhoge1,・・・,hoge9が存在するか調べ,存在すればそのディレクトリの中にfuga.txtを作成するスクリプトは次のように書ける。

for i in `seq 1 9`
do
  cd hoge$i || continue
  touch fuga.txt
  cd ../
done

.bash_profile と .bashrc について

作成日:2011/10/19

.bash_profile はbashがログインシェルとして起動されたときに一度だけ読み込まれるファイル。.bash_profileが存在せず、.bash_loginが存在すればこちらが読み込まれる。.bash_profileと.bash_loginがどちらも存在せず、.profileが存在すればこちらが読み込まれる。

.bash_profileには環境変数の設定などに用いると良い。例えばPATHの設定は.bash_profileに書いておくとよい。

一方で .bashrc はbashを起動するごとに読み込まれるファイル。aliasの設定や、シェル変数の設定に用いるとよい。ここにもしPATHの設定を書いてしまうと、

PATH=$PATH:/usr/local/bin
export PATH
のような設定が、bashを起動するたびに読み込まれて、同じ設定を繰り返してPATHがどんどん長くなってしまう。

ログインシェルにも.bashrcの内容を反映させたほうが良いので.bash_profileの最後には

source ~/.bashrc
と書いておくとよい。

シェル変数と環境変数

作成日:2009.5.18

シェル変数はそのシェルでのみ使われる変数であり、環境変数はそのシェルから起動した他のプログラムでも利用可能な変数。設定ファイル .bashrc は bash が起動する度に読み込まれるので、bashで使う変数はこのファイルにシェル変数として書いておく。

環境変数を設定するには、まずシェル変数として値を設定し、

MYENV=foo
そしてそれをexportする。
export MYENV
まとめて
export MYENV=foo
と書いても同じになる。

登録されている環境変数を確認するにはprintenvまたはenvを用いる。

環境変数を削除するにはオプション-nを付けてexportを実行する。

export -n MYENV

シェル変数を確認するには、

set
コマンドを用いる。

シェル変数を削除するには

unset MYWORK
とする。

シェルから起動したアプリケーションでも使うような変数は環境変数にし、シェルでしか使わないような変数は.bashrcにシェル変数として書いておけば良い。

直前にいたディレクトリに移動

作成日:2004.1.15
$ cd -

スタックサイズの変更

作成日:2004.1.15

スタックサイズなどの情報をみるにはulimitを使う。

$ ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) 6144
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 256
pipe size          (512 bytes, -p) 1
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 100
virtual memory        (kbytes, -v) 14336

スタックサイズ(stack size)が小さいと数値計算などで大きな配列を使うときなどに segmentation faults で落ちてしまうことがある。スタックサイズを変更するには、キロバイト単位で

$ ulimit -s 10000

とする。

プロンプトの変更

作成日:2004.1.15

環境変数PS1を変更する。例えば、

[directory: hostname]$ 
としたい場合は、
export PS1="[\W: \h]$ "
とする。

ヒストリーをインクリメンタルサーチ

作成日:2004.1.15
Control + r

でインクリメンタルサーチに入る。あとは過去に打ったコマンドを頭から打っていけばよい。