Linuxの記憶

Android ndk開発のために久々にLinuxを入れたので、かなり昔のメモを探してきました。

bash

~/.bashrc を書き換えて bash をより便利に。

プロンプトの変更

TITLEBAR="\[\033]0;\h:\w\007\]"
PS1="${TITLEBAR}\
\[\e[7m\]\h\[\e[0m\] [\w]$ "

プログラマブル補完

cd の次にTABを押すとディレクトリだけを補完する。

complete -d cd mkdir rmdir pushd

http://en.tldp.org/LDP/abs/html/sample-bashrc.html

その他

[~/.bashrc]

# 重複するコマンドヒストリを削除
HISTCONTROL=ignoredups

screen

一つの仮想端末から複数の端末を操作可能。MDIみたいなもの。

コマンド

(注意) escape ^Tt にしてある。^Tに続いて以下のキーを入力する。

c, 新しい画面の作成
w or ^w, window一覧表示
数字, window番号に切替
n, 次のwindowに切替
p, 前のwindowに切替
^T, 直前のwindowに切替
A, windowのタイトル編集
\, quit
d, detach

screen の引数

-ls, セッションリスト表示
-r, resume
-d, detach

リージョンの管理

S, split
[TAB], フォーカスを別のリージョンに移す
Q, 他のリージョンを閉じる

コピー&ペースト

  1. ^[: copyモード開始
  2. viのキーバインドで移動
  3. spaceで選択開始
  4. viのキーバインドで移動
  5. spaceで選択終了
  6. ^]: 貼り付け
設定ファイル

[$HOME/.screenrc]

escape ^Tt
vbell off # Wuff!は五月蝿いので。^T^Gで切替可能。
bindkey -k kb stuff "\010" # Debian では Ctrl-h は DEL になるので修正
hardstatus alwayslastline "%w" # 最下行に window 一覧表示

[$HOME/.bashrc]

# screen 時に ssh, telnet でログインしたホスト名を window 名にする
# ただし ^[ は Ctrl-v ESC
if [ "$TERM" = "screen" ]; then
function ssh() {
echo -n "^[k$1^[\\"
/usr/bin/ssh $1
}
function telnet() {
echo -n "^[k$1^[\\"
/usr/bin/telnet $1
}
fi

リンク