DevOps BootCamp/Linux

출력 관련 명령어

cloudmaster 2023. 3. 10. 11:36

1. 표준 스트림

  ● 스트림 : 프로그램을 드나드는 데이터를 흐름으로 표현한 것

 ★ 일반적으로 동작하는 프로그램은 실행 시, 세 개의 스트림이 열림. 

   > 표준 스트림

       - 1. 입력을 위한 스트림(Standard input, STDIN, 0)

       - 2. 출력을 위한 스트림(Standard Output, STDOUT, 1)

       - 3. 오류 메시지 출력을 위한 스트림(Standard Error, STDERR, 2)

      ★ 리눅스 의 /dev 디렉토리에 세 개의 표준 스트림을 파일 형태로 담고 있음

 

stdin(Standard Input)

 표준 입력은 프로그램으로 들어가는 입력값의 데이터(보통은 문자열) 스트림.

 리눅스 쉘은 표준 설정이 키보드임, 그러나 모든 프로그램이 입력을 요구하지 않으며, 예로는 비밀번호를 입력할 떄 표준   입력 스트림 사용

 

stdout(Standard Output)

표준 출력은 프로그램이 출력 데이터를 기록하는 스트림.

 > 텍스트 터미널에서 이루어짐. 모든 프로그램이 출력을 요구하는 것은 아님

 

stderr(Standard Error)

 표준 오류는 오류 메시지나 진단을 출력하기 위해 쓰이는 또다른 출력 스트림.  

 

2. 파이프라인과 리다이렉션

 ● 리다이렉션 : 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 함.

 - 기호 > or < 사용

1  $ ps aux > ps.txt
2  # 명령어 > 파일
1  $ head < ps.txt
2  # 명령어 < 파일

head : 파일의 처음 부분을 셜명한 라인(line)만큼 출력하는 명령어

            > 파일의 처음 10줄을 입력 스트림으로 출력

조금 더 응용하자면 다음과 같이 사용할 수도 있습니다.

1  $ head < ps.txt > sample.txt
2  # 명령어1 < 들어오는 파일 > 나가는 파일

★ 기호

 > : 표준 출력(명령의 결과를 파일로 저장, 기존파일 덮어씀)

 >> : 표준 출력(append, 명령의 결과를 기존 파일에 추가)

 < : 표준 입력(파일의 데이터를 명령에 입력)

 

 ● 파이프(pipe)

  명령의 결과 > 어떤 명령의 입력으로 받아야 할 때 사용.

  기호 : |

1  $ process1 | process2

 

3. 파일 읽기

 man : 매뉴얼(도울말 보기) 명령어

예를 들어 우리가 잘아는 ls 명령어에 대한 메뉴얼을 검색해 보도록 하겠습니다.

1  $ man ls

 Space Bar 또는 PgDn : 다음 페이지 이동

 q : 명령창 돌아가기

 cat : 파일 내용 출력, 출력 내용을 다른 CLI 도구나 파일로 리디렉션 하는 데 기본적으로 등장하는 명령

1  $ cat <옵션> <파일이름>

 옵션 : -n (line 번호를 함꼐 출력)

 

 more : 파일을 화면 단위로 끊어서 출력

1  $ more <옵션> <파일이름>

 옵션 :

+<number> +3 입력한 line을 포함한 페이지를 출력 (3번째 줄부터 출력)
+/<string> +/Gatsby 입력한 문자열이 포함된 페이지를 출력 (Gatsby 문자열을 포함한 줄부터 출력)
Enter 다음 줄 출력
Space 다음 페이지 출력
b 이전 페이지 출력
q 종료

 

 less : 파일 내용 출력

  cat과는 달리 터미널 세션을 방해하지 않으면서 화살표키 만으로도 파일 내에서 양방향으로 탐색 가능

  구동 전 전체 파일을 읽지 않기 때문에 큰 용량의 파일을 더 빨리 읽을 수 있음

1  $ less <옵션> <파일이름>

 옵션 : 

-N line 번호를 함께 출력

 

 head : 파일 앞부분 출력

1  $ head <옵션> <파일이름>

 옵션 : 

-n 지정한 라인까지 출력

 

 tail : 파일 뒷부분 출력(10줄)

  파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력

1  $ tail <옵션> <파일이름>

 옵션 : 

-n 지정한 라인까지 출력
-f 즉시 종료되지 않고, 파일의 내용이 추가되는 상태를 지켜보면서 계속 이어서 출력

 

4. 파일 및 디렉토리 찾기

 find : 파일 검색

1  $ find <위치> <옵션> 검색할 내용

 

옵션 : 

-name 내용 지정한 내용의 이름을 가진 파일을 찾음
-type <옵션> 옵션에 따른 형태를 가진 파일을 찾음
$ find . -name “이름*” # 찾을 파일 이름을 지정해서 찾기
$ find . -name “이름*” -type d # 이 중에 디렉토리만 찾기
$ sudo find / -size+10M # 파일 크기 지정해서 찾기 → 디렉토리 권한 때문에 sudo 사용
$ find . -empty # 빈파일 찾기
$ find . -newer practice.txt # practice 파일 보다 최근에 변경된 파일 찾기

 g locate : 특정 파일 위치 찾기

  updatedb에 의해서 생성된 미리 빌드된 파일들의 데이터베이스를 통해 검색이 되기 때문 > 데이터베이스의 정기적인     업데이트 필요

1  $ locate gatsby.txt # 파일 이름으로 검색하기
2  $ locate -n 10 *.txt # 검색할 파일 수 지정하여 찾기

 

 which : 실행파일 위치 식별

  검색하려는 모든 파일이 실행 파일인 경우, bash 쉘을 사용할 프로그램의 경로를 나타냄.

$ which ls
usr/bin/ls

$ which python3
/usr/bin/python3

 

5. 패턴으로 찾기(grep: global, regular expression, print)

 grep : 텍스트 검색

 정규 표현식(regular expression)

  특정 규칙을 가진 문자열 집합을 표현하기 위한 형식 언어

 

  ex) 대상 파일에서 문자열 검색

$ grep "문자열" [filename]
$ grep "Gatsby" gatsby.txt # gatsby.txt 파일에서 Gatsby 문자열 찾기

 ex) 현재 디렉토리의 모든 파일에서 문자열 검색

$ grep "문자열" *
$ grep "Gatsby" * # 현재 디렉토리에서 Gatsby 문자열 검색

 ex) 특정 확장자를 가진 모든 파일에서 문자열 검색

$ grep "문자열" *.txt # txt 확장자를 가진 파일에서 "문자열" 검색

 ex) 대소문자를 구분하지 않고 문자열 검색 

$ grep -i "문자열" [filename]
$ grep -i "he" gatsby.txt # gatsby.txt 파일에서 he 문자 대소문자 구분없이 찾기

 ex) 매칭되는 패턴이 존재하지 않는 라인 선택

$ grep -v "문자열" [filename]
$ grep -v "he" gatsby.txt # gatsby.txt 파일에서 he가 없는 라인 나타내기

 

'DevOps BootCamp > Linux' 카테고리의 다른 글

서비스 관리  (0) 2023.03.13
프로세스 관리  (0) 2023.03.13
관리자로서의 리눅스  (0) 2023.03.10
우분투 CLI 명령어  (0) 2023.03.09
왜 리눅스인가?  (0) 2023.03.09