학습 목표
왜 리눅스인가? ~ 출력 관련 명령어
- 리눅스를 사용하는 이유와 CLI의 장점을 이해할 수 있다.
- 파일 및 디렉토리 확인, 이동, 복사, 생성, 삭제와 관련한 기본적인 명령어를 사용할 수 있다.
- 루트 디렉토리, 홈 디렉토리 및 절대 경로와 상대 경로를 이해할 수 있다.
- 리눅스 상에서 텍스트 파일을 수정할 수 있다.
- 패키지에 대해 이해하고, 패키지 매니저를 이용해 프로그램을 설치/삭제할 수 있다.
- 표준 스트림을 이해하고, 출력과 입력을 파이프라인으로 연결할 수 있다.
- 파일과 디렉토리를 패턴으로 찾을 수 있다.
표준 스트림과 stdin, stdout, stderr
- 표준 스트림 (Standard Stream)
- 스트림: 프로그램을 드나드는 데이터를 흐름으로 표현한 단어
- stdin
- 프로그램으로 들어가는 입력값의 데이터
- stdour
- 프로그램이 출력 데이터를 기록하는 스트림
- stderr
- 프로그램이 오류 메세지나 진단을 출력하기 위해 일반적으로 쓰이는 또다른 출력 스트림
파이프라인과 리다이렉션
- 리다이렉션
- 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 함
- >: 표준 출력, 명령의 결과를 파일로 저장 (기존 파일 덮어씀)
- >>: 표준 출력(append), 명령의 결과를 기존 파일에 추가
- <: 표준 입력, 파일의 데이터를 명령에 입력
- 예시) ps aux > ps.txt
- ps aux의 결과(출력 스트림)를 ps.txt 파일에 저장
- 예시> head < ps.txt
- ps.txt의 처음 10줄을 head의 입력 스트림으로 전환하여 보냄
- head: 파일의 처음 부분을 설명한 라인만큼 출력하는 명령어, 기본값으로 10줄이 세팅 되어 있음
- 예시) head < ps.txt > sample.txt
- ps.txt의 내용을 head의 입력 스트림으로 전환하여 전송
- head의 출력 스트림을 sample.txt에 저장
- 예시) ps aux > ps.txt
- 파이프
- 어떤 명령의 결과를 다시 어떤 명령의 입력으로 받아야 할 때 사용
- 예시) process1 | process2
- 프로세스 1의 출력 스트림을 프로세스 2의 입력 스트림으로 사용
- 예시) ls -l | grep ssh
- ls -l에 출력된 내용 중 ssh 인자를 포함한 내용만 출력
- grep: 특정 문자열을 찾을 때 사용
- 예시) process1 | process2
- 어떤 명령의 결과를 다시 어떤 명령의 입력으로 받아야 할 때 사용
파일 읽기
- man: 매뉴얼(도움말 보기) 명령어
- 원하는 명령어 앞에 man을 붙이면 그 명령어에 대한 사용법을 알려줌
- cat: 파일 내용 출력
- 파일 내용을 출력하는 용도
- 출력 내용을 다른 CLI 도구나 파일로 리디렉션 하는 데 기본적으로 등장
- cat <옵션> <파일이름>
- -n: line 번호를 함께 출력
- more: 파일을 화면 단위로 끊어서 출격
- 텍스트 파일의 내용을 한 번에 한 화면씩 보여줌
- more <옵션> <파일이름>
- +<number>: 입력한 line을 포함한 페이지를 출력(number째 줄부터 출력)
- +/<string>: 입력한 문자열이 포함된 페이지를 출력
- less: 파일 내용 출력
- cat과 달리 터미널 세션을 방해하지 않으면서 화살표키 만으로도 파일 내에서 양방향으로 탐색할 수 있음
- 구동전에 전체 파일을 읽지 않기 때문에 큰 용량의 파일을 더 빨리 읽을 수 있음
- less <옵션> <파일이름>
- -N: line 번호를 함게 출력
- head: 파일 앞부분 출력
- 터미널에서 직접 파일의 시작을 볼 수 있음
- 기본 값은 10줄
- head <옵션> <파일이름>
- -n: 지정한 라인까지 출력
- tail: 파일 뒷부분 출력
- 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력
- 기본 값은 10줄
- tail <옵션> <파일이름>
- -n: 지정한 라인까지 출력
- -f: 즉시 종료되지 않고, 파일의 내용이 추가되는 상태를 지켜보면서 계속 이어서 출력
- awk
- 특정 열 출력
- cut
- 파일의 특정 열을 추출할 때 사용
- paste
- 파일을 붙여넣을 때 사용
- paste 파일 > 파일
- sort
- 파일 내 열 정렬
- uniq
- 중복 내용 제거
- wc
- 라인이나 단어, 캐릭터의 수를 세는 데에 사용
- wc <옵션> <파일명>
- -l: 라인
- -w: 단어
- -c: 캐릭터
파일 및 디렉토리 찾기
- find: 파일 검색
- 파일 권한, 소유권, 수정 날짜, 크기 등 특정 기준에 따라 파일 검색
- 위치 선정을 하지 않으면 현재 디렉토리만 검색
- find <위치> <옵션> 검색할 내용
- -name 내용: 지정한 내용의 이름을 가진 파일을 찾음
- type <옵션>: 옵션에 따른 형태를 가진 파일을 찾음
- locate: 특정 파일 위치 찾기
- 특정 파일의 위치를 모를 때 활용
- find에 비해 매우 빠르지만 데이터베이스의 정기적인 업데이트를 필요로 함(updatedb에 의해 생성된 미리 빌드된 파일들의 데이터베이스를 통해 검색 되기 때문)
- 속도 향상을 위해 만들어진 유틸리티기 때문에 전체적인 효율성과 정확성은 조금 떨어지는 편
- which: 실행파일 위치 식별
- 특정 매개 변수를 취하여 $PATH 시스템 환경변수에서 이진 파일을 매우 효과적으로 검색함
- 현재 사용하고 있는 명령어 실행 파일의 위치를 알아낼 수 있음
- bash 쉘을 사용할 프로그램의 경로를 나타냄
패턴으로 찾기 (grep)
- global, regular expression, print에서 각각의 머릿글자를 따 온 것
- 파일이나 표준 입력을 검색하여 주어진 정규 표현식과 맞는 줄을 찾아 프로그램의 표준 출력으로 출력함
- 대량의 텍스트 파일에서 패턴을 검색할 때 사용할 수 있는 가장 강력한 정규식 터미널 명령 중 하나
- 찾고자 하는 패턴을 입력으로 받아 특정 패턴에 대해 지정된 파일을 검색
- 정규 표현식
- 특정 규칙을 가진 문자열 집합을 표현하기 위한 형식 언어
- 문자열 패턴 매칭을 검사하거나 문자열을 치환하기 위해 사용됨
- 문자열 검색에 정규 표현식을 적용하면 지정된 문자열의 문자 일치여부만 검사하는 것이 아니라 정규 표현식의 규칙에 부합하는지 여부가 검사됨
- *: 0개 이상의 모든 문자
- 대상 파일에서 문자열 검색
- grep “문자열” [filename]
- 현재 디렉토리의 모든 파일에서 문자열 검색
- grep “문자열” *
- 특정 확장자를 가진 모든 파일에서 문자열 검색
- grep “문자열” *.txt
- 대소문자 구분하지 않고 문자열 검색
- grep -i “문자열” [filename]
- 매칭되는 패턴이 존재하지 않는 라인 선택
- grep -v “문자열” [filename]
- 단어 단위로 문자열 검색
- grep -w “문자열” [filename]
- 검색된 문자열이 포함된 라인 번호 출력
- grep -n “문자열” [filename]
- 하위 디렉토리를 포함한 모든 파일에서 문자열 검색
- grep -r “문자열” [filename]
- 최대 검색 결과 갯수 제한
- grep -m 숫자 “문자열” [filename]
- 문자열 A로 시작해서 문자열 B로 끝나는 패턴 찾기
- grep “A.*B” [filename]
출처
'Code States > TIL' 카테고리의 다른 글
[0313] 리눅스 운영체제 - 프로세스 관리 (1) | 2023.03.14 |
---|---|
[0310] 리눅스 운영체제 - 관리자로서의 리눅스 (0) | 2023.03.10 |
[0309] 리눅스 운영체제 - 패키지와 패키지 매니저 (0) | 2023.03.09 |
[0309] 리눅스 운영체제 - CLI 기본 명령어 (0) | 2023.03.09 |
[0309] 리눅스 운영체제 - 왜 리눅스인가? (0) | 2023.03.09 |