우분투 12.04
LG G3 Cat.6
* 설치
sudo apt-get go-mtpfs fuse
# go-mtpfs 0.1-1~20130108~webupd8~precise
# fuse 2.8.6-2ubuntu2
* 설정
cat /etc/udev/rules.d/70-android.rules
# G3
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="633f", MODE="0666"
* 연결
go-mtpfs /media/MyAndroid
* 파일 조작
/media/MyAndroid 에 접근 가능
* 연결 해제
fusermount -u /media/MyAndroid
2016년 11월 21일 월요일
2016년 11월 10일 목요일
텍스트, 아스키 코드 변환
텍스트를 아스키 코드로
$ echo -n "Test text" | xxd -p -i -c16
0x54, 0x65, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74
아스키 코드를 텍스트로
$ echo "0x54, 0x65, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74" | xxd -r -p
Test text
$ echo "54, 65, 73, 74, 20, 74, 65, 78, 74" | xxd -r -p
Test text
$ echo "54 65 73 74 20 74 65 78 74" | xxd -r -p
Test text
$ echo 546573742074657874 | xxd -r -p
Test text
$ echo -n "Test text" | xxd -p -i -c16
0x54, 0x65, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74
아스키 코드를 텍스트로
$ echo "0x54, 0x65, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74" | xxd -r -p
Test text
$ echo "54, 65, 73, 74, 20, 74, 65, 78, 74" | xxd -r -p
Test text
$ echo "54 65 73 74 20 74 65 78 74" | xxd -r -p
Test text
$ echo 546573742074657874 | xxd -r -p
Test text
2016년 11월 3일 목요일
msys2
msys2 에 대한 소개 참고
http://a4.aurynj.net/post/119164673973/msys2
* msys2 설치
1. http://msys2.github.io/ 에서 인스톨러를 받는다.
# 인스톨러로 설치하기 싫어서 압축파일을 받았다.
http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20161025.tar.xz
2. 압축 파일을 풀어 C:\msys64 로 설치
3. 터미널 실행
C:\msys64\mingw64.exe
4. 터미널 환경 설정 (이건 취향대로)
Alt + Space Bar > Options...
Looks
Cursor: (*) Block
Text
Font: Bitstream Vera Sans Mono, 12pt
Locale: ko_KR
Character set: UTF-8
Mouse
Right mouse button: (*) Paste
Middle mouse button: (*) NothingWindow
# 마우스 오른쪽 버튼의 Menu 기능은 컨텍스트 키 또는 타이틀바 오른 클릭으로 표시 가능.
또는
--------------------------------------------------------------------------------
$ cat ~/.minttyrc
CursorType=block
Font=Bitstream Vera Sans Mono
FontHeight=12
Locale=ko_KR
Charset=UTF-8
CopyAsHTML=16777216
MiddleClickAction=void
RightClickAction=paste
5. 패키지 설치
$ pacman -Syu # db 동기화 및 업그레이드
$ pacman -Su # 나머지 업그레이드
$ pacman -S vim git tig tar patch diffutils winpty openssh man-db man-pages-posix
# 전체 화면으로 바꾸면 진짜 linux 쓰는 것 같다.
$ pacman -Sl # 설치 패키지 리스트
참고
* http://a4.aurynj.net/post/119164673973/msys2
* https://wiki.archlinux.org/index.php/Pacman_(%ED%95%9C%EA%B5%AD%EC%96%B4)
http://a4.aurynj.net/post/119164673973/msys2
* msys2 설치
1. http://msys2.github.io/ 에서 인스톨러를 받는다.
# 인스톨러로 설치하기 싫어서 압축파일을 받았다.
http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20161025.tar.xz
2. 압축 파일을 풀어 C:\msys64 로 설치
3. 터미널 실행
C:\msys64\mingw64.exe
4. 터미널 환경 설정 (이건 취향대로)
Alt + Space Bar > Options...
Looks
Cursor: (*) Block
Text
Font: Bitstream Vera Sans Mono, 12pt
Locale: ko_KR
Character set: UTF-8
Mouse
Right mouse button: (*) Paste
Middle mouse button: (*) NothingWindow
# 마우스 오른쪽 버튼의 Menu 기능은 컨텍스트 키 또는 타이틀바 오른 클릭으로 표시 가능.
--------------------------------------------------------------------------------
$ cat ~/.minttyrc
CursorType=block
Font=Bitstream Vera Sans Mono
FontHeight=12
Locale=ko_KR
Charset=UTF-8
CopyAsHTML=16777216
MiddleClickAction=void
RightClickAction=paste
--------------------------------------------------------------------------------
5. 패키지 설치
$ pacman -Syu # db 동기화 및 업그레이드
$ pacman -Su # 나머지 업그레이드
$ pacman -S vim git tig tar patch diffutils winpty openssh man-db man-pages-posix
# 전체 화면으로 바꾸면 진짜 linux 쓰는 것 같다.
$ pacman -Sl # 설치 패키지 리스트
참고
* http://a4.aurynj.net/post/119164673973/msys2
* https://wiki.archlinux.org/index.php/Pacman_(%ED%95%9C%EA%B5%AD%EC%96%B4)
2016년 10월 23일 일요일
OSMC 에서 BT 키보드 사용하기
$ sudo apt-get install bluez $ sudo connmanctl enable bluetooth # 중요: 재부팅시 rfkill unblocked 로 설정 $ sudo bluetoothctl [bluetooth]# power on [bluetooth]# scan on [CHG] Controller <어댑터 주소> Discovering: yes [NEW] Device <키보드 주소> BSKBB22 [bluetooth]# scan off [bluetooth]# agent KeyboardOnly [bluetooth]# pair <키보드 주소> [agent] PIN code: 362888 # 이 값은 pair 할 때마다 다름 # 키보드에서 362888 엔터를 입력 Pairing successful [bluetooth]# trust <키보드 주소> [bluetooth]# quit
2016년 9월 25일 일요일
RPi2 에 OSMC 설치
Raspberry pi 2
OSMC 2016-08.1 버전
HDMI 연결 가능한 TV
SD 카드에 OSMC 설치
1. https://osmc.tv/download/ 에서 인스톨러 다운로드 (윈도우즈는 osmc-installer.exe)
2. osmc-installer.exe 실행
3. welcome 화면
[English]
[Raspberry Pi 2 / 3]
4. select version 화면
[2016.08-1] 최신 버전
5. install options
[*] on an SD card
6. networking
[*] wired connection
7. device selection
micro sd 카드를 usb 어댑터에 넣어 usb 포트에 삽입 > refresh > 디바이스 선택
8. license agreement
[v] I accept the End User License Agreement
9. downloading
10. Are you sure 창
Yes
11. Installing
12. congratulations
quit
리모콘앱 설치
- OSMC 를 조작하기 위해 리모콘이 필요. (RPi2 에 키보드나 마우스를 연결하여 사용 가능)
- 여러가지 리모콘을 지원하는 것 같음.
- 다행이도 TV 리모콘으로 조작이 되어 별도의 리모콘 구입이나 앱 설치가 필요 없음.
- 안드로이드 앱으로는 Yatse 라는 앱이 평이 좋은것 같음
OSMC 초기 설정
1. sd 카드를 RPi2 에 삽입 후 전원 연결
2. Fomatting device
3. Installing files
4. OSMC 초기 설정 화면
Welcome
English (한글 폰드가 없어 글자 깨짐)
Timezone
Asia > Seoul
Hostname
[current name: osmc]
Accept
SSH
SSH Service is Enabled
Accept
License
Continue
Look+Feel
OSMC
Sign-up
No thanks
Exit
한글 메뉴 설정
1. RPi2 에 접속
teraterm, putty, ssh 등으로 RPi2 에 접속. osmc/osmc
2. 한글 폰트 다운로드
$ sudo apt-get install fonts-nanum
3. 폰트 파일 복사
$ cp /usr/share/fonts/truetype/nanum/NanumGothic.ttf /usr/share/kodi/addons/skin.osmc/fonts/
4. 스킨의 폰트 설정 파일에서 폰트 이름을 전부 변경
# OSMC 스킨
$ sed -i '/filename/s/>[^<]*</>NanumGothic.ttf</' /usr/share/kodi/addons/skin.osmc/16x9/Font.xml
# Confluence
$ sed -i '/filename/s/>[^<]*</>NanumGothic.ttf</' /usr/share/kodi/addons/skin.confluence/720p/Font.xml
5. 미디어센터 재시작
$ sudo service mediacenter restart
6. 표시 언어를 한글로 변경
Settings > Appearance > International > Language > Korean
설정
설정 > 비디오 > 재생 > 다음 비디오를 자동 재생 [*]
삼바 설치
1. sudo apt-get update
2. sudo apt-get install samba
3. tail -6 /etc/samba/smb.conf
[share]
comment = Media Directories
path = <Absolute path>
valid users = <User list separated by ,>
browseable = yes
writable = yes
4. sudo service smbd restart
OSMC 2016-08.1 버전
HDMI 연결 가능한 TV
SD 카드에 OSMC 설치
1. https://osmc.tv/download/ 에서 인스톨러 다운로드 (윈도우즈는 osmc-installer.exe)
2. osmc-installer.exe 실행
3. welcome 화면
[English]
[Raspberry Pi 2 / 3]
4. select version 화면
[2016.08-1] 최신 버전
5. install options
[*] on an SD card
6. networking
[*] wired connection
7. device selection
micro sd 카드를 usb 어댑터에 넣어 usb 포트에 삽입 > refresh > 디바이스 선택
8. license agreement
[v] I accept the End User License Agreement
9. downloading
10. Are you sure 창
Yes
11. Installing
12. congratulations
quit
리모콘앱 설치
- OSMC 를 조작하기 위해 리모콘이 필요. (RPi2 에 키보드나 마우스를 연결하여 사용 가능)
- 여러가지 리모콘을 지원하는 것 같음.
- 다행이도 TV 리모콘으로 조작이 되어 별도의 리모콘 구입이나 앱 설치가 필요 없음.
- 안드로이드 앱으로는 Yatse 라는 앱이 평이 좋은것 같음
OSMC 초기 설정
1. sd 카드를 RPi2 에 삽입 후 전원 연결
2. Fomatting device
3. Installing files
4. OSMC 초기 설정 화면
Welcome
English (한글 폰드가 없어 글자 깨짐)
Timezone
Asia > Seoul
Hostname
[current name: osmc]
Accept
SSH
SSH Service is Enabled
Accept
License
Continue
Look+Feel
OSMC
Sign-up
No thanks
Exit
한글 메뉴 설정
1. RPi2 에 접속
teraterm, putty, ssh 등으로 RPi2 에 접속. osmc/osmc
2. 한글 폰트 다운로드
$ sudo apt-get install fonts-nanum
3. 폰트 파일 복사
$ cp /usr/share/fonts/truetype/nanum/NanumGothic.ttf /usr/share/kodi/addons/skin.osmc/fonts/
4. 스킨의 폰트 설정 파일에서 폰트 이름을 전부 변경
# OSMC 스킨
$ sed -i '/filename/s/>[^<]*</>NanumGothic.ttf</' /usr/share/kodi/addons/skin.osmc/16x9/Font.xml
# Confluence
$ sed -i '/filename/s/>[^<]*</>NanumGothic.ttf</' /usr/share/kodi/addons/skin.confluence/720p/Font.xml
5. 미디어센터 재시작
$ sudo service mediacenter restart
6. 표시 언어를 한글로 변경
Settings > Appearance > International > Language > Korean
설정
설정 > 비디오 > 재생 > 다음 비디오를 자동 재생 [*]
삼바 설치
1. sudo apt-get update
2. sudo apt-get install samba
3. tail -6 /etc/samba/smb.conf
[share]
comment = Media Directories
path = <Absolute path>
valid users = <User list separated by ,>
browseable = yes
writable = yes
4. sudo service smbd restart
2016년 9월 6일 화요일
node.js 설치
https://gist.github.com/isaacs/579814#file-node-and-npm-in-30-seconds-sh
참조
https://gist.github.com/isaacs/579814
참조
https://gist.github.com/isaacs/579814
메시지큐를 사용하는 프로세스 찾기
cd /proc
for p in [0-9]*; do
echo $p; ls -l $p/fd | grep "매시지큐이름"
done | grep -B1 "매시지큐이름"
cat "찾은 PID"/cmdline
for p in [0-9]*; do
echo $p; ls -l $p/fd | grep "매시지큐이름"
done | grep -B1 "매시지큐이름"
cat "찾은 PID"/cmdline
2016년 9월 1일 목요일
2016년 7월 16일 토요일
git bash 홈 디렉토리 변경
git bash 를 실행하면 홈디렉토리가 "C:\Users\윈도사용자이름" 으로 된다.
cygwin 과 홈디렉토리를 같이 쓰고 싶어 다음과 같이 ~/.bashrc 파일을 수정했다.
계정 명은 user 이다.
로그인
$ echo $HOME
/c/Users/user # git bash 의 기본 홈 디렉토리
$ pwd
/c/Users/user
$ vi ~/.bashrc
NEW_HOME="/d/cygwin/home/user" #cygwin 의 홈 디렉토리
cd "$NEW_HOME"
[ -f .bashrc ] && . .bashrc
export HOME="$NEW_HOME"
다시 로그인 하면
$ echo $HOME
/d/cygwin/home/user
$ pwd
/d/cygwin/home/user
주의:
1. git bash 와 cygwin 은 절대 경로 지정 방식이 다르기 때문에
.bashrc 안에서 절대 경로 지정에 주의 해야 한다.
(cygwin 쪽 절대 경로명 앞에 /cygdrive 이 더 붙어있다.)
2. 환경 변수 및 환경 변수 값이 git bash 일 때와 cygwin 일 때 다르다.
즉, 홈 디렉토리가 같아질 뿐 다른 환경은 다 다르다.
cygwin 과 홈디렉토리를 같이 쓰고 싶어 다음과 같이 ~/.bashrc 파일을 수정했다.
계정 명은 user 이다.
로그인
$ echo $HOME
/c/Users/user # git bash 의 기본 홈 디렉토리
$ pwd
/c/Users/user
$ vi ~/.bashrc
NEW_HOME="/d/cygwin/home/user" #cygwin 의 홈 디렉토리
cd "$NEW_HOME"
[ -f .bashrc ] && . .bashrc
export HOME="$NEW_HOME"
다시 로그인 하면
$ echo $HOME
/d/cygwin/home/user
$ pwd
/d/cygwin/home/user
주의:
1. git bash 와 cygwin 은 절대 경로 지정 방식이 다르기 때문에
.bashrc 안에서 절대 경로 지정에 주의 해야 한다.
(cygwin 쪽 절대 경로명 앞에 /cygdrive 이 더 붙어있다.)
2. 환경 변수 및 환경 변수 값이 git bash 일 때와 cygwin 일 때 다르다.
즉, 홈 디렉토리가 같아질 뿐 다른 환경은 다 다르다.
2016년 7월 10일 일요일
tig: revision graph 표시 이상
gnome terminal 에서 tig 을 하면 표시에 문제가 없지만
teraterm 으로 ssh 연결해서 tig 을 하면 리비젼 그래프에서
├, │등의 라인 그래픽이 이상히게 표시된다.
다음과 같은 코드를 처리 못하는것 같다.
----------------------------------------------------------------------
^[[34mM^[(0^[[0m^[[35mqk^[(B^[[0m^[[35m ^[(B^[[0;1m
----------------------------------------------------------------------
일단 다음과 같이 추가하면 default 보다는 괜찮게 나온다.
$ cat ~/.tigrc
set line-graphics = ascii # 또는 utf-8
ascii 나 utf-8 로 설정하면 다음과 같이 나온다.
----------------------------------------------------------------------
^[[34mM^[[35m-.^[[35m ^[(B^[[0;1m
----------------------------------------------------------------------
teraterm 으로 ssh 연결해서 tig 을 하면 리비젼 그래프에서
├, │등의 라인 그래픽이 이상히게 표시된다.
다음과 같은 코드를 처리 못하는것 같다.
----------------------------------------------------------------------
^[[34mM^[(0^[[0m^[[35mqk^[(B^[[0m^[[35m ^[(B^[[0;1m
----------------------------------------------------------------------
일단 다음과 같이 추가하면 default 보다는 괜찮게 나온다.
$ cat ~/.tigrc
set line-graphics = ascii # 또는 utf-8
ascii 나 utf-8 로 설정하면 다음과 같이 나온다.
----------------------------------------------------------------------
^[[34mM^[[35m-.^[[35m ^[(B^[[0;1m
----------------------------------------------------------------------
2016년 7월 5일 화요일
conemu 설정
160619 빌드 기준
# 첫 실행시 first configuration 에서
1. settings 저장 위치
portable 로 사용할거라 실행파일 디렉토리를 선택한다.
2. startup task
주로 Git bash 용이니 {Bash::Git bash} 를 선택한다.
3. color scheme
[<Standard VGA>]
# 세팅
Win + alt + p 로 Settings 창을 연다.
1. 폰트
Settings > Main
Main console font
[Bitstream Vera Sans Mono]
[v] Alternative font
[맑은 고딕]
Unicode ranes
[CJK: 2E80-9FC3;AC00-D7A3;F900-FAFF;FE30-FE4F;FF01-FF60;FFE0-FFE6;] [Apply]
* 영어는 'Bitstream Vera Sans Mono' 로 한글은 '맑은 고딕'으로 표시한다.
* http://www.dafont.com/bitstream-vera-mono.font
Settings > Main>Appearance
Scrollbar
(*) Show
Settings > Startup
(*) Specified named task
[{Bash::Git bash}
Settings > Startup > Tasks
[+] 를 눌러 새 그룹을 만든다.
이름
[Bash::CygWin bash]
명령
[set CHERE_INVOKING=1 & Cygwin설치경로\bin\sh.exe --login -i -new_console:C:"%ConEmuDir%\..\cygwin64\Cygwin.ico"]
Settings > Features > Colors
Schemes: [<Standard VGA>]
* first configuration 에서 고른 스킴이 맘에 안들면 여기서 바꾼다.
Settings > Integration
ConEmu Here
Menu item: [ConEmu Here - Git bash]
Command: [/single -run {Git Bash}]
Icon file: [D:\Portables\ConEmuPack\ConEmu64.exe,0]
[Register] 를 누른다.
Settings > Keys & Macro > Mouse
Mouse options
[] Send mouse events to console
Mouse button actions Right: [Paste]
Middle: [<None>]
# 그 밖에
* 한글 관련 설정
* first configuration 을 다시 띄우려면 설정파일의 이름을 바꾼다(또는 지운다).
# 첫 실행시 first configuration 에서
1. settings 저장 위치
portable 로 사용할거라 실행파일 디렉토리를 선택한다.
2. startup task
주로 Git bash 용이니 {Bash::Git bash} 를 선택한다.
3. color scheme
[<Standard VGA>]
# 세팅
Win + alt + p 로 Settings 창을 연다.
1. 폰트
Settings > Main
Main console font
[Bitstream Vera Sans Mono]
[v] Alternative font
[맑은 고딕]
Unicode ranes
[CJK: 2E80-9FC3;AC00-D7A3;F900-FAFF;FE30-FE4F;FF01-FF60;FFE0-FFE6;] [Apply]
* 영어는 'Bitstream Vera Sans Mono' 로 한글은 '맑은 고딕'으로 표시한다.
* http://www.dafont.com/bitstream-vera-mono.font
Settings > Main>Appearance
Scrollbar
(*) Show
Settings > Startup
(*) Specified named task
[{Bash::Git bash}
Settings > Startup > Tasks
[+] 를 눌러 새 그룹을 만든다.
이름
[Bash::CygWin bash]
명령
[set CHERE_INVOKING=1 & Cygwin설치경로\bin\sh.exe --login -i -new_console:C:"%ConEmuDir%\..\cygwin64\Cygwin.ico"]
Settings > Features > Colors
Schemes: [<Standard VGA>]
* first configuration 에서 고른 스킴이 맘에 안들면 여기서 바꾼다.
Settings > Integration
ConEmu Here
Menu item: [ConEmu Here - Git bash]
Command: [/single -run {Git Bash}]
Icon file: [D:\Portables\ConEmuPack\ConEmu64.exe,0]
[Register] 를 누른다.
Settings > Keys & Macro > Mouse
Mouse options
[] Send mouse events to console
Mouse button actions Right: [Paste]
Middle: [<None>]
# 그 밖에
* 한글 관련 설정
* first configuration 을 다시 띄우려면 설정파일의 이름을 바꾼다(또는 지운다).
2016년 6월 29일 수요일
indent printf
#define iprintf(fmt, ...) printf("%*s" fmt, 2*depth, "", ##__VA_ARGS__)
int depth;
void print_level()
{
if (depth > 4)
return;
iprintf("level %d\n", depth);
++depth;
print_level();
--depth;
iprintf("level %d\n", depth);
}
print_level();
level 0
level 1
level 2
level 3
level 4
level 4
level 3
level 2
level 1
level 0
int depth;
void print_level()
{
if (depth > 4)
return;
iprintf("level %d\n", depth);
++depth;
print_level();
--depth;
iprintf("level %d\n", depth);
}
print_level();
level 0
level 1
level 2
level 3
level 4
level 4
level 3
level 2
level 1
level 0
hex dump
#include <stdio.h>
#include <inttypes.h>
inline char nibble(char n)
{
return n + (n > 9 ? 'a' - 10 : '0');
}
static void dump(const void *data, unsigned len, const char *ind)
{
#define DUMPW 16
#define ZBASE (DUMPW * 3)
if (!data) return;
if (!ind) ind = "";
char buf[DUMPW * 4 + 1];
const int8_t *d = (const int8_t *)data;
unsigned lines = (len + DUMPW - 1) / DUMPW;
unsigned l, p, z;
for (l = 0; l < lines; ++l) {
for (p = z = 0; z < DUMPW; ++z) {
uint32_t c = *d++;
buf[ZBASE + z] = (0x20 <= c && c <= 0x7e) ? c : '.';
buf[p++] = nibble((c >> 4) & 0xF);
buf[p++] = nibble(c & 0xF);
buf[p++] = ' ';
if (--len == 0)
break;
}
//for (; p < ZBASE; ++p) buf[p] = ' ';
memset(buf + p, ' ', ZBASE - p);
buf[ZBASE + z + 1] = 0;
printf("%s%s\n", ind, buf);
}
}
#include <inttypes.h>
inline char nibble(char n)
{
return n + (n > 9 ? 'a' - 10 : '0');
}
static void dump(const void *data, unsigned len, const char *ind)
{
#define DUMPW 16
#define ZBASE (DUMPW * 3)
if (!data) return;
if (!ind) ind = "";
char buf[DUMPW * 4 + 1];
const int8_t *d = (const int8_t *)data;
unsigned lines = (len + DUMPW - 1) / DUMPW;
unsigned l, p, z;
for (l = 0; l < lines; ++l) {
for (p = z = 0; z < DUMPW; ++z) {
uint32_t c = *d++;
buf[ZBASE + z] = (0x20 <= c && c <= 0x7e) ? c : '.';
buf[p++] = nibble((c >> 4) & 0xF);
buf[p++] = nibble(c & 0xF);
buf[p++] = ' ';
if (--len == 0)
break;
}
//for (; p < ZBASE; ++p) buf[p] = ' ';
memset(buf + p, ' ', ZBASE - p);
buf[ZBASE + z + 1] = 0;
printf("%s%s\n", ind, buf);
}
}
2016년 6월 14일 화요일
tip: git push
~/.bashrc
--------------------------------------------------------------------------------
alias gerrit_push='git push origin HEAD:refs/for/`git branch | sed -n "/^\*/{s/..//;p}"`'
alias git_push='git push origin `git branch | sed -n "/^\*/{s/..//;p}"`'
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
alias gerrit_push='git push origin HEAD:refs/for/`git branch | sed -n "/^\*/{s/..//;p}"`'
alias git_push='git push origin `git branch | sed -n "/^\*/{s/..//;p}"`'
--------------------------------------------------------------------------------
2016년 5월 31일 화요일
vim: grep 결과 컬러링
set grepprg=grep\ --color=always\ --exclude=tags\ --exclude=.git\ -n\ $*\ /dev/null
" --color=always: grep 결과에 색을 입혀준다.
" --color=always: grep 결과에 색을 입혀준다.
" --exclude=GLOB: 매치된는 이름의 파일은 검색하지 않음
" :grep abc -wrn . 처럼 사용
참고
http://stackoverflow.com/questions/12764999/colorizing-the-output-of-make-grep-etc-in-vim
2016년 5월 15일 일요일
script: 파일 생성일로 파일명 변경
사진의 경우, 촬영 정보를 사용하여 파일 이름을 바꿔주는 툴이 많다.
동영상은 그런 툴이 없는듯 하다.
파일 생성일로 파일명을 바꿔준다.
--------------------------------------------------------------------------------
#! /bin/bash
verbose=true
try_count=10
ext_list=(
#extention, description
"jpg,JPEG image data"
"png,PNG image data"
"mov,ISO Media, Apple QuickTime movie"
# Add more
)
get_name()
{
stat "$1" |
sed -n '/Birth:/{s/^\s*Birth:\s*//;s/\(.\{22\}\).*/\1/;s/:/-/g;s/[ .]/_/g;p}'
}
find_next_name()
{
for i in `seq 1 $try_count`; do
[ -f "$1_$i.$2" ] || {
echo "${1}_$i"
return
}
done
}
find_ext()
{
local EXT="${1##*.}"
[ -z "$EXT" ] && {
for i in "${ext_list[@]}"; do
desc="${i#*,}"
file $1 | grep -qw "$desc" && {
EXT="${i%%,*}"; break
}
done
}
echo "$EXT"
}
ls -1 |
while read f; do
[ -f "$f" ] || continue
name=$(get_name "$f")
ext=$(find_ext "$f")
[ "$f" = "$name.$ext" ] && {
[ $verbose = true ] && echo "'$f' is already changed"
continue
}
[ -f "$name.$ext" ] && name=$(find_next_name "$name" "$ext")
if [ -z "$name" ]; then
echo "$f: too many files with same name. Use larger try_count"
else
[ $verbose = true ] && echo "mv '$f' '$name.$ext'"
mv "$f" "$name.$ext"
fi
done
--------------------------------------------------------------------------------
동영상은 그런 툴이 없는듯 하다.
파일 생성일로 파일명을 바꿔준다.
--------------------------------------------------------------------------------
#! /bin/bash
verbose=true
try_count=10
ext_list=(
#extention, description
"jpg,JPEG image data"
"png,PNG image data"
"mov,ISO Media, Apple QuickTime movie"
# Add more
)
get_name()
{
stat "$1" |
sed -n '/Birth:/{s/^\s*Birth:\s*//;s/\(.\{22\}\).*/\1/;s/:/-/g;s/[ .]/_/g;p}'
}
find_next_name()
{
for i in `seq 1 $try_count`; do
[ -f "$1_$i.$2" ] || {
echo "${1}_$i"
return
}
done
}
find_ext()
{
local EXT="${1##*.}"
[ -z "$EXT" ] && {
for i in "${ext_list[@]}"; do
desc="${i#*,}"
file $1 | grep -qw "$desc" && {
EXT="${i%%,*}"; break
}
done
}
echo "$EXT"
}
ls -1 |
while read f; do
[ -f "$f" ] || continue
name=$(get_name "$f")
ext=$(find_ext "$f")
[ "$f" = "$name.$ext" ] && {
[ $verbose = true ] && echo "'$f' is already changed"
continue
}
[ -f "$name.$ext" ] && name=$(find_next_name "$name" "$ext")
if [ -z "$name" ]; then
echo "$f: too many files with same name. Use larger try_count"
else
[ $verbose = true ] && echo "mv '$f' '$name.$ext'"
mv "$f" "$name.$ext"
fi
done
--------------------------------------------------------------------------------
2016년 5월 12일 목요일
vim: 명령을 여러 창에 한 번에 적용하기
모든 버퍼에 적용
:bufdo %s/aaa/bbb/g | w
모든 윈도우에 적용
:windo set scb
--------------------------------------------------------------------------------
주의: bufdo의 예와 같이 내용을 수정/저장 하려는 경우
현재 버퍼에 수정사항이 있으면 실행이 안되므로
저장 후 실행해야 한다.
--------------------------------------------------------------------------------
:bufdo %s/aaa/bbb/g | w
모든 윈도우에 적용
:windo set scb
--------------------------------------------------------------------------------
주의: bufdo의 예와 같이 내용을 수정/저장 하려는 경우
현재 버퍼에 수정사항이 있으면 실행이 안되므로
저장 후 실행해야 한다.
--------------------------------------------------------------------------------
2016년 4월 20일 수요일
script: oneline
이름: oneline
코드:
--------------------------------------------------------------------------------
#! /bin/bash
SEP=" "
help()
{
echo "Joins multiple lines to one line"
echo "usage: ${0##*/} [-d DELIMETER]"
echo
exit
}
while getopts "d:" opt; do
case $opt in
d) SEP="$OPTARG";;
*) help;;
esac
done
sed -n "H;\${x;s/^\n*//;s/\n*$//;s/\n/$SEP/g;p}"
--------------------------------------------------------------------------------
코드:
--------------------------------------------------------------------------------
#! /bin/bash
SEP=" "
help()
{
echo "Joins multiple lines to one line"
echo "usage: ${0##*/} [-d DELIMETER]"
echo
exit
}
while getopts "d:" opt; do
case $opt in
d) SEP="$OPTARG";;
*) help;;
esac
done
sed -n "H;\${x;s/^\n*//;s/\n*$//;s/\n/$SEP/g;p}"
--------------------------------------------------------------------------------
2016년 3월 28일 월요일
target command
#! /bin/sh
BDADDR="xx:xx:xx:xx:xx:xx"
CMD=lscall #수정
PROTOCOL=
URI="$(cd ${0%/*}; pwd)/${0##*/}"
URI="${URI#/ls/}"
OPTF="-f"
OPTN="-n 1"
PRINTONLY=no
PARAM=
param_add()
{
local NEW="\"$1\":$2"
[ -z "$PARAM" ] && PARAM="$NEW" || PARAM="$PARAM,$NEW"
}
param_add_string()
{
local FIRST=$1
shift
param_add $FIRST "\"$*\""
}
lscall()
{
echo "$CMD $OPTF $OPTN $PROTOCOL$URI '{$PARAM}'"
[ $PRINTONLY = yes ] || $CMD $OPTF $OPTN $PROTOCOL$URI '{'$PARAM'}'
}
BDADDR="xx:xx:xx:xx:xx:xx"
CMD=lscall #수정
PROTOCOL=
URI="$(cd ${0%/*}; pwd)/${0##*/}"
URI="${URI#/ls/}"
OPTF="-f"
OPTN="-n 1"
PRINTONLY=no
PARAM=
param_add()
{
local NEW="\"$1\":$2"
[ -z "$PARAM" ] && PARAM="$NEW" || PARAM="$PARAM,$NEW"
}
param_add_string()
{
local FIRST=$1
shift
param_add $FIRST "\"$*\""
}
lscall()
{
echo "$CMD $OPTF $OPTN $PROTOCOL$URI '{$PARAM}'"
[ $PRINTONLY = yes ] || $CMD $OPTF $OPTN $PROTOCOL$URI '{'$PARAM'}'
}
while [ $# -gt 0 ]; do
case "$1" in
-s) OPTN="-i"
param_add subscribe true ;;
-n) OPTN="-n $2"
shift ;;
-F) OPTF= ;;
-p) PRINTONLY=yes ;;
*) break ;;
esac
shift
done
while [ $# -gt 0 ]; do
case "$1" in
*) break ;;
esac
shift
done
2016년 2월 26일 금요일
vim 자동완성 리스트 추가
vim 의 자동 완성 기능은 매우 편리하지만 자동 완성 후보는 열린 파일에서만 선택된다.
다음 명령으로 후보가 있는 파일을 추가할 수 있다.
다음 명령으로 후보가 있는 파일을 추가할 수 있다.
:set cpt+=k/path/to/file
예
:set cpt+=k~/.aspell.en.pws
:h
'complete'
vim: help
WHAT PREPEND EXAMPLE ~
Normal mode command (nothing) :help x
Visual mode command v_ :help v_u
Insert mode command i_ :help i_<Esc>
Command-line command : :help :quit
Command-line editing c_ :help c_<Del>
Vim command argument - :help -r
Option ' :help 'textwidth'
:h i_CTRL-N " 입력 모드에서의 Control + N 의 도움말
:h CTRL-N " 명령 모드에서의 Control + N 의 도움말
2016년 2월 24일 수요일
특정 포트를 사용하는 프로그램 찾기
Windows 7
> netstat -nao | findstr 포트번호
> tasklist /fi "pid eq %PID%"
Linux
$ sudo netstat -nap | grep ':22 ' # 22번 포트
$ ps -ef | grep $PID
참고
http://ooz.co.kr/150
http://vitaminz.tistory.com/1
2016년 2월 22일 월요일
bash prompt
CO_G='\[\033[0;32m\]'
CO_RST='\[\033[0m\]'
PS1="\u@$CO_G\h$CO_RST:\w\$ '
참고
http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
http://unix.stackexchange.com/questions/148/colorizing-your-terminal-and-shell-environment
CO_RST='\[\033[0m\]'
PS1="\u@$CO_G\h$CO_RST:\w\$ '
참고
http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
http://unix.stackexchange.com/questions/148/colorizing-your-terminal-and-shell-environment
2016년 2월 21일 일요일
특정 공유라이브러리를 사용중인 프로그램 출력
# grep -l 라이브러리명 /proc/*/maps | while read p; do ls -l ${p%/*}/exe | awk '{print $11}'; done
2016년 2월 11일 목요일
빌드 관련 vim 명령
:make - make 명령을 실행하고 에러가 발생하면 그 위치로 이동
:cc - 현재 에러 표시
:cl - 모든 에러 표시
:cn - 다음 에러로 이동
:cp - 이전 에러로 이동
:cc - 현재 에러 표시
:cl - 모든 에러 표시
:cn - 다음 에러로 이동
:cp - 이전 에러로 이동
2016년 2월 9일 화요일
2016년 2월 2일 화요일
2016년 1월 11일 월요일
2016년 1월 7일 목요일
tip: dhcp 갱신
Windows:
> ipconfig /renew
Linux:
$ sudo dhclient -r [eth0]
$ sudo dhclient [eth0]
참고
http://www.cyberciti.biz/faq/howto-linux-renew-dhcp-client-ip-address/
> ipconfig /renew
Linux:
$ sudo dhclient -r [eth0]
$ sudo dhclient [eth0]
참고
http://www.cyberciti.biz/faq/howto-linux-renew-dhcp-client-ip-address/
2016년 1월 5일 화요일
pxe 로 ubuntu 14.04 설치
0. 환경
공유기
┌──┴──┐
서버PC 설치PC
공유기: 192.168.0.1
dhcp 기능 끔
서버PC: 192.168.0.99
ubuntu 12.04 server
dhcp 서비스
tftp 서비스
PXE 부팅 파일
설치이미지: ubuntu 14.04 desktop
1. 서버PC에 서비스 설치
1-1 dhcp 서비스 설치
busybox 에 들어있는 udhcpd 를 사용
udhcpd.conf
--------------------------------------------------------------------------------
# The start and end of the IP lease block
start 192.168.0.200
end 192.168.0.210
# The interface that udhcpd will use
interface eth0
# Currently supported options, for more info, see options.c
opt router 192.168.0.1
opt subnet 255.255.255.0
opt bootfile pxelinux.0
--------------------------------------------------------------------------------
1-2 tftp 서버 설치
http://shallweeee.blogspot.kr/2015/04/tftp.html 참고
1-3 PXE 부팅 파일 설치
$ mkdir /work2/tftpboot
$ cd /work2/tftpboot
$ wget -O - http://ftp.daumkakao.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/netboot.tar.gz | tar zx
# 14.04 64bit 용 네트워크 부트 패키지
--------------------------------------------------------------------------------
$ ln -sf ubuntu-installer/amd64/pxelinux.0 `printf "pxelinux.0\xff"`
# 설치 PC 는 LG 노트북 R570 인데 udhcpd 가 넘겨준 정보 중 옵션 종료를
# 의미하는 0xff 를 파일명의 일부로 인식하여 bootfile 이 다운로드 되지않는
# 문제가 발생했다. 부트파일명에 0xff를 추가하여 문제 회피.
--------------------------------------------------------------------------------
2. 설치 전 준비
3. 설치
3-1. 설치PC 의 Boot Menu 에서 네트워크 카드 선택
3-2. Install 선택
3-3. 미러 사이트 설정
[수동으로 정보 입력하기] 선택
미러 사이트 호스트 이름: ftp.daumkakao.com
미러 디렉토리: /ubuntu/
4. 설치 후 정리
4-1. 공유기의 dhcp 기능 ON
4-2. udhcpd 종료
참고
* https://help.ubuntu.com/community/Installation/LocalNet
공유기
┌──┴──┐
서버PC 설치PC
공유기: 192.168.0.1
dhcp 기능 끔
서버PC: 192.168.0.99
ubuntu 12.04 server
dhcp 서비스
tftp 서비스
PXE 부팅 파일
설치이미지: ubuntu 14.04 desktop
1. 서버PC에 서비스 설치
1-1 dhcp 서비스 설치
busybox 에 들어있는 udhcpd 를 사용
udhcpd.conf
--------------------------------------------------------------------------------
# The start and end of the IP lease block
start 192.168.0.200
end 192.168.0.210
# The interface that udhcpd will use
interface eth0
# Currently supported options, for more info, see options.c
opt router 192.168.0.1
opt subnet 255.255.255.0
opt bootfile pxelinux.0
--------------------------------------------------------------------------------
1-2 tftp 서버 설치
http://shallweeee.blogspot.kr/2015/04/tftp.html 참고
1-3 PXE 부팅 파일 설치
$ mkdir /work2/tftpboot
$ cd /work2/tftpboot
$ wget -O - http://ftp.daumkakao.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/netboot.tar.gz | tar zx
# 14.04 64bit 용 네트워크 부트 패키지
--------------------------------------------------------------------------------
$ ln -sf ubuntu-installer/amd64/pxelinux.0 `printf "pxelinux.0\xff"`
# 설치 PC 는 LG 노트북 R570 인데 udhcpd 가 넘겨준 정보 중 옵션 종료를
# 의미하는 0xff 를 파일명의 일부로 인식하여 bootfile 이 다운로드 되지않는
# 문제가 발생했다. 부트파일명에 0xff를 추가하여 문제 회피.
--------------------------------------------------------------------------------
2. 설치 전 준비
2-1 공유기에서 dhcp 기능 OFF
2-2 udhcpd 서버 실행
$ sudo udhcpd -fS udhcpd.conf 또는 $ sudo busybox udhcpd -fS udhcpd.conf
# 설치할 때만 필요해서 데몬으로 띄우지 않았다.3. 설치
3-1. 설치PC 의 Boot Menu 에서 네트워크 카드 선택
3-2. Install 선택
3-3. 미러 사이트 설정
[수동으로 정보 입력하기] 선택
미러 사이트 호스트 이름: ftp.daumkakao.com
미러 디렉토리: /ubuntu/
4. 설치 후 정리
4-1. 공유기의 dhcp 기능 ON
4-2. udhcpd 종료
참고
* https://help.ubuntu.com/community/Installation/LocalNet
피드 구독하기:
글 (Atom)