bashのfor分で数値の範囲を指定する方法。

知らんかった…

$ for i in {1..10}; do echo $i ; done
1
2
3
4
5
6
7
8
9
10

更にゼロパディングしたい場合は、

$ for i in {01..10}; do echo $i ; done
01
02
03
04
05
06
07
08
09
10

管理者権限のないマシンで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
をしないようにしたら、正常に動くようになった。

carton exec で実行する際に実行時にモジュール・パスを追加

carton exec -- perl -I path home.pl

vimでクリップボードからコピる際に自動コメントがウザい場合

Webとかからコードコピりたい時に「コメント行の次行も自動でコメントアウト」がウザい時がある。 そういうときは、おとなしく vi 使うのも手。

/bin/vi [file]

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

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

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

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

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

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

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

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

google cloud SDK を windows にインストールした場合の設定ファイルの場所

C:\Users\[ユーザ名]\AppData\Roaming\gcloud

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
"