個人的なメモ

めもめも.

screenコマンド

$HOME/.screenrc

$ cat ~/.screenrc
# Encoding
defencodig utf-8

# Prefix Key
escape ^Kk

# set scrollback
defscrollback 1000000

# Delete sartt up screen
startup_message off

# Enable Auto detach
autodetach on

# logging
log on
deflog on
logfile \"/Users/YourName/screen/log/screen-%Y%m%d-%n.log\"

# Show date and screen list
hardstatus alwayslastline \"%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c \"

screen端末の追加

C-k c


動作中のscreenを表示

C-k w

動作中のscreenの名前の変更

C-k A

端末の移動(上)

C-k n

端末の移動(下)

C-k p

Linuxタブ補完設定

[1] Ubuntu16.04でccコマンドを入力し、ファイル名をタブ補完しようとするとうまく動作しない。

[解決法] ccコマンド実行時に、ファイルを対象に補完を行う

$ complete -f cc


[2] Ubuntu16.04でlsコマンドでワイルドカードを使うとすべての候補が出ずに、一番目のファイル名で勝手に補完されてしまう。

[解決法]
lsコマンド実行時に、ファイルを対象に補完を行う*1

$ complete -f ls


[使い方]
全コマンドの補完情報表示。

$ complete -p

lsの補完情報表示。

$ complete -p ls

ccコマンド実行時に、ファイル(とディレクト*2 )を対象に補完を行う

$ complete -f cc

ccコマンド実行時に、ディレクトリを対象に補完を行う

$ complete -d cc

http://www.usupi.org/sysad/235.html

*1:“complete -F _longopt ls"と設定してあった。“type -f _longopt"で内容を確認したが、よくわからなかった。

*2:ディレクトリも補完しないとファイルまでたどり着けないから

lessの覚えるべきコマンド

/pattern 現在位置からファイルの末尾方向へpatternを検索し,移動する
?pattern 	現在位置からファイルの先頭方向へpatternを検索し,移動する
:n 	次のファイルを閲覧する
:p 	前のファイルを閲覧する

解凍シェル_途中

上書き確認の応答待ちとかなるとプログラムが止まってしまう。
リアルタイムで表示するか応答待ち時に標準出力できるのか?

#!/usr/bin/python
# coding:utf8

import sys
import commands

def getFilename(st): # st = "./hoge/fuga/piyo_foo.txt" -> "piyo_foo.txt"
    tmp = ("hoge", "fuga", "piyo")
    while (tmp[1]):
        tmp = st.partition("/")
        st = tmp[2]
    return tmp[0]

if __name__ == '__main__':

    name_extensions = [".tar.gz", ".tar.bz2", ".tar.xz", ".tar", ".zip"]
    command = ["tar -zxvf", "tar -jxvf", "tar -Jxvf", "tar -xvf", "unzip"]

    argvs = sys.argv

    for i in range(1, len(argvs)):
        for j in range(len(name_extensions)):
            n = len(argvs[i]) - len(name_extensions[j])
            if (name_extensions[j] == argvs[i][n:]) :
                cmd = command[j] + " " + argvs[i]
                print cmd
                # print commands.getoutput(cmd)

関数ポインタ_途中

#include <stdio.h>

void HOGE(){
  printf("HOGE\n");
}

int FUGA(){
  printf("FUGA\n");
  return 1;
}

int main(){

  void (*func)() = HOGE;
  func();

  void (*func2)() = NULL;
  func2 = HOGE;
  func2();


  int (*func3)() = FUGA;
  func3();

  return 0;
}
#include <stdio.h>

void HOGE(){
  printf("HOGE\n");
}

int FUGA(){
  printf("FUGA\n");
  return 1;
}

void PIYO(){
  printf("PIYO\n");
}

int main(){

  void (*funcs[])() = {HOGE, PIYO};
  int i;
  for (i = 0; i < 2; i++) {
	funcs[i]();
  }

  return 0;
}
#include <stdio.h>
#include <stdlib.h>

void HOGE(){
  printf("HOGE\n");
}

int FUGA(){
  printf("FUGA\n");
  return 1;
}

void PIYO(){
  printf("PIYO\n");
}

int main(){

  void (**funcs)() = NULL;
  int i;

  funcs = malloc( sizeof(void*) * 2 );
  funcs[0] = HOGE;
  funcs[1] = PIYO;
  for (i = 0; i < 2; i++) {
	funcs[i]();
  }

  return 0;
}