VI 에서 유용한 찾기/바꾸기 명령들

 

1. 문서 처음부터 마지막까지의 char 를 _char_ 로 치환한다.
:%s/char/_&_/g

 

2. 현재(커서위치)부터 마지막까지의 char 를 _char_ 로 치환한다.
:.,$s/char/_&_/g

 

3. buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다.
:1,10s/buf_.*\[255\]/hello/g

 

4. 숫자로만 이루어진 행 찾기는 다음과 같습니다.

/^\d\+$

^ : 행의 첫부분
\d : 0~9까지의 숫자
+ : 바로 앞의 글자 (여기서는 숫자)가 1개나 1개 이상 있음. (즉 숫자가 최소한 1개 있음)
$ : 행의 마지막 부분

 

5. 전체 문서에서 add 를 plus로 치환

:s/add/plus/g

 

6. 현재 편집중인 전체 문서에서 /etc/ 를 /etc/local/ 로 치환

:s/\/etc\//\/etc\/local\//g

 

7. '앗싸좋구나108계단' 이 '좋구나108계단앗싸' 로 바뀝니다.

:%s/\(앗싸\)\(좋구나\)\(108계단\)/\2\3\1/g

 

8. 대소문자 구분없이 바꾸려면 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.

:%s/foo/bar/i

 

9. 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우에는 바꾸지 않습니다.

:%s/\/bar

 

10. 정렬

123 def ghi
432 ius dkf
089 cdo lks

이걸 숫자를 가운데로, 두번째는 끝, 세번째 처음으로 보내려면

:%s/\([0-9]*\) \([a-z]*\) \([a-z]*\)/\3 \2 \1/g

 

11. 만약 3~5자리로 이루어진 모든 숫자를 검색하고 싶다면 다음과 같이 입력한다.

/[0123456789]\{3,5\} 또는
/[0-9]\{3,5\}

 

12. 만약 `ab'로 시작하는 소문자로 되어 있는 모든 단어를 삭제하려면 다음과 같이 입력한다.

:%s/ab[a-z]*//g

 

13. 만약 test라는 파일에 cpu가 들어있는 라인을 모조리 지우고자 한다면 vi mode에서 아래와 같이 사용한다.

:g/cpu/d

# g는 모든 라인에 적용한다라는 의미이고,
# d는 delete를 의미합니다.

 

14. stat0,stat1.....stat9 패턴이 있는 라인을 모조리 지우기

:g/stat[0-9]/d

 

15. 빈 줄 두 줄을 한 줄로 바꾸기

:%s/\n\n/\n/g

 

16. 두 칸을 한 칸으로 줄이기

:%s/ / /g

 

17. 탭을 스페이스 공백으로 바꾸기

:%s/\t/ /g

 

18. 마지막에 한 칸 띠우고 엔터된 것을 바로 엔터한 것으로 고치기

:%s/ $//g 또는
:%s/ \n/\n/g

 

19. 줄 첫 칸의 띠어쓰기를 없애기

:%s/^ //g

 

20. 잘못 바꾸기를 했을 때 되돌리려면 그냥 u 키를 누르면 됩니다.

 

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

Linux iptabes 설정

 

 

초기 세팅시 iptable 명령어 이용보다는 

/etc/sysconfig/iptables 파일을 직접 편집하여 설정 하는게 편함

 

 

 

 

#Generated by iptables-save v1.4.7 on Mon Jun  9 16:13:55 2014

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j DROP

-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j DROP

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j DROP

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

COMMIT

# Completed on Mon Jun  9 16:13:55 2014

 

필요한 포트를 ACCEPT 하거나 DROP 함.

 

설정변경 후

 

/etc/init.d/iptables restart

 

명령을 이용하여 서비스 재시작하여 적용

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

 

shell Scaript 주요 비교구문

 

 

 

Linux 나 Unix 계열의 OS 에서 쉘 스크립트(shell script)를 생성할 경우 if 문이나 for문 , while 문등의 제어문에서

여러가지의 조건문을 사용할 필요가 있게 된다.

 

이때 참고할만한 몇가지 조건식을 나열함.

 

[문자열 비교]

 

$str1 = $str2  : 양쪽이 같으면 true

$str1 != $str2 : 양쪽이 다르면 true

-n $str : 문자열 길이가 0이 아니면 true

-z $str : 문자열 길이가 0 이면 true

$str1 = "a" -a $str2 = "a" : 양쪽 조건이 전부 true 이면 true (AND)

$str1 = "a" -o $str2 = "a" : 양쪽 조건중에 하나 이상 true 이면 true (OR)

 

[산술 비교]

 

$a -eq $b : 양쪽이 같으면 true

$a -ne $b : 양쪽이 다르면 true

$a -gt $b : $a 가 크다면 true

$a -ge $b : $a 가 크거나 같으면 true

$a -lt $b : $a 가 작으면 true

$a -le $b : $a 가 작거나 같으면 true

 

[파일 비교]

 

-e $file : 파일이 존재하면 true

-d $file : $file 이 디렉토리이면 true

-r $file : 파일에 대한 읽기 권한이 있으면 true

-w $file : 파일에 대한 쓰기 권한이 있으면 true

-x $file : 파일에 대한 실행 권한이 있으면 true

$file1 -nt $file2 : $file1 이 $file2 보다 최근 파일이면 true

$file1 -ot $file2 : $file2 가 $file1 보다 최근 파일이면 true

 

*** 조건식을 사용할때는 스페이스바 한칸씩 띄워야 함.

 

 

 

 

 

 

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

 

tar 명령의 활용 - 디렉토리 목록만 묶기

 

 

 

Linux 의 명령어 중 파일이나 디렉토리 구조를 묶어주는 tar 라는 명령어가 있습니다.

 

기본적인 문법은

 

 tar [OPTION...] [FILE]...

 

형태이며,  보통은 z 옵션과 함께하여 gzip + tar 로 압축을 합니다.

 

기본 명령은 아래와 같습니다.

 

tar cvzf test.tgz test

 

test 라는 폴더를 test.tgz 로 압축하여 묶는다는 뜻이죠.

 

오늘 알려드릴 팁은  이때,  test 밑의 하위 디렉토리 구조만 (파일은 빼고) 묶는 방법입니다.

 

tar cvzf test.tgz --exclude=*.* test

 

--exclude  라는 옵션을 이용한 건데요,  --exclude=파일명  이런식으로 옵션을 주게되면,

 

해당 파일은 제외되고 압축이 되어지는 것입니다.

 

이를 이용해서 *.* 이라고 넣어주면 확장자를 가지는 파일들은 모두 제외가 되어지기 때문에..

 

폴더만 압축이 되어지는 것입니다.

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,