본문 바로가기
리눅스

명령어 , 파일디스크립터, GREP

by ho-bolt 2021. 10. 26.

--------------------------------------------------------

파일 디스크립터 

# 파일의 종류와 상관없이 모든 열려있는 파일을 참조하는 데 사용 

# 모든 파일마다 각각의 파일 디스크립터를 가지고 있지만 모든 파일마다 

#공통되는 파일 디스크립터가 존재한다. 

 

0: 표준입력

1: 표준출력 

2: 표준 에러 

$$ pid 확인

proc폴더에 확인가능하다

 

ls -l /proc/$$/fd를 통해 파일 디스크립터의 정보를 볼 수 있다. 

 

exec 0,1,2<$- 는 0이나 1이나 2를 삭제하는 것이다.  

즉 표준 입력, 표준 출력 표준에러를 삭제하여 문제가 발생할 것이다. 

< : 표준 입력을 의미함

> :표준 출력을 의미함

 


[root@localhost fd]# exec 3< /tmp/diary

이 것은 tmp/diary를 가지고 표준입력(3번이라는 fd를 가진)을 하나 만들겠다. 

 

이렇게 해당 파일을 불러올 수 있다.

 

 

/tmp/outfile 파일을 4번 fd에 표준출력을 만들었다. 그것을 

echo "name: hojin" >$4를 통해서 표준입력은 echo를 통해 넣었다.

 

 

★모든 파일에는 0,1,2번의 파일 디스크립터가 존재한다.

혹은 3,4번을 주어 만들 수도 있다. 

-----------------------------------------

 

 

GREP 

파일의 특정한 패턴의 문자열을 가진 문장을 출력해주는 명령어 

 

grep[문자열] [파일명]

 

---color 옵션 ---

# 옵션을 지정하지 않을 경우 default값은 auto 이다. 

# none, auto, always 

 

none : grep 문자열에 대한 하이라이팅을 사용하지 않음 auto  : grep문자열에 대한 하이라이팅을 사용

always  : grep에 대한 표준 출력을 파이프로 넘겼을 경우에도 하이라이팅을 유지 

 

grep예시

grep --help 

grep --help를 작성한 경우 표준출력으로 인해서 위와 같이 나온다. 

-문자,이렇게 정리된 상태로 보고 싶을 때 grep를 사용한다. 

[root@localhost fd]# grep --help | grep -E '\-.,'

= grep --help를 | 뒤로 보내고 그 것을 grep 이 -E정규식을 사용하여 '' 안에 - .(모든문자),를 넣는데 이때 특수문자인 -를 인식하게 하기 위해 \를 넣어준다. 

 

그러면 이렇게 깔끔하게 정리되서 나온다.

\-.,' 이것이 하이라이팅 된 것이다. 

 

grep --help | grep --color=none -E '\-.,'

이렇게 --color=none  옵션을 넣으면 하이라이팅이 없어지는 것을 알 수 있다.

 

만약 위에서부터 10개만 출력하고 싶다면 

위의 출력을 | 파이프를 통해 다시 head -10으로 보내 위에서부터 10개만 출력하도록 한다.

 

여기서 하이라이팅 색깔은 GREP_COLOR변수에 저장이 되어 있는데 Ansi Escape code에 색이 정의되어 있다. 

export GREP_COLOR=42 로 색을 정의하면 그에 대응하는 색이 하이라이팅 된다.

 

 

가장 위에 ^ 

정규식 \t와 \n을 사용하여 위의 표를 만들고 user1만 하이라이트 하고 싶다면 파이프로 grep을 전달한다. 

먄약 가장 위에 있는 것만 보고 싶다면 ^을 사용한다.

가장 끝일경우 user1$를 사용한다. 즉 가증 끝에 user1이 있는 것을 말한다. 

 

.==모든 문자 

 

.모든 문자뒤에 모든 문장*

 

 

.의 유무의 차이 

 

.은 모든 문자이기 때문에 a 이후의 모든 문자를 하이라이팅 한다. 

하지만 그냥 *만 있으면 a 문자만 하이라이팅한다. 

 

[ ] 

[12]는 1,2과 포함된 것을 조회한다. 

반면 [^ 13]은 이것이 아닌 것을 조회한다.

 

< , > 

<는 <문자 로 시작하는 것을 조회

>는 문자>로 끝나는 것을 조회

 

{ } 

 

a{2}는 암것도 안나오지만 e{2}는 하이라이팅이 되었다. 

왼쪽에 있는 문자가 적어도 { }안에 있는 개수만큼 있다면 조회한다.

{1,2}로 1개나 2개가 올 수도 있다고 설정할 수도 있다. 

 

 

-i : 자신의 오른쪽에 해당하는 패턴이 대소문자 구분없이 조회한다.

-I : 대소문자 구분함 

-I는 디폴트로는 구분하는 데 만약 -i가 박혀있다면 그것을 무시하기 위해서 뒤에 -I를 써준다.

 

-n : 행번호를 출력해준다. 

-c : 개수 출력

-v: 왼쪽 문자 빼고 조회해라 

 

-i (ignore) : 대소문자를 구분하지 않는다. 

-I : 대소문자를 구분한다. 

-n (Number) : grep된 행번호를 출력한다. 

-E(Expression) : 정규식을 사용해서 grep를 한다.

-v (inverse) : grep한 결과를 제외하고 출력한다

728x90

'리눅스' 카테고리의 다른 글

SED  (0) 2021.11.03
AWK  (0) 2021.10.27
매개변수 확장  (0) 2021.10.26
쉘 명령편집기능  (0) 2021.10.26
퍼미션 SUID, SGID, Sticky bit  (0) 2021.10.17

댓글