simudaru's blog

Python, Rなどのメモを残していこうと思います。  よろしくお願いいたします。

【bash】設定ファイルの読み込み

bashでの設定ファイルの読み込み

以下のようなファイルを用意し、
「.」で実行することで変数を読み込む

X="Hello World!"

シェルスクリプトを読み込んで実行しているので、
変数だけでなく、処理を記載することもでき便利。
反面、安全性は高くないかも。

# ---------------------------------------------------------
# 引数に設定ファイルを与え、設定ファイルを読み込むコードの雛形
# ---------------------------------------------------------
set -eu

WKDIR=`pwd`
THISFILENAME=`basename $0`
THISFILEDIR=$(cd $(dirname $0) && pwd)
NARGS=1

if [ $# -ne ${NARGS} ]; then
  echo "USAGE: sh ${THISFILENAME} confFile" 1>&2
  exit 1
fi

# ---------------------------------------------------------
# 設定ファイル読み込み
. $1

# 設定ファイルで変数が設定されているか確認
# ---------------------------------------------------------
echo $X > /dev/null

# ---------------------------------------------------------
# Main
echo $X

「set -u」により設定されていない変数を使うとエラー終了することを利用し、設定変数で必要な変数が設定されているかを確認している。
もっといい方法あるかも。

【bash】 UnitTest

シェルでのユニットテストにはshunit2が使えるらしい。

インストールはtarを解凍して好きな場所に置くだけ

wget https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz
tar zvxf shunit2-2.1.6.tgz


testで始まる関数を作る。
assertEqualsやassertTrueなどが使える。
最後にshunit2をインクルードする。

test0arg(){
  res=`sh ../args.sh 2>&1`
  assertEquals "USAGE: args.sh arg1" "${res}"
}

test1arg(){
  res=`sh ../args.sh 12ab 2>&1`
  assertEquals "12ab" "${res}"
}

test2arg(){
  res=`sh ../args.sh 12 ab 2>&1`
  assertEquals "USAGE: args.sh arg1" "${res}"
}

. ~/shunit2-2.1.6/src/shunit2


試していないが、
setUp/tearDown/oneTimeSetUp
も使えるらしいので、基本的なUnitTestはこれで十分できそう。

【vim】windows 設定例

大体は他の人の設定をコピペしてるだけ。
いずれ自分で理解して、自分用にカスタマイズしたい。

syntax enable

set number
set ruler
set list
set listchars=tab:>-,trail:-,nbsp:%,extends:>,precedes:<,eol:<
set incsearch
set hlsearch
set nowrap
set showmatch
set whichwrap=h,l
set nowrapscan
set ignorecase
set smartcase
set hidden
set history=2000
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
set helplang=en
set backspace=indent,eol,start

set nobackup
set noswapfile
set noundofile

set lines=35 
set columns=120
set clipboard=unnamed

if has("gui_running")
  set guioptions-=m
  set guioptions-=T
  set guioptions-=r
  set guioptions-=R
  set guioptions-=l
  set guioptions-=L
endif

colorscheme desert

nnoremap ZZ <Nop>
nnoremap ZQ <Nop>

nnoremap Q <Nop>

nnoremap gs  :<C-u>%s///g<Left><Left><Left>
vnoremap gs  :s///g<Left><Left><Left>

【R】コマンドライン引数

コマンドライン引数を取るスクリプトの雛形を作っておこうと思う。今回はR。

# ---------------------------------------------------------
# コマンドライン引数を取るコードの雛形
# ---------------------------------------------------------
args <- commandArgs(trailingOnly=T) 
nargs = 1

if (length(args) != nargs){
  stop("USAGE: R --vanilla --args arg1 < PROG")  
}

print(args[1])

Rの場合、コード自身のファイル名を取得する方法がわからなかった。

【python】コマンドライン引数

コマンドライン引数を取るスクリプトの雛形を作っておこうと思う。今回はpython

# coding: utf-8
# ---------------------------------------------------------
# コマンドライン引数を取るコードの雛形
# ---------------------------------------------------------
import sys

args = sys.argv
this_filename = args[0]
nargs = 1

if len(args) - 1 != nargs:
  sys.exit("USAGE: %s arg1" % args[0])

print args[1]

本格的にはargparseを使うと良いと思うが、
簡単な用途ならこれで良いだろう。

【vim】大文字小文字の変換

複数一気に変える場合

  ヴィジュアルモードで範囲選択後

  U: 大文字に変更
  u: 小文字に変更
  ~: 大文字小文字を反転

一文字変える場合

  ノーマルモードで範囲選択後

  ~: 大文字小文字を反転

【vim】クリップボードにコピー

自分用メモ

"*y

以上。