Day 1~2
Linux 파일 시스템 구조
- / : Root, 가장 상위에 있는 파일 시스템
각 디렉터리마다 하위 디렉터리가 있음- /root : 특별 관리 계정
- /bin : 바이너리 파일이나 실행 가능한 프로그램을 찾는 곳
프로그램은 사람이 읽을 수 있는 소스 코드로 작성됨, 그 텍스트 파일은 컴퓨터 읽기 가능한 바이너리로 컴파일 됨
컴퓨터 코드는 0과 1로 이루어져 있어 바이너리라 불림
그래서 실행할 수 있는 응용 프로그램은 /bin에 위치함 - /boot : 부팅하는데 필요한 파일, Linux Kernel을 찾을 수 있음
- /etc : 구성 파일을 찾는 곳
구성 파일은 운영 체제나 응용 프로그램의 작동 방식을 제어
ex) 텍스트 모드로 부팅할지 그래픽 모드로 부팅할지 - /home : 사용자 홈 디렉터리가 저장되는 곳
리눅스는 여러 사용자 계정을 가질 수 있기 때문에 분리할 수 있음 - /opt : 옵션 또는 타사 소프트웨어가 저장되는 곳
운영 체제에 들어있지 않은 소프트웨어를 말함 - /tmp : 임시 공간, 파일을 tmp에 두고 Linux 서버나 데스크톱이 리부팅되면 파일이 사라짐
- /usr : 사용자 디렉터리, 사용자 관련 프로그램이 있는 곳
디렉터리 마다 하위 디렉터리가 있음 - /var : 변수 데이터
응용 프로그램에 의해 생성된 로그 파일 - /srv : Linux 서버가 제공하는 데이터를 저장하는 위치로 사용됨
- /srv/www : 웹 서버 파일
- /srv/ftp : FTP 파일
응용 프로그램 디렉터리 구조
기본적으로 Linux 운영 체제나 배포판에 기본 제공되지 않는 응용 프로그램은 다양한 경로에 있을 수 있음
일반적으로 /opt/ 이나 /usr/local/ 경로에 있음
ex)
- /usr/local/crashplan/bin
- /usr/local/crashplan/etc
- /usr/local/crashplan/lib
- /usr/local/crashplan/log
ex)
- /opt/avg/bin
- /opt/avg/etc
- /opt/avg/lib
- /opt/avg/log
Shell
- Linux 시스템에 대한 기본 인터페이스
- 애플리케이션이나 프로그램으로 사용자가 보내는 명령을 받아 사용자를 위해 수행함
- 루트는 Linux 시스템의 특별한 사용자
명령 프롬프트
- ~jason = /home/jason
~ : 홈 디렉터리나 사용 중인 현재 계정 디렉터리를 나타냄 - ~pat = /home/pat
- ~root = /root
- ~ftp = /var/ftp
Linux 시스템의 모든 계정이 개별 사용자와 연결된 것은 아님, 자체 계정을 가질 때도 있음
기본 Linux 명령어
- . : 현재 디렉터리
- .. : 부모 디렉터리
- pwd : 현재 작업 데릭터리를 보여줌
- cd : 현재 작업 디렉터리 변경
- ls : 디렉터리의 내용을 나열
- ls -l : 파일과 디렉터리에 대한 자세한 정보 보여줌
- ls -a : 숨겨진 파일을 포함하는 긴 목록 출력
- ls -t : 시간 표시
- ls -r : 순서 바꾸기(reverse)
- ls latr : 역순으로 분류된 모든 파일
- ls -R : 하위 디렉터리까지 포함해서 보기
- / : Directory
- @ : Link
- * : Executable (실행 가능)
- tree -d : 하위 디렉터리까지 구조 보기
- cat : 파일의 내용을 보여줌
- clear : 화면을 깨끗하게 해줌
- man command : 주어진 명령어와 관련된 문서를 보여줌
- space로 다음 페이지 표시
- q 명령어로 빠져나올 수 있음
- exit : 세션 종료
- echo $VAR_NAME : 변수 설정
- which : 위치나 전체 경로 찾을 때 사용
- man -k calendar : 어떤 명령어를 사용할지 검색해볼 수 있음, 추천하는 명령어가 뜸
- mkdir : 디렉터리 생성
- mkdir -p : 부모 디렉터리까지 생성, ex) mkdir -p 1/2/3
- rmdir : 하위 디렉터리가 없을 때 삭제
- rm -rf 디렉터리 : 디렉터리를 재귀적으로 삭제하고 싶을 때
- touch : 새로운 파일 생성, 파일이 존재하지 않으면 새로 생성
추가 리눅스 명령어
- uptime : 마지막으로 재부팅 된 시간, 전원을 켠 후 얼마나 실행되었는지
Day 3
파일 / 디렉터리 권한
- r : Read, 파일 내용을 읽을 수 있음 / 디렉터리에서 파일 이름을 볼 수 있음
- w : Write, 파일에 대한 허가가 있으면 수정할 수 있음 / 항목을 디렉터리 내에서 수정할 수 있도록 해줌, 디렉터리에 있는 내용을 수정할 수 있음
- x : Execute, 파일을 프로그램으로 실행할 수 있음 / 디렉터리에 있는 파일의 메타데이터를 볼 수 있도록 함
읽기 4, 쓰기 2, 실행 1
사용자 카테고리
리눅스의 모든 유저는 적어도 한 그룹에 해당하며 주 그룹을 호출함, 유저는 여러 그룹에 속할 수 있음
- u : User
- g : Group
- o : Other
- a : All
- chmod : 사용 권한을 변경하기 위해 사용하는 명령어
chmod g+w sales.data
chmod u+rwx, g-x sales.data
- ugoa : user, group, other, all
- +-= : add, subtract, or set permissions
- rwx : Read, Write, Execute
- chgrp : 그룹 변경
파일 생성 mask 기본 권한
- 777 : 디렉터리
- 666 : 파일
- unmask : 새로 생성되는 파일이나 디렉터리의 권한 제한
- unmask - S : mask값 확인하기
Directory | File | |
Base Permission | 777 | 666 |
Stubtract Umask | -022 | -022 |
Creations Permission | 755 | 644 |
파일과 디렉터리 찾기
- find : 찾기에 경로를 제공하고 검색 식을 입력하면 경로와 식에 맞는 결과를 리턴함
현재 디렉터리에 있는 모든 파일과 그 디렉터리 아래의 모든 하위 디렉터리를 반환함
어떤 옵션도 없이 find를 실행하면 현재 작업 디렉터리에서 모든 것을 찾을 수 있음- -name pattern : 검색 패턴을 찾으면 그 패턴에 일치하는 파일과 디렉터리를 모두 반환
- -mtime days : 타입 옵션, 수정 시간을 통해 파일을 찾을 수 있음
- -size num : 크기에 따른 파일 검색 가능
- -iname : Camel표기법(소문자 대문자가 섞인)인 것을 검색할 때 유용함
find /usr/sbin -name networkmanager -> 검색결과 X
find /usr/sbin -iname networkmanager -> 검색결과 : /usr/sbin/NetworkManager - v로 끝나는 파일을 검색
find /usr/bin -name "*v" - 10일 이상부터 90일 이하인 파일 검색
find /usr/ -mtime +10 -mtime -90 - s로 시작하는 파일
find /usr -name "s*" -ls
- locate
- 인덱스로 작동
- 단점은 결과가 실시간으로 나오지 않음, 1-2분 전에 생성된 파일을 찾는다면 인덱스에는 없을 수 있음
- 일부 시스템과 Linux 배포판에는 디폴트로 설치되지 않는 곳이 있음
파일 내용 보기
- tail - 15 file.txt : 마지막 15줄까지 표현
- tail -f file : 로그 파일 보기
- head -2 file.txt : 맨 위 2줄 표현
- more my-app.log : 긴 파일을 한 페이지씩 보여주는 명령어, 화면에 화면 단위로 끊어서 출력하는 명령어
Vi 편집기 명령어
명령 모드
- i : 현재 커서 위치에 삽입
- dd : 커서가 위치한 곳의 한 줄 삭제 (p로 복구 가능), 5dd : 5줄 삭제
- u : 방금 한 명령 취소
- yy : 현재 줄을 버퍼로 복사, 5yy : 5줄 복사
- p : 현재 커서가 있는 줄 바로 아래에 버퍼 내용 붙여 넣기
- k : 위로
- j : 아래로
- l : 오른쪽으로
- h : 왼쪽으로
- 0(숫자) : 커서가 있는 줄의 맨 앞으로 감
- $ : 커서가 있는 줄의 맨 뒤로 감
- G : 파일의 끝으로 이동
- cw : 단어 변경
- cc : 줄 전체 바꾸기
- A : 줄 맨 오른쪽에 삽입
라인 모드
- set nu : 라인 번호 출력
- 숫자 : 해당 라인으로 커서 이동
- wq : 저장 후 종료
- /문자열 : 현재 커서 위치에서부터 파일 앞쪽으로 문자열 탐색
- ?문자열 : 현재 커서 위치에서부터 파일 뒤쪽으로 문자열 탐색
- :1로 해서 첫 번째 줄로 이동하고, /문자열로 검색
Day 4
파일 삭제, 복사, 이동 이름 바꾸기, 압축하는 방법
반드시 삭제하기 전에는 더블 체크 하기!
- rm file : 파일 삭제
- rm -r dir : 디렉터리, 내용 재귀적으로 삭제
- rm -f file : 강제로 삭제
- cp : 파일 복사
cp [옵션] [복사 대상 디렉터리 or 파일] [복사될 디렉터리 or 파일]
- cp -i : 목적지 파일이 존재하면 덮어쓰기 전에 물어봄
- cp -r : 하위 디렉터리까지 모두 복사
cp -r [복사 대상 디렉터리] [복사될 디렉터리]
- mv : 파일 옮기거나 이름 바꿀 때 사용
- mv -i : 목적지 파일에 내용이 존재하면 덮어쓰기 전에 물어봄
- sort : 파일 내용 정렬
- -r : 역순으로 정렬
- -u : 중복된 내용을 제거
- -k : 정해진 필드를 기준으로 정렬
- tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령
- c : tar 아카이브 생성
- v : 세부 정보 표시
- f : 대상 tar 아카이브 지정
- x : tar 아카이브에서 파일 추출
- z : gzip 압축 적용 옵션
- j : bzip2 압축 적용 옵션
- w : 모든 진행 과정에 대해 확인 요청
- t : 아카이브에 포함된 내용 확인
- tar 명령 사용 예제
- tar cvf T.tar * : 현재 디렉터리의 모든 파일과 디렉터리를 tar로 묶기
- tar cvf T.tar [PATH] : 대상 디렉터리를 포함한 모든 파일과 디렉터리를 tar로 묶기
- tar cvf T.tar [FILE_1] [FILE_2] : 파일을 지정하여 tar 아카이브로 묶기
- tar xvf T.tar : tar 아카이브를 현재 디렉터리에 풀기
- tar xvf T.tar -C [PATH] : tar 아카이브를 지정된 디렉터리에 풀기
- tar tvf T.tar : tar 아카이브의 내용 확인하기
- tar zcvf T.tar.gz * : 현재 디렉터리를 tar로 묶고 gzip으로 압축하기
- tar zxvf T.tar.gz : gzip으로 압축된 tar 아카이브를 현재 디렉터리에 풀기
- tar jcvf T.tar.bz2 * : 현재 디렉터리를 tar로 묶고 bzip2로 압축하기
- tar jxvf T.tar.bz2 : bzip2로 압축된 tar 아카이브를 현재 디렉터리에 풀기
- tar cvfw T.tar * : tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기
- gzip : 단일 파일 압축
- gunzip : 압축 해제
- gzcat : 압축을 해제하지 않아도 gzip 명령이나 compress 명령으로 압축된 파일을 볼 수 있음
- zcat : 압축을 해제하지 않아도 compress 명령으로 압축된 파일을 볼 수 있음
- du : 파일 및 디렉터리 용량 확인
- du -k : 1KB 단위로 출력하는 옵션
- du -h : 관리자가 보기 쉬운 단위(Byte, Kbyte, Mbyte, Gbyte)로 출력하는 옵션
Wildcards
- * : 0개 이거나 그 이상의 글자와 매치되는지 찾을 때
- *.txt
- a*
- a*.txt
- ? : 한 글자와 일치할 때 사용
- ?.txt
- a?
- a?.txt
- [] : 특정 검색 패턴을 생성
- [aeiou]
- ca[nt]*
- [[:space:]]
- [[:upper:]]
- 사용 예시
- mv *.txt notes : *.txt로 시작하는 것을 notes로 옮겨라
파일 비교
- diff : 파일의 차이점 보여줌
- sdiff : 두 파일을 비교하여 나란히 차이점을 표시함
- | : 다른 부분 보여줌
- vimdiff : vim 에디터를 이용해 두 파일의 차이를 표시함
- qa : 동시에 두 파일을 닫을 수 있음
- grep : 패턴이 매칭되는 라인을 보여줌
- - i : 대소문자를 구분하지 않음
- - c : 일치하는 행의 수를 출력
- - n : 패턴이 포함된 행 번호 함께 출력
- - v : 패턴과 일치하지 않는 행만 출력
- | : 두 개의 명령어를 합쳐서 사용할 수 있음
cat file | grep pattern
파일 입력, 출력과 리다이렉션
I/O Name | Abbreviation | File Descriptor |
Standard Input | stdin | 0 |
Standard Output | stdout | 1 |
Standard Error | stderr | 2 |
- > : 표준 출력을 파일로 리다이렉션, 내용이 존재하면 덮어씀
- >> : 표준 출력을 파일로 리다이렉션, 기존 콘텐츠에 추가함
- < : 표준 입력을 파일에서 명령으로 리다이렉션
- & : 파일 이름 대신 파일 설명을 쓰고 싶으면
- 2>&1 : 표준 에러와 표준 출력이 결합된 것
- 2>file : 표준 에러 파일이 리다이렉션
네트워크를 이용한 파일 복사
- SCP : Secure copy, 소스파일과 목적지를 미리 알고 있어야 함
- scp z.txt linuxsvr1:/tmp/
- SFTP : SSH file transfer protocol
- local 명령어 사용 하려면 앞에 l만 붙이면 됨, lpwd, lls 등
SCP or SFTP를 사용하려면 클라이언트가 필요함
- mac과 linux는 SCP, SFTP 명령줄 유틸리티를 갖고 있음
- windows를 실행 중이라면 PuTTY 등 도구를 사용하면 됨
- Graphical한 것도 있음 Cyberduck, FileZilla, WinSCP 등
FTP는 SCP나 SFTP 같은 보안 전송 프로토콜이 아님!
따라서 로그인 자격 증명이 네트워크를 통해 일반 텍스트로 전송됨, 업로드 및 다운로드 파일도 암호화되지 않음
- FTP : 파일 전송 프로토콜
Aliases
로그아웃하면 alias가 사라지게 되는데 세션 간 지속되도록 하려면 .bash_profile에 추가하기!
- alias [name[=value]] : alias 만들기
alias cls='clear' - unalias name : alias 제거
- unalias -a : 모든 alias 제거
Day 5
환경 변수
환경 변수는 대소문자를 구별함, 환경 변수는 규칙상 대문자임, 소문자 환경 변수를 만들 수 있지만 보기 드묾, 이름과 값과 쌍으로 구성됨
- printenv : 모든 환경 보는 명령어
- PATH : 어떤 명령을 어떤 순서로 실행할지 결정
- printenv HOME : 특정 환경 변수(HOME)의 값을 보고 싶을 때
- echo $HOME : 환경 변수의 내용을 표시함, 환경 변수 이름 앞에 $를 적어야 함
- export VAR='value' : 환경 변수를 생성
- 등호 주변에 띄어쓰기 하면 안됨
- 스페이스가 들어가면 에러남
- 환경 변수가 이미 존재한다면 콘텐츠를 덮어쓸 수 있음
- 환경 변수를 생성할 뿐만 아니라 업데이트가 가능함
- unset VAR : 환경 변수 제거하는 명령어
프로세스 실행과 프로그램 및 명령 실행
- ps : 현재 실행 중인 프로세스 보기
지정된 옵션이 없다면 p는 현재 세션과 관련된 프로세스를 표시함- -e : 커널 프로세스를 제외한 모든 프로세스를 출력
- -f : 출력을 풀 포맷으로 표기 UID, PID, PPID 등 함께 표시
- -u [username] : 특정 사용자의 프로세스 정보를 출력, 사용자를 지정하지 않는다면 현재 사용자 기준으로 출력
- -p : 특정 PID를 지정하여 출력
* PID : 프로세스 식별 번호 - ps 명령어 사용 예시
- ps -e
- ps -ef
- ps -eH
- ps -e --forest
- ps -u username
- pstree : 트리 포맷의 프로세스를 볼 수 있음
- top : 현재 OS 상태를 나타내줌
- htop : top과 같은 정보를 제공하지만 약간 다른 형식으로 제공함
- command & : 명령어를 백그라운드에서 실행
- bg [%num] : 중단된 프로세스를 백그라운드로 보내기
- fg [%num] : 백그라운드에서 실행 중인 것을 포어그라운드에서 실행
- kill : 작업 종료
- jobs : 실행 중인 작업 리스트
- ctrl-c : 포어그라운드에서 실행 중인 프로세스 종료
- kill [-sig] pid : 프로세스 종료
- kill -l : 시그널 리스트를 보여줌
'Study > Udemy' 카테고리의 다른 글
[Linux] Linux Command Line 부트캠프: 리눅스 초보자부터 고수까지(9/5~) (1) | 2024.09.05 |
---|---|
[AWS] AWS SA 교육 1 (9/3~9/6) (1) | 2024.09.05 |