리눅스에서 현재 시스템 시간 확인

# date


시스템의 하드웨어에 입력되어 있는 시간 출력

# clock


시스템 시간을 하드웨어 시간에 입력

# clock -w


실제 현재 시간과 시스템에 설정된 시간이 다를 경우가 있다.
이때 보라넷 서버 시간과 일치시키기 위해 아래와 같이 하면된다.
(보라넷 서버 시간은 실제 현재 시간과 일치하기때문에)

# rdate -s time.bora.net && clock -w


아래와 같이 하면 리눅스의 시간을 임의로 설정 할수도 있다.

다음은 2009년 06월 30일 15시 55분으로 시스템의 시간을 설정하는 명령어이다. 

# date 063015522009


Posted by 두장
정규표현식 (Regular Expression) 이란 무엇인가? 이 질문은 진짜 어렵다. 너도 나도 정규표현식을 얘기하지만 정작 정규표현식이 뭔지는 잘 안 나와 있다. (오토마타 수업을 들은 풍월로 굳이 얘기하자면 정규 문법에 의해 생성되는 정규 언어를 표현할 수 있는 표현식..이라고 하면 되려나) 어쨌거나, "하나 이상의 문자열을 한 번에 나타낼 수 있는 패턴"이 정규 표현식이다. 아래는 UNIX 서적이나 웬만한 웹사이트에 다 나오는 기본 정규 표현식이다.
a : 말 그대로 "a", b 는 당연히 "b", c 는...
. : 임의의 한 글자. 따라서 a.d 는 aad abd acd add aed afd...
[list] : list 중의 한 글자. 
  [adf] 는 a 또는 d 또는 f
  [a-f] 는 a, b, c, d, e, f
  [^adf] 는 a, d, f 를 제외한 나머지 중 한 글자. list 앞에 "^" 이 오면 뒤에 오는 것을 제외한 것을 의미한다.
  [^a-f] 는.. 말 안 해도 되겠지
 그러면 "^ 또는 a 또는 b"를 의미하고 싶을 때는? "^"를 list 의 제일 앞이 아닌 곳에 두면 된다.
  [ab^] - 마찬가지로 "-" 나 "]" 역시 [ab-] []df] 와 같이 쓴다.
* : 0번 이상의 임의 번 반복. a* 는 null string, a, aa, aaa, aaaa...

그런데 아무래도 저것만 가지고는 좀 불편하다. 그래서 "확장 정규 표현식"이 등장했다.

+ : 1번 이상의 임의 번 반복. a+ 는 a, aa, aaa, ... 즉 aa* 와 동일.
| : a|b 는 a 또는 b
() : group, (ab|cd)ef 는 abef 또는 cdef
? : 없거나 하나 있거나. ab? 는 a 또는 ab

위의 확장 정규 표현식은 Perl에서는 그냥 쓰면 되고, ViEditor 에서는 앞에 백슬래쉬를 붙여 a\+ 와 같이 사용한다.

임의 번 반복 대신이 구체적으로 숫자를 줄 수도 있다.

{n,m} : n번 이상 m번 이하 반복 (가능한 많이)
{n} : n번 반복
{n,} : n번 이상 반복 (가능한 많이)
{,m} : m번 이하 반복 (가능한 많이)
{} : 0 번 이상. * 와 동일

{-n,m} : n번 이상 m번 이하 (가능한 적게)
{-n} : n번
{-n,} : n번 이상 (가능한 적게)
{-,m} : m번 이하 (가능한 적게)
{-} : 0번 이상 (가능한 적게)

역시 vi 에서는 앞에 백슬래쉬를 붙여서 a\{2,5} 등과 같이 사용한다.

위에서 "가능한 많이"와 "가능한 적게"는 뭔가? abcdebcdebcde 라는 예로 들면, a.*d 는 abcdebcdebcd 에 매칭되고, a\{-}d 는 abcd 에 매칭된다.

참고:

Posted by 두장
linux vi 에디터에서 문자(열)을 찾아서 바꾸기
 :(시작줄),(끝줄)s/찾을패턴/바꿀스트링/옵션

- 시작줄, 끝줄 : 바꾸기를 할 범위를 행번호로 지정한다. "."는 현재 커서가 있는 행을 의미, "$"는 제일 마지막 행을 의미한다.
- 찾을 패턴, 바꿀 스트링 : 찾을 패턴은 정규 표현식으로 지정하고, 바꿀 스트링은 string지정한다.
- 옵션 : 
g (global) - 한줄에 일치하는 패턴이 여러개 나오면 모두 바꾼다. 지정하지 않으면 첫번째 패턴만 바꾼다.
i (ignore case) - 대소문자 구분을 하지 않는다
c (confirm) - 검색된 문자열에 대해서 바꿀지 말지를 물어본다.

Example
 :5,10s/a/b/      - 5번째 행부터 10번째 행까지 각 행의 첫번째 "a"를 "b"로 바꾼다.
 :.,.+10s/a/b/g  - 현재 행부터 (현재 행 번호 + 10)번째 행까지 모든 "a"를 "b"로 바꾼다.
 :1,$s/a/b/c     - 첫번째 행부터 마지막 행까지 (즉 문서 전체) 각 행의 "a"를 "b"로 바꾸되, 바꾸기 전 확인을 받는다.
 :%s/a/b/gi      - 문서 전체에서 "a"와 "A"를 "b"로 바꾼다.


Posted by 두장