2017年12月30日土曜日

CUI ログインで、CapsLock キーを Ctrl キーにする dumpkeys, loadkeys

CUI ログインで、CapsLock キーを Ctrl キーにする方法はたくさんあるが、いつも覚えられない。
自分に合う方法はこれだったので、メモしておく。
dumpkeys と loadkeys で OK。キーコード 58 の設定を Control にする。

■ Ubuntu の場合

# dumpkeys > nocaps.keymap

# vi nocaps.keymap

(下記コマンドで変換、保存)
:%s/CtrlL_Lock/Control/g
:wq

# loadkeys nocaps.keymap

■ CentOS の場合

# dumpkeys > nocaps.keymap

# vi nocaps.keymap

(キーコード 58 の設定を Control に変更して保存)

# loadkeys nocaps.keymap

● CUI, console, capslock, ctrl, CapsLock, Ctrl, Control, コントロール, キー, key, 変更, nocaps, dumpkeys, loadkeys

2017年12月23日土曜日

シェルスクリプトとバイナリを結合してインストーラにする

シェルスクリプトと tar.gz とかのバイナリアーカイブを結合して、1 ファイルのインストーラにする方法。
最近、よく目にするようになった。
コピペで使えるようにしておく。

仕組みは、自スクリプトの末尾に __ARCHIVE__ マーカーを書いておいて、その後ろにアーカイブを結合。
スクリプト実行時に grep で検索して開始行を取得、tail で切り取って展開という流れ。

1. ベースとなるシェルスクリプトを作成

まずは、ベースとなるシェルスクリプトを作成。
末尾 __ARCHIVE__ の後ろに空行を入れないようにします。

$ vi base.sh

#!/bin/sh

# ここに処理を書いても良い

# アーカイブの開始位置を取得
ARCHIVE_OFFSET=$(($(grep -na -m1 "^__ARCHIVE__$" $0 | cut -d ':' -f1) + 1))

# アーカイブを解凍
tail -n +${ARCHIVE_OFFSET} $0 | tar zxf -

# ここに処理を書いても良い

# exit 0 を忘れずに
exit 0

__ARCHIVE__

2. 上のスクリプトとアーカイブ (tar.gz の例) を cat で結合

$ cat base.sh hogehoge.tar.gz > installer.sh

● シェルスクリプト, インストーラ, 結合, shell script, installer, cat, archive, tar.gz, 自己解凍