달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2013. 3. 22. 18:52

grep 옵션 Enjoy/etc2013. 3. 22. 18:52

출처 : http://radiocom.kunsan.ac.kr/lecture/unix_cmd/grep.html


grep


지정한 파일에서 정규 표현식으로 나타낸 단어를 찾아 그 단어가 있는 라인을 출력함


하나 또는 그 이상의 파일에서 찾고 싶은 어떤 문자들을 검색하여 그 문자를 포함하는 라인들을 찾고, 찾은 라인 모두를 인쇄한다. grep 명령의 기본 구문은 다음과 같다.

grep 문자열 파일명

grep 문자열 *

grep [-chinvw] 'pattern' file_name [file_names]

-ccount 옵션은 파일 이름 다음에 패턴이 들어 있는 라인의 수를 표시
-hhide 옵션은 파일이름을 출력하지 않음
-iignore옵션은 대소문자 구분하지 않고 찾음
-nline number 옵션은 출력하는 각 라인에 라인번호를 붙임
-vinverse 옵션은 패턴이 없는 라인만 출력
-wword 옵션은 패턴 자체가 완전한 단얼로 독립되었을 경우만 글자로 인식함

여기서 ‘문자열’는 사용자가 찾으려는 단어 또는 구를 나타내고 ‘파일명’은 검색 대상 파일이다. ‘문자열’은 하나 또는 여러 문자를 의미한다. 단일 문자도 단어나 문장과 같이 하나의 문자열이다. 문자열에는 “빈칸”, 구두점과 보이지 않는 (제어) 문자들이 포함될 수 있다.

파일명은 지정하면 해당 파일에서만 찾지만, 파일명을 *와 같은 메타문자를 사용하면 현재 디렉토리의 모든 파일을 대상으로 하므로 디렉토리내의 모든 파일내에서 해당 문자열을 찾게된다.

grep, egrep, fgrep의 차이를 간단히 요약하여 정리하면 다음과 같다.

fgrep정규 표현식을 사용하지 않음
grep정규 표현식을 사용함
egrep정규 표현식과 확장 표현식을 사용

【예제】
    % grep s01287 /etc/passwd
    s01287:x:1028:103:choi eun sook:/export/home0/class12/s01287:/bin/csh
    %
grep은 다른 명령어들과 함께 “필터”로 자주 사용된다. grep은 사용자가 명령의 수행결과에서 불필요한 정보를 제거할 수 있도록 한다. grep을 필터로 사용하려면, 반드시 명령의 수행 결과를 grep을 통해 파이프(|) 해야 한다. 다음 예제는 파일 이름이 “.ps”로 끝나는 파일 중에서 5월에 생성된 것들을 나타낸다.

ls -l *.ps ¦ grep May

또한 여러 단어로 구성된 패턴을 찾으려면, 단일(‘ ’) 또는 이중(“ ”) 인용부호를 사용하여 해당 문자열을 묶어 준다.

grep "JoonIk Joe" phonebook

grep을 사용하여 파일 그룹에서 특정 문자열을 찾을 수 있다. grep이 여러 파일에서 일치하는 패턴을 찾은 경우, 먼저 해당 파일 이름과 콜론을 인쇄한 후 그 패턴과 일치하는 줄을 인쇄한다.

grep ar *

파일에서 특정 문자열을 포함하고 있지 않은 모든 줄을 찾으려면, grep에서 -v 옵션을 사용한다. 다음 예제는 현 디랙토리에 있는 파일 중에서 문자 e를 포함되지 않은 줄을 찾는 방법이다.

grep -v e *

정규 표현식을 사용하여 패턴으로 정의된 대상을 찾을 때 grep 명령을 사용할 수도 있다. 정규 표현식은 문자 및 숫자들과 grep에 특수한 의미를 갖는 문자로 구성된다. 메타문자인 특수 문자들은 시스템에서도 특수한 의미를 가지므로 인용부호나 이스케이프 문자를 사용해야 한다. 명령어 프롬프트 상태에서 grep 정규 표현식을 사용할 때마다 인용부호 또는 백슬래시(\)로 메타문자들(& ! . * $ ? 및 \)을 묶어 주어야 한다.

    % grep '^b' list    ☜  파일 list에서 “b”로 시작하는 줄을 찾는다.
    % grep 'b$' list    ☜  파일 list에서 마지막 문자가 ‘b’로 끝나는 줄을 찾음
    % grep '^b$' list   ☜  파일 list에서 “b”만 있는 줄을 찾음
    % grep 'an. ' list  ☜  세 자리 문자 중 처음 두 문자가 “an”으로 시작되는 것
    % grep 'qu*‘ list  ☜ 문자 “qu”가 포함된 모든 단어를 찾음
    % grep 'nn*' list   ☜ 문자 “n”을 포함하는 모든 단어를 찾음
    % grep 'nnn*' list  ☜ 문자 “nn”을 포함하는 모든 단어를 찾음
    % grep .* list      ☜ 어떤 문자가 나타나지 않거나 여러 번 나타난 경우를 찾음

정규 표현식에서 메타문자(& ! . * ? $ 및 \) 앞에 백슬래시(\)를 나타내면 grep으로 하여금 그것의 특수 의미를 무시하도록 한다.

예를 들어

    % grep ^\.       ☜ 마침표로 시작되는 줄을 찾음 
    % grep '\$'      ☜ "$" 문자가 포함된 줄을 찾음 

다음은 grep 탐색 패턴을 만드는데 자주 쓰이는 정규 표현식 기호이다

1) 일반 정규 표현식

기호의미사용 예설명
^라인의 첫 글자^aa자로 시작하는 라인
$라인의 끝 글자a$a자로 끝나는 라인
.한 글자a...ba와 b 사이에 3 글자가 있는 단어
** 기호 바로 이전의 글자나 정규 표현식이 
0회 이상 반복
abc*c가 0번 이상 반복
ab, abc, abcc, abccc 등
[ ]한글자를 대체할 글자의 목록을 []에 나열, "¦"를 여러 개 쓴 것과 같은 의미

"-" 기호와 함께 쓰면 문자의 범위를 지정할 수 있음

[abc]dad, bd, cd를 뜻함, a,b,c 중 어떤 한 글자라도 반드시 있는 단어

"[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 뜻함

[^]한글자를 대체하지 못할 글자의 목록을 [^ ]에 나열

"-" 기호와 함께 쓰면 문자의 범위를 지정할 수 있음

[^abc]dad, bd, cd는 포함하지 않고 ed, fd 등을 포함

[^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 나타냄

2) 확장 정규 표현식

기호의미사용 예설명
++ 기호 바로 이전의 글자나 정규 표현식이
1회 이상 반복
abc+c가 1회 이상 반복 : abc, abcc, abccc 등
?? 기호 바로 이전의 글자나 정규 표현식이
없거나 1회만 존재
abc?c가 없거나 한번만 존재 : ab, abc
()부분 정규 표현식의 시작과 끝을 표시a(bc)*
a(bc)+
a(bc)?
bc가 0회 이상 반복 : a, abc, abcbc 등
bc가 1회 이상 반복 : abc, abcbc 등
bc가 있거나 없거나 : a, abc
¦¦로 구분된 단어들 중 최소 하나가 존재a(b¦c)b 또는 c가 최소 하나 존재 : ab, ac, abc, acb
{m,n}{} 기호 바로 이전의 글자나 정규 표현식이
m개 이상 n개 이하 반복
a{1,3}b'ab', 'aab', 'aaab'를 포함하지만,
'b'나 'aaaab'는 포함하지 않음

효율적인 검색을 위해 grep 명령어를 변형한 2개의 명령어가 제공된다.

그중 하나는 fgrep(fixed grep 또는 fast grep) 명령어로 이 명령어는 정규 표현식이 아닌 단순한 문자열만을 인수로 사용한다.

또 하나의 명령어인 egrep(extended grep) 명령어는 fgrep와는 반대로 grep보다 더 다양한 정규 펴현식 연산자를 사용할 수 있다. 일반적으로 grep 명령어가 제일 사용하기 편리하다.

【예제】
    % cat aa
    jinpo	202.31.146.123
    radio	202.31.146.122
    knusun1	202.30.55.11
    knu2000	202.30.55.15
    % grep 11 aa
    radio	202.31.146.122
    knusun1	202.30.55.11

fgrep 명령은 grep와 비슷하지만, 다중 표적 탐색에 쓸 수 있으나, 패턴 탐색을 위한 정규 표현식은 허용되지 않고, grep보다 빠르다. fgrep에서 다중 표적을 줄 때는 각 표적이 분리된 라인으로 하여야 되고, 다중 표적 설정 시 인용부호로 묶어야 한다.

【예제】
    # fgrep "jinpo
    > knusun1" aa
    jinpo	202.31.146.123
    knusun1	202.30.55.11

egrep는 grep 명령 패밀리 중 가장 강력하다. fgrep처럼 다중 표적 탐색을 할 수 있고, 표적 설정에 정규 표현식을 쓸 수 있으며, 보다 완전하고 강력한 정규 표현식을 제공한다.

egrep 명령은 문자 반복에 +, 0이나 ?을 사용할 수 있고, egrep는 다중 표적을 fgrep처럼 분리된 라인에 넣거나, 수직 바나 파이프 기호(¦)로 구분한다. 파이프 기호와 표적 사이에는 빈칸이 없어야 한다.

【예제】
    # egrep "jinpo
    > radio" aa
    jinpo	202.31.146.123
    radio	202.31.146.122
    # egrep "jinpo¦radio" aa
    jinpo	202.31.146.123
    radio	202.31.146.122
    # 
현재 디렉토리 내의 모든 파일을 점검하여 지정한 문자열을 찾을 수 도 있다.

【예제】

grep abc * ☜ *은 모든 파일을 의미함
fgrep abc * ☜ *은 모든 파일을 의미함
【예제】
$ grep Adm /etc/group /etc/passwd
/etc/passwd:adm:x:4:4:Admin:/var/adm:
/etc/passwd:lp:x:71:8:Line Printer Admin:/usr/spool/lp:
/etc/passwd:uucp:x:5:5:uucp Admin:/usr/lib/uucp:
/etc/passwd:nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
/etc/passwd:listen:x:37:4:Network Admin:/usr/net/nls:

$ grep -n Adm /etc/group /etc/passwd  ☜  줄번호도 표기
/etc/passwd:5:adm:x:4:4:Admin:/var/adm:
/etc/passwd:6:lp:x:71:8:Line Printer Admin:/usr/spool/lp:
/etc/passwd:7:uucp:x:5:5:uucp Admin:/usr/lib/uucp:
/etc/passwd:8:nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
/etc/passwd:10:listen:x:37:4:Network Admin:/usr/net/nls:

$ grep -h Adm /etc/group /etc/passwd  ☜ 파일명을 출력하지 않음
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:

$ grep -c Adm /etc/group /etc/passwd  ☜  검색어가 있는 라인의 개수를 출력
/etc/group:0
/etc/passwd:5

$ grep -i Adm /etc/group /etc/passwd  ☜ 대소문자 구분없이 검색어를 찾음
/etc/group:sys::3:root,bin,adm
/etc/group:adm::4:root,daemon
/etc/group:tty::7:root,adm
/etc/group:lp::8:root,adm
/etc/group:sysadmin::14:
/etc/passwd:adm:x:4:4:Admin:/var/adm:
/etc/passwd:lp:x:71:8:Line Printer Admin:/usr/spool/lp:
/etc/passwd:uucp:x:5:5:uucp Admin:/usr/lib/uucp:
/etc/passwd:nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
/etc/passwd:listen:x:37:4:Network Admin:/usr/net/nls:
$ 
【예제】
$ grep 'Network' /etc/passwd
listen:x:37:4:Network Admin:/usr/net/nls:

$ grep 'uucp' /etc/passwd
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico

$ egrep '(Network¦uucp)' /etc/passwd
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico             
listen:x:37:4:Network Admin:/usr/net/nls:
$
【예제】
$ grep '$' /etc/init.d/ufs_quota  ☜ $는 줄 끝을 의미

#!/sbin/sh
#
# Copyright (c) 1993, 1997 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident  "@(#)ufs_quota  1.2     97/12/08 SMI"

case "$1" in
'start')
        /usr/sbin/quotacheck -a
        /usr/sbin/quotaon -a
        ;;

'stop')
        /usr/sbin/quotaoff -a
        ;;

*)
        echo "Usage: $0 { start ¦ stop }"
        exit 1
        ;;
esac
exit 0
$ fgrep '$' /etc/init.d/ufs_quota ☜ $은 문자 $을 의미함 case "$1" in echo "Usage: $0 { start ¦ stop }" $

grep정규 표현식을 사용하여 파일에서 문자열을 찾음
egrep정규 표현식과 확장 정규 표현식을 사용하여 파일에서 여러 개의 문자열을 찾을때 편리
fgrep정규 표현식을 사용하지 않기 때문에 메타문자 따위도 파일에서 찾을 수 있음
pgrep지정한 프로세스를 찾음 (cf: ps -A)

:
Posted by 라면스프


출처 : http://blog.daum.net/nyx21/7577691

 출처  - 자바 개발자를 위한 이클립스 바이블 제 2판 (피어슨에듀케이션코리아) p.287~288



목적확장점
오브젝트 레이블에 텍스트나 아이콘 장식 추가org.eclipse.ui.decorators
Window > Show View 메뉴 선택에 새로운 뷰 기여org.eclipse.ui.views
새로 만들기 마법사org.eclipse.ui.newWizards
표준 Export… 과 Import 메뉴 선택에 새로운 마법사 기여org.eclipse.ui.exportWizards
org.eclipse.ui.importWizards
표준 File > New 메뉴 선택에 새로운 마법사 기여org.eclipse.ui.newWizards
Window > Preferences 대화상자에 설정 페이지 기여org.eclipse.ui.preferencePages
오브젝트의 프로퍼티 대화상자에 페이지 기여org.eclipse.ui.propertyPages
리소스에 대한 새로운 편집기 정의
Open With 메뉴 분기에 선택으로 보인다.
org.eclipse.ui.editors
Window > Open Perspective 메뉴 선택에 대한 새로운 퍼스
펙티브 정의. 새로운 퍼스펙티브의 숏컷, 뷰 숏컷 그리고 기
존의 퍼스펙티브에 액션 집합 추가
org.eclipse.ui.perspectives
org.eclipse.ui.perspectiveExtentions
워크벤치 윈도우 메뉴 바 또는 툴바에 액션 기여org.eclipse.ui.actionSets
퍼스펙티브에서 지정된 뷰/편집기가 열려 있다면 웨크벤치
윈도우 메뉴 바 또는 툴바에 액션을 기여
org.eclipse.ui.actionSetPartAssociations
편집기의 툴바나 메뉴 선택에 액션 기여org.eclipse.ui.editorActions
편집기, 뷰 또는 객체의 콘텍스트 메뉴에 액션 기여org.eclipse.ui.popupMenus
뷰의 툴바나 풀다운 메뉴에 기여org.eclipse.ui.viewActions
Help > Help Contents 선택으로 활용 가능한 온라인 도움말
정의
org.eclipse.ui.help
org.eclipse.help.contentProducer
네비게이터 뷰의 Filter… 메뉴 선택에 대한 추가적인 필터
정의
org.eclipse.ui.ide.resourceFilters
기존의 리소스 또는 새로운 리소스 타입에 대해 자신만의
점진적인 빌드 과정 정의(Project > Rebuild Project).
프로젝트 기능을 향상
org.eclipse.core.resources.builders
org.eclipse.core.resources.natures
사용자 정보로 리소스에 태그를 붙임. 마커는 태스크 뷰나,
텍스트 편집기의 수직 표시자와 같은 뷰나 편집기와 아웃
라인 뷰에서 레이블 장식으로 표시될 수 있다.
org.eclipse.core.resources.markers
만들어져 있는 텍스트 편집기, JFace Text 는 사용자의 일관
된 편집 경험을 보장하기 위해 화장 가능하고 재사용 가능
한 텍스트 편집기를 제공한다. 그것을 알맞게 조정하여 표
시자에서 유일한 텍스트 주석에 대한 추가적인 요구, 라인
숫자, 구문 강조, 내용 돕기와 같은 추가적인 정보를 알려줄
수 있다.
org.eclipse.core.filebuffers.documentSetup
org.eclipse.ui.editors.templates
사용자의 행동에 기반하여 활용 가능한 옵션의 수 줄이기org.eclipse.ui.activities


:
Posted by 라면스프
2013. 1. 29. 15:43

SVN 권한 설정 Enjoy/etc2013. 1. 29. 15:43


출처 : http://ummae.tistory.com/197



SVN 권한 설정


svnserve.conf

[general]
anon-access=none
auth-access = write
password-db = passwd
authz-db = authz
realm = Kanji_Proj

요로코롬 짧아진다. 그럼 각각의 의미를 알아 보자.

[general]
anon-access=none           #인증되지않은(즉 계정이 없는) 사용자에 대해 접근을 거부한다.
auth-access = write          #인증된 사용자에 대해 쓰기 권한을 준다.
password-db = passwd     # 인증된 사용자에 대한 계정 정보(아이디/패스) 정보가 기록된 파일명을 의미한다.(기본값 passwd) 
authz-db = authz              # 인증된 사용자에 대해 저장소에 대한 권한 설정이 기록된 파일명(기본값)
#realm = Kanji_Proj             #현재 파일에 해당되는 저장소의 영역에 대해 설정하는 것인데 여기서는 주석처리로 하고 넘어가자.(ㅌㅌ)

즉, 인증된 사용자에게 저장소의 접근권한을 일체 주지 않고, 인증된 사용자에게만 접근을 허용하는 그런 의미를 갖는 svnserve.conf파일이 되겠다. 

다음으로 passwd 파일을 살펴보자.

passwd 

[users]
# harry = harryssecret
# sally = sallyssecret

aaa = a
bbb = b
ccc = c

= 를 기준으로 왼쪽이 아이디 오른족이 비밀번호가 된다. 
id: aaa, pw: a
id: bbb, pw: b 이런식이다.

마지막으로 authz

authz

[groups]
# harry_and_sally = harry,sally
gABC = aaa, bbb, ccc

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

[/]
@gABC = r

[ABC:/]
* = r
@gABC  = rw

authz 파일의 의미를 살펴보자

[groups]
# harry_and_sally = harry,sally   # 사용자를 그룹단위로 묶을 수 있다.
gABC = aaa, bbb, ccc               # 즉, 사용자 aaa, bbb, ccc를 묶어서 gABC라는 그룹으로 관리.

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]             #repository저장소의 /baz/fuz위치에 대한 권한
# @harry_and_sally = rw            #@<-의 의미는 그룹을 뜻한다. harry_and_sally 그룹에 읽기/쓰기권한을 준다.
# * = r                                     # * 는 모든 사용자를 의미한다. 모든 사용자에게 읽기 권한을 준다.            

[ABC:/]                                 #ABC:/저장소
* = r                                       #모든 사용자에게 읽기 권한을 준다.
@gABC  = rw                          #gABC그룹에게 읽기/쓰기 권한을 준다.


주의 1. authz 파일에 보면 *(와일드카드)가 모든 사용자를 의미한다고 했는데, 만약 svnserve.conf 파일에 anon-access=none (인증된 사용자에 대한 권한접근을 거부) 설정이 안되 있으면 말 그대로 아이디가 있건 없고 모든 접속한 사용자에 대한 권한이 되 버린다. 하지만 anon-access=none 이 설정되 되어 있다면 아이디/비번을(계정) 을 갖고 있는 사용자들에 대한 권한 설정이 될 것이다.

:
Posted by 라면스프