[4일차] 관리자로서의 리눅스

표준 스트림이란?
특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제에서 컴퓨터 프로그램과 그 환경 사이에 미리 연결된 입출력 통로를 가리킨다. 표준 스트림에는 stdin(표준 입력), stdout(표준 출력) 및 stderr(표준 오류)의 세 가지 표준 스트림이 있다. 이러한 스트림은 일반적으로 프로그램이 실행 중인 터미널이나 콘솔과 연결되지만 필요에 따라 파일이나 다른 프로세스로 리다이렉션될 수 있다.
- stdin
- 표준 입력은 프로그램으로 들어가는 입력값의 데이터(보통은 문자열) 스트림이며, Standard Input을 stdin으로 줄여 표현합니다. 리눅스 쉘에서는 표준 설정이 키보드로 되어 있습니다. 그러나 모든 프로그램이 입력을 요구하지 않으며, 대표적인 예로는 비밀번호를 입력할 때 이러한 표준 입력 스트림을 사용한다.
- stdout
- 표준 출력은 프로그램이 출력 데이터를 기록하는 스트림으로, Standard Output을 stdout으로 줄여 표현합니다. 표준 출력은 텍스트 터미널에서 이루어집니다. 표준 입력과 마찬가지로 모든 프로그램이 출력을 요구하지 않는다.
- stderr
- 표준 오류는 프로그램이 오류 메세지나 진단을 출력하기 위해 일반적으로 쓰이는 또다른 출력 스트림이며, Standard Error를 stderr로 줄여 표현한다.
리다이렉션
- 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 한다.
- 리다이렉션 사용시 " > " , " < " 을 사용한다.
- ex) head < ps.txt > sample.txtps.txt 의 내용을 head 명령의 입력 스트림으로 전환하여 전송한다.
- head 명령은 입력 받은 ps.txt 의 내용에서 처음 10줄을 출력한다.
- head 명령의 출력 스트림은 결과를 sample.txt 파일에 저장한다.

파이프
process1 명령의 결과를 process2 명령의 입력으로 받아야 할 때 사용되며, 파이프 기호 " | "를 이용해 사용할 수 있다.
$ process1 | process2
출력 관련 명령어
- grep
- grep "error" 파일명: "오류"라는 단어를 검색
- grep –i "error" 파일명: 대소문자를 구분하지 않도록 설정
- grep –c "error" 파일명: 검색 문자열이 포함된 줄 수만 계산
- grep –v "error" 파일명: 검색 문자열을 포함하지 않는 모든 행을 출력
- grep –w "error" 파일명: 검색 문자열을 단어로 찾을 경우
- sed: 문자열 치(찾기 및 바꾸기)
- sed 's/원본문자열/바꿀문자열/g' 파일명
- sed 's/sample1/good/' 파일명: sample1을 good으로 바꿈
- sed 's/sample1/ID2023/g' 파일명: 한 줄의 모든 항목을 바꿈
- sed -i 's/sample1/ID2023/3' 파일명 - sed의 변경 사항을 저장하려면 “-i”를 사용하여 원본 파일을 변경해야 한다.
- sort: 파일 내에서 줄이나 열을 정렬하는 데 사용
- - f : 대, 소문자를 모두 출력한다.
- - d : 공백과 알파벳 문자 순으로 정렬한다.
- - r : 정렬 순서를 반대로 하여 내림차순으로 정렬한다. (소문자, 대문자, 숫자, 공백)
- - o : 정렬한 결과를 파일명으로 저장한다.
- - n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.
- awk: 패턴(pattern)과 액션(action)을 정의하여 입력으로 주어진 파일의 데이터를 가공하여 출력한다.
- 텍스트 파일에 각 줄(line)은 레코드(Record)이며, 그 안에 각각의 단어들이 필드(Field)라고 한다.
1 2
3 4
cat a.txt | awk '{print $1 * $2;}'
2
12
ex) awk '{ print $1 }' ./test1 | wc -l: 테스트 파일에 레코드1에서 개수 출력
- man: 매뉴얼(도움말 보기) - 명령어에 대한 매뉴얼을 터미널 창에서 알려주는 명령어
- cat: 파일 내용 출력
- wget
- 웹에서 파일 다운로드를 도와주는 명령어
- 파일 다운로드 후 cat, cat –n 등으로 내용 확인
- wget <도메인> <파일명>
- more
- 파일을 화면 단위로 끊어서 출력
- more +/Gatsby gatsby.txt - 입력한 문자열이 포함된 페이지를 출력
- more +/3 gatsby.txt - 입력한 line을 포함한 페이지를 출력 (3번째 줄부터 출력)
- less
- 파일 내용 출력
- cat은 파일 내용을 한 번에 모두 출력하는 반면, less는 페이지 단위로 파일 내용을 출력한다.
- 파일의 크기가 큰 경우 파일 전체를 출력하는 것이 아닌 일부만 출력할 수 있어 시스템 자원을 절약할 수 있다.
- head
- 파일 앞부분 출력
- 기본적으로 상단의 10개의 라인을 출력
- - n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
- tail
- 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력. 기본 값으로 마지막 10줄을 출력
- - f : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다
- - n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
- tail test.txt test1.txt : 여러 파일도 한번에 가능
- wc
- 파일의 줄, 단어 및 문자 수를 계산하는 데 사용할 수 있다.
- wc – l 파일명: 줄 수만 얻을 경우
- wc – w 파일명: 단어 수만 얻을 경우
- wc – c 파일명: 문자 수만 얻을 경우
- uniq
- 중복된 내용에 행이 연속으로 있을 경우 하나만 남기고 삭제한다.
- - c: 같은 라인이 몇번 나오는지 표시
- - u: 중복 라인이 없는것만 보여준다
- 주로 sort로 정열 후 주로 사용된다.
- cut
- 특정 파일의 열을 출력하여 제거하거나 원하는 열만 출력할 수 있는 명령어
- - c: 지정된 문자 출력
- - f: 지정된 필드를 출력하는 옵션
- - d: 필드 구분자를 설정하는 옵션이다.
cut -b3 /etc/passwd: [n] 번째 라인 출력
cut -b5-10 /etc/passwd: [n]번째 ~ [n]번째 라인 출력
cut -d : -f 1,2,3 /etc/passwd: 구분자를 이용하여 [n]번째 ~ [n]번째 라인 출력
- find
- 파일 권한, 소유권, 수정 날짜, 크기 등과 같은 특정 기준에 따라 파일을 검색 할 수 있다.
- find . -name “이름*”: 찾을 파일 이름을 지정해서 찾기
- sudo find / -size+10M: 파일 크기 지정해서 찾기 (권한 필요)
- find . -empty: 빈파일 찾기
- find . -newer practice.txt: 파일 보다 최근에 변경된 파일 찾기
- locate
- 특정 파일 위치 찾기
- locate 파일명: 파일 이름으로 찾기
- locate –n 10 *.txt: (n 파일 수 검색) 검색할 파일 수(n) 지정하여 찾기
- which
- 실행 파일 위치 확인
정규 표현식
데이터 검색, 복잡한 패턴 매칭을 도와주는 특별한 문자다.
주로 문자열 패턴 매칭을 검사하거나 또는 문자열을 치환하기 위해 사용한다.

접근 권한
우분투에서는, 사용자가 절대 관리자 권한에 접근할 수 없도록 구분해두지만 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에 관리자 권한이 반드시 필요하기 때문에, 특정 명령어를 입력하는 것으로 잠시 관리자 권한을 빌려올 수 있다.
- whoami: 현재 로그인된 사용자 확인
- " / ": 최상위 디렉토리 루트
- " ~ ": 사용자 디렉토리의 경로
- sudo
- 사용자 환경에서 루트 권한을 일시적으로 획득하는 명령어 - 비밀번호와 함께 사용
- su
- su를 실행하면 루트 계정으로 로그인할 수 있습니다. 이 때 입력하는 비밀번호는 루트 계정의 비밀번호 사용
- sudo의 장점
- 명령 로그가 기록된다.
- 사용자들은 무제한의 루트 권한 없이 특정 작업을 수행할 수 있다.
- sudo가 su를 사용하거나, 루트로 로그인하는 것보다 빠르다.
- 루트 권한을 갖는 모든 사용자의 목록을 관리할 수 있다. (sudoers 파일이라고 부릅니다.)
- sudo의 단점
- sudo 사용자 개인 계정의 보안이 뚫리면, 루트 계정 자체가 뚫린 것과 마찬가지가 된다.
- sudo 명령 기록은 sudo를 이용해 지울 수 있다. (다만 이러한 시도를 했다는 것을 명령어 로그를 통해 알 수 있다.)
- 환경 변수
- 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는데 사용하는 변수이다.
- 키=값 형태로 되어 있으며 프로그래밍 언어에서 말하는 변수 개념과 동일하다.
- env: 환경변수 명령어
- * SHELL: 어떤 종류의 쉘(대화형 인터페이스)을 사용할지 선택하는 환경 변수
- * HOME: 홈 디렉토리가 무엇인지 알려주는 환경 변수
- * PATH: 어디서든 해당 디렉토리에 있는 실행 파일을 실행할 수 있게 만들어주는 환경 변수
- export: 환경변수를 임시로 적용
- 환경 변수 설정은 지금 열려있는 터미널에 한정되며, 새로운 터미널 창을 열면, export 명령으로 설정해놓은 환경 변수는 초기화된다.
SSH(Secure Shell)란?
Linux 및 Unix 기반 시스템에 대한 원격 액세스를 보호하는 데 사용되는 암호화 네트워크 프로토콜로 클라이언트와 서버 간에 안전하고 암호화된 연결을 제공하여 사용자가 원격으로 로그인하고 명령을 실행할 수 있게 한다.
파일 권한
Linux의 파일 권한 시스템은 읽기, 쓰기 및 실행의 세 가지 권한을 사용한다. 권한은 user - group - other에게 할당된다. 권한 설정은 "chmod" 명령을 사용하여 보고 수정할 수 있다.
- user - group - other
- user: 파일의 소유자로 기본적으로 파일을 만든 사람
- group: 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖음
- other: 파일에 대한 액세스 권한이 있는 다른 user로 파일을 만들지 않은 다른 모든 user를 의미

- chmod: 권한을 변경하는 명령어
- OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우 chmod 로 폴더나 파일의 권한을 변경할 수 있다.
- 소유자가 다를 경우 sudo를 이용해 폴더나 파일의 권한을 변경한다.
- 권한 변경 방법
- Symbolic method: 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기
- ex) chmod g+r 파일명: 그룹에 읽기 권한을 더한다.

- Absolute form: rwx를 숫자 7까지 나타내는 3 bits의 합으로 표기
- ex) u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4) - chmod 744 helloworld.txt

● [C215] 파이프라인과 리다이렉션이 무엇인지 예시를 들어 설명하세요.
1. 9명에 사람들에게 좋아하는 동물들을 물어봤다
- dog, cat, dog, dog, ele, rab, gir, hor, cat에 내용을 가지고 있는 ani.txt파일을 만든다.
- nano ani.txt
2. 한 사람이 ele에서 cat으로 바꿨다
- sed 's/ele/cat/' ani.txt
3. 중복되는 동물들에 수를 합한다.
- sort | uniq –c
4. 4개의 보기만 본다.
- head –4
5. 다른 파일에 저장 한다
- > favani.txt
$ sed 's/ele/cat/' ani.txt | sort | uniq -c | sort -r | head –4 > favani.txt
- 3 dog, 3 cat, 1 rab, 1hor
==========================================================
참고 자료
https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%8A%A4%ED%8A%B8%EB%A6%BC
표준 스트림 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 입력, 출력, 오류를 위한 표준 스트림 표준 스트림(standard streams)은 특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제(어느 정도까
ko.wikipedia.org
🐧 AWK 명령어 문법 마스터 💯 총정리
AWK (Aho Weinberger Kernighan) 개념 AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다. 좀더 쉽게 말
inpa.tistory.com