Tips/LINUX2012. 3. 23. 18:48
옛날의 수동 타자기를 보면,
한 행을 입력하고 나면 두 가지 동작을 해야 했다.

1. 입력해야 할 글자의 위치를 종이의 왼쪽으로 옮기기 ... 이것을 캐리지 리턴(carriage return)이라고 한다
2. 새로운 행을 입력할 수 있도록 종이를 올리기 ... 이것을 새 줄 만들기(line feed 혹은 new line)이라고 한다.

각각의 머릿글자를 따서 CR(Carriage Return) LF(Line Feed)이라고 부르기도 한다.

 원어 머릿글자
 소프트웨어에서의 표기
 역할
 Carriage Return
 CR  \r  입력 위치를 왼쪽으로
Line Feed
 LF  \n  새로운 행으로 이동

윈도우/리눅스/매킨토시(클래식 Mac OS)의 텍스트 파일에서는 이 새로운 행을 만드는 방법이 각각 다르다.

   개행 표기
 Windows  \r\n
 Unix(Linux 및 Mac OS X 포함)
 \n
Classic Mac OS(Mac OS 9까지)
 \r


Posted by young.h.rhie
Tips/LINUX2011. 12. 1. 03:35
다음 예제를 보면 쉽게 알 수 있다.

$echo "HELLO" | tr 'A-Z' 'a-z'
hello
Posted by young.h.rhie
Tips/LINUX2011. 11. 4. 13:05
가끔씩 생각나지 않을 때가 있어서 메모로 적어둔다.

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
# route add default gw ${GATEWAY}

# vi /etc/resolv.conf
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}
Posted by young.h.rhie
Tips/LINUX2011. 4. 21. 21:03

주간업무보고나 회의록 등을 작성할 때 몇주차인지 적을 때가 있다.
리눅스 명령어로 간단히 이 값을 구할 수 있는데 잊기 쉬워 메모해둔다.

1. 월요일을 첫번째 날로 하고 새해의 첫 월요일을 week 1로 하며 그 전의 날들은 그 전해의 week 53이 된다. 1~53사이의 값이 나온다.
$date +%W

2.  월요일을 주의 첫번째 날로 하고, 월요일 이전의 새해의 남은 날을 week 0로 하며, 0~53사이 값이 나온다.
 $date +%V


참고: 용어 정리

영어로 이야기할 때는 몇 주차는 week number로 부른다(week number로 일년의 최대값은 52주 혹은 53주가 된다).  참고로, 요일을 숫자포 표현한 것을 weekday number(이 값은 1~7 사이이며 월요일로 시작해서 일요일에 끝난다)라고 한다.


참고: 국제표준 ISO8601에서 정의한 내용과 관련한 몇 가지 메모

  • ISO8601에서 week 01은 첫번째 목요일이 들어 있는 주로 정의한다.
  • 마이크로소프트 아웃룩에서는 사용자가 별도로 설정하지 않으면 week number를 매길 때 1월 1일을 첫번째 주로 표기한다. 이는 Outlook Option > 일정 > 작업 시간 > 시작 주에서 '1월 1일에 시작(Starts on Jan 1)', '4일로 된 첫 주(First 4-day week)', '7일로 된 첫 주(First 4-day week)' 중에 하나로 선택할 수도 있다. 여기서 '4일로 된 첫 주'를 선택하면 ISO8601에서 정의한 week number와 같다.
  • 아웃룩에서 ISO 표준을 따르지 않는 이유는 미국에서 관습적으로 1월 1일을 첫 주로 여기기 때문이다. 반면 영국을 제외한 유럽에서는 ISO 표준을 원칙으로 한다.



Posted by young.h.rhie
Tips/LINUX2011. 4. 7. 01:38
CRAMFS는 메모리상에 압축된 형태 그대로 존재하며 실제로 접근할 때만 압축이 풀리므로 메모리를 절약할 수 있는 이점이 있다.

$ mount -t cramfs -o loop IMAGE_FILE_NAME MOUNT_POINT
$ mkcramfs DIR_TO_BE_IMAGED IMAGE_FILE_NAME

 CRAMFS 주의사항

1. CRAMFS 이미지는 최대 256MB이다.
2. CRAMFS에 포함될 각 파일은 크기가 16MB(16,777,215 bytes : 16MB에서 1바이트 뺀 값) 이내로 제한되어 있으며 그보다 큰 파일은 끝이 잘려버린다(16MB 보다 1바이트 작은 크기의 바이너리로 되어 버림).

3. 커널 소스코드의 include/linux/cramfs_fs.h에 있는 CRAMFS_SIZE_WIDTH가 기본으로 24로 정의되어 있는데 이 값을 28까지 올릴 수 있으며 28이 되면 256MB(268,435,455 bytes : 256MB에서 1바이트 뺀 값)까지 단일파일을 만들 수 있다.




Posted by young.h.rhie
Tips/LINUX2011. 4. 6. 21:02
잊지 않기 위해 적어둔다.


        $getconf  LONG_BIT
        64


Posted by young.h.rhie
Tips/LINUX2010. 5. 3. 14:18
1. 파일 a와 파일 b를 비교한다면
$diff a b

2. 디렉토리 a와 디렉토리 b를 비교한다면
$diff -rN a b
(-r 옵션은 하위 디렉토리까지 검사하라는 뜻. 길게 쓰려면 --recursive )
(-N 존재하지 않는 파일은 비어 있는 것으로 처리, 한쪽에만 있는 파일도 검사한다는 뜻임)

3. 다른 유용한 옵션들
-b : 공백문자의 양이나 차이는 무시하라
- B : 빈줄의 차이는 무시하라
-u :  unified 형식으로 출력

4. 코드 비교할 때 .svn 디렉토리는 제외하고 싶다면
$diff --exclude=.svn a_dir b_dir

5. 한 디렉토리와 다른 디렉토리의 코드를 비교하는 추천 명령
$diff --exclude=.svn -urNbB  dir_a dir_b



Posted by young.h.rhie
Tips/LINUX2010. 4. 28. 17:43

$ find ./ -name "*.tmp" | xargs rm

$ find ./ -name "*.tmp" -exec rm {} \;

언뜻보면 -exec를 쓰면 되는데 왜 xargs를 쓰는지에 대해 의심할 수 있다.
find 명령은 -exec를 사용할 수 있기 때문에 xargs의 필요성이 없어보일 수 있으나 다른
명령의 경우는 사정이 달라진다.

예를 들면, xargs와 함께 다음의 명령을 사용할 수 있다.

ls *.tmp | xargs cat

다시 말해 ls 명령은 -exec와 함께 쓸 수 없다는 뜻이다.

또 다른 차이점은 find ~ -exec rm 과 같은 형식을 사용하면 파일을 찾아낸 후
파일마다 rm 명령이 실행되어 시스템에 부하가 크다.

또 다른 차이점은, find ~ -exec rm 과 같은 형식을 사용하면  명령의 길이가 너무 길
때 에러가 생길 수 있다는 점이다.

참고: 리눅스 맨페이지에 있는 xargs 명령 예제


  $ find /tmp -name core -type f -print | xargs /bin/rm -f
  $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f





Posted by young.h.rhie
Tips/LINUX2010. 2. 21. 20:05
리눅스 개발 작업하면서 여러 종류의 Makefile(Makefile*, makefile*, *.mak, *.mk) 을 찾아 검색해야 할 일이 생겼다.
잘 몰라서 KLDP에 물어서 답을 얻었다.

$find ./   \( -name "Makefile*" -o -name "makefile*" -o -name "*.mak" -o -name "*.mk" \) -exec

$find . -name "ABC" -o -name "def"


Posted by young.h.rhie
Tips/LINUX2009. 11. 11. 03:51
#define __RETURN_ADDRESS__ __builtin_return_address(0)
Posted by young.h.rhie