管理者権限のないマシンでtmuxを使う

ここを参考にした。

ken1row.net

但し、自分の環境の場合は、いくつか追加でインストールが必要だった。 いずれもtarballをscpでサーバにもっていき、--prefixオプションでローカルにインストールした。

nursesのビルドに必要

tmuxのビルドに必要

  • autoconf
  • automake
  • pig-config

そして、tmux を configure する際、CFLAGSにncursesへのパスも足す必要があった。
(なお、私は全てのモジュールを ${HOME}/4tmux/local ディレクトリにインストールした。)

./configure --prefix=${HOME}/4tmux/local LDFLAGS="-L${HOME}/4tmux/local/lib" CFLAGS="-I${HOME}/4tmux/local/include -I${HOME}/4tmux/local/include/ncurses"

また、tmuxのインストールまで済んだ後、起動しようとすると
tmux: invalid LC_ALL, LC_CTYPE or LANG
というメッセージが出て起動できなかった。

.bashrc や .bash_profile で
export LD_LIBRARY_PATH=$HOME/local/lib
をしないようにしたら、正常に動くようになった。

windows のバッチファイル内でのforの変数名で%%を2つ使う件

バッチファイル内で for文を使う場合、変数名には%%とパーセントを2つつける。

for %%a in (*.gz) do echo %%a

しかし、これをコマンドプロンプトで直接打つと、以下のようにエラーとなる。

%%a の使い方が誤っています。

コマンドプロンプトで直接打つ場合はパーセントを一つにする。

for %a in (*.gz) do echo %a

よく分からんが、バッチファイルの場合は%をエスケープする必要があるということ?%一つだと無視される?

expect の使い方メモ(expect eofとか)

expect でコマンドを実行させ、そのコマンドの完了を待って続けて別なコマンドを実行させる場合は"expect eof"を入れるとよい。

# spawn したコマンドが完了してから別なコマンドをspawnする場合は expect eof を挟む。

expect -c "
spawn scp hoge@fuga.com:/home/hoge/somefile .
expect eof

spawn scp hoge@fuga.com:/home/hoge/otherfile .
expect eof
"

# expectコマンドの次にshellとかのコマンドを打つ場合も expect eofする。
# でないと、spawnしたコマンドの完了を待たずに次に行ってしまう。
echo "scp completed."

このような使い方ではなくて、例えば「expectでssh等のコマンドを自動実行し、ログインできたら処理をユーザに戻す」といった場合は、プロンプト文字をexpectして exit するか、spawn した後に interact すればよいっぽい。

expect -c "
spawn ssh hoge@fuga.com
expect \"password:\"
send \"passwd\"

expect \"$\"
exit
"

もしくは

expect -c "
spawn ssh hoge@fuga.com
expect \"password:\"
send \"passwd\"

interact
"

Microsoft Query のエラーメッセージがドイヒーな件

ExcelMicrosoft Query でSQL書いてデータを取り込もうとしたら、

「パラメータが少なすぎます。 2 を指定して下さい。」

とかいうエラーが出て「???」てなった。
よくよくクエリを見てみると、WHERE句でカラム名のつづりを間違っていた…

もうちょっとエラーメッセージどうにかならんのかね…