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 |