ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

Bash

Bashでリダイレクトにより誤って既存ファイルを上書きしてしまわないようにする

背景 bashクックブック を読み進めています。 標準で ON にしておくと良さそうな設定がありました。 Bashでリダイレクトにより誤って既存ファイルを上書きしてしまわないようにする設定です。 環境 $ uname -a Darwin genzouw-MacBook-Pro.local 15.2.0 Darw…

Bashでランダムな文字列を作成する

背景 Webサイトを見ていてたまたま urandom というものを見つけた。 これをうまく使うことでランダムな文字列を生成できる。 環境 $ uname -a Darwin genzouw-no-MacBook-Pro.local 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; roo…

Neosnippetでシェルコマンド呼び出し結果がスニペットに差し込む

背景 vimデコーディングするう上で、もはや無くてはならないプラグインの一つである Shougo/neosnippet.vim。 非常に便利です。 更に便利に使うために、以下の情報をスニペット展開時に自動的に差し込めるようにしてみよう。 今利用している環境の情報 ディ…

1から100までの数列から、ランダムに10個の数値をピックアップする

背景 テストデータの中からランダムにデータをn件(例えば10件)、ピックアップしたかった。 調査環境 $ uname -a Darwin genzouw-macbook-pro.local 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13 PDT 2014; root:xnu-2422.100.13~1/RELEASE_X…

bashログイン後に「warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)」が表示された場合の対処

新しく導入したばかりのサーバーにBashでログインしたところ、以下の様なメッセージが表示されるようになった。 bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) 直前に行ったこと 直前に行なっていたことといえば、.bashrcに環境変…

設定ファイル編集前にyyyymmdd付きでバックアップする際のコマンド

こんな書き方もできますよ、というレベルで。 $ cp file_to_backup{,.$(date +%Y%m%d)} $ ls file_to_backup file_to_backup.20130420 以下のようなスクリプトを作るといい。 cpbk #!/bin/sh -u set -e [ -f "${1}" ] && cp "${1}"{,.$(date +%Y%m%d)} 使い…

年、月、日の取得

こうすると非常に簡単に取得できる。

変数からパターンに合致した文字列を除去する

いつも前方から除去するのか、後方から除去するのかごっちゃになっている。たとえばファイルのフルパスからファイル名だけを取得する場合。 basenameコマンドやdirnameコマンドを使えば解決なのだが、これらを使わない場合。 $ filepath=/opt/groovy/bin/gro…

関数の定義方法

いつも、functionというキーワードを利用して以下のように定義していた。 function xxx { echo "xxx"; } キーワードを利用しなくても、関数名の後ろに "()" を追記すれば関数扱いになる。 xxx() { echo "xxx"; }

readコマンドで読み込んだ行からカラムを取り出す方法

今迄、readコマンドを一行ずつ、行単位で読み込んでくりかえし処理する用途でしか使用していなかった。 ほんのちょっとだけ突っ込んだ使い方を学んだ。 行をカラム分割する たとえば以下のようなcsvから3列目の情報を取り出す。 1 2 3 4 5 2 3 4 5 6 3 4 5 6…

ファイルを空にする方法

2つほど方法を知っていた。以下の方法のいずれもファイルの中身を空にできる。 (ここで空にしたい対象ファイルはfile.txtだとする) $ echo -n "" > file.txt $ cat /dev/null > file.txt 今日3つ目の、もっともタイプ量が少ない方法を知った。 $ > file.…

ランダムな数列を生成する

Bashでランダムな数列を生成する方法。方法は2つ見つかった。ここでは1から8までのランダムな数列を生成してみる。 shufコマンドを利用する $ seq 1 8 | shuf.exe 8 3 2 7 1 6 4 5 sortコマンドを利用する $ seq 1 8 | sort -R # オプションは大文字である…

Subversionのリポジトリ上から2つのリビジョンの差分ファイルをピックアップするスクリプト

svndiffexp #!/bin/bash target=`svn info | grep 'URL: ' | sed 's/URL: //g'` r1=$1 r2=$2 todir=$3 list="" for f in `svn diff ${target} -r ${r1}:${r2} --summarize | grep -v ^D | sed -e "s@^. *${target}/@@g"` do if [ -f "$f" ] then list="$list…