-
1️⃣ Linux introduction
-
2️⃣ Basic Command
-
시스템 로그인과 접속 종료
$ sudo passwd root
$ su - root
$ logout
- 로그인 한 쉘에서만 유효
$ exit
- 로그인한 쉘 아니어도 현재 쉘 종료
$ shutdown <매개변수>
-
관리자 권한이 있는 계정만 가능
-
shutdown
$ shutdown -r now
- 지금 종료 후 재시작
$ shutdown -h +3
- 3분 후 종료
$ shutdown -c
- shutdown 명령 취소
$ reboot
- 관리자 권한이 있는 계정만 가능
- shutdown -r now 와 동일한 기능
Ctrl + Alt + Delete
- 무조건 재시작
-
사용자 확인 및 전환
$ who
- 현재 시스템을 이용하는 사용를 화면에 출력
- 콘솔 또는 터미널
- 가상 콘솔또는 터미널
- pts와 ptms를 포함
$ su
- 환경변수에 따라 바뀌는 것 확인
-
디렉토리
- 절대경로
- 상대경로
$ pwd
$ ls <디렉터리 경로>
-
ls
-a 모든 파일 열거 -l 정보 자세히 출력 -F 항목의 유형 표시 -r 알파벳 역순 정렬 -t 수정시간 정렬 -S 크키 순 정렬
$ cd <디렉터리 경로>
- cd ~west9/Myfile 접속 가능
$ mkdir <새로운 디렉터리>
-
mkdir
$mkdir -p newfile/newnewfile
- 계층적으로 생성가능
$mkdir -m <권한> newdir
- 생성과 동시에 파일의 권한 설정 가능
- [권한] u=rwx , u-rwx, 775
$ rmdir <디렉터리 경로>
- 디렉터리가 비어있을 때 제거 가능
$ du <경로>
-
du
-a 모든 파일 출력 -k KB단위로 출력 -m MB단위로 출력 -h 읽기 쉬운 단위로 출력 -s 사용량 총 합계만 출력 -c 출력 + total 합 출력
$ df <경로>
-
option
-a 모든 파일시스템 정보 출력 -k KB단위로 출력 -m MB단위로 출력 -h 읽기 쉬운 단위로 출력 -i inod의 남은 공간, 사용공간, 사용 퍼센트 출력 -l 출력하는 목록을 로컬 디스크로 제한
-
파일
$ touch <파일명>
-
option
타임 스탬프 변경
$ touch -t 200004151113.00 <파일명>
$ cat 파일 경로
-
option
$ cat > 파일 경로
- 입력할 내용을 파일에 기록. (입력모드로 전환됨. ctrl+c로 종료)
$ cat 파일1 경로 > 파일2 경로
- 파일 1 내용을 파일2에 기록(파일 2 내용 없어짐.)
$ cat 파일1 경로 >> 파일2 경로
- 파일 1 내용을 파일2에 추가(파일 2 끝에 추가함)
- 표준 스트림을 사용자 지정 위치로 우회할 수 있는 명령
> 표준 출력을 지정한 위치로 전달 < 표준 입력을 지정한 위치로 전달 >> 파일의 끝에 내용을 추가함
$ more/less <패턴>
-
more
- n행씩 출력 + n행 부터 출력 +/ <문자열> 지정한 문자열 검색
$ head <파일 경로>
-
head
$ head -3 <파일 경로>
- 3번째 행까지 출력
$ tail <파일 경로>
-
tail
$ tail -f <파일 경로>
- 실시간으로 화면에 출력
$ cp <원본경로> <사본경로>
-
cp
-a 속성,링크,정보 유지하며 복사 -b 복사될 경로에 같은 파일 존재시 백업본 만들고 복사 -f 기존 파일 강제로 삭제 후 복사 -i 덮어쓰기 전 여부 확인 -r 디렉터리를 지정된 경로에 복사 -u 대상 파일보다 원본 파일이 새로운 것일때 복사
$ mv < 원본 경로> <이동될 경로>
-
mv
-b 같은 파일 존재시 백업본~ 만들고 복사 -f 기존 파일 강제로 삭제 후 복사 -i 덮어쓰기 전 여부 확인 -v 이동 과정 화면에 출력 -u 대상 파일보다 원본 파일이 새로운 것일때 복사
$ rm <삭제할 파일>
-
rm
-d 디렉터리 삭제 -i 삭제 전 여부 확인 -f 확인하지않고 강제 삭제 -r 하위 디렉터리까지 모두 삭제 -v 삭제 과정 화면 출력
$ file <파일 경로>
- 파일의 종류를 화면에 출력
$ cmp <파일1> <파일2>
- 두 파일을 바이트 단위로 비교
- 처음으로 다른 위치 출력
$ comm <파일1> <파일2>
- 두 파일 행 단위로 비교하여 화면에 출력
$ diff <파일1> <파일2>
-
파일 1이 어떻게 수정되야 파일2가 되는지
-
diff
1 a 2,3 파일1 1행에 파일2 2~3행 넣자. 5,6 d 6 파일1 5~6행 삭제 3,4 c 10,11 두 파일이 변경 되어야 할 내용
$ cut <파일 경로>
-
cut
$ cut -c <위치> <파일 경로>
- 추출할 문자 위치
$ cut -d “구분자” -f <필드번호> <파일 경로>
$ wc <파일 경로>
-
wc
-c 바이트 수 -w 단어 수 -l 행 개수
$ sort <파일 경로>
-
sort
-d 알파벳 순 -f 대소문자 구분x -g 숫자 크기 기준 -r 역순 -c 이미 정렬되있다면 노정렬 -o <파일 경로> 정렬 결과를 파일로 저장
$ split <파일 경로>
-
split
-b num 바이트 단위로 분리 -l num 행 단위로 분리 -c 한줄에 최대 num바이트 단위로 분리
-
-
파일의 압축 및 백업
$ gzip <파일 경로>
-
gzip은 파일당 하나씩 압축되는 것.
-
파일만 가능 디렉터리 불가.?
-
gzip
-1~9 압축률 -c 압축결과 출력 원본파일 그대로 -v 자세한 정보 출력 -d gz파일 압축 해제
$ tar <파일1> <파일2> <파일3>
-
tar
-c tar로 묶음 -x 지정한 파일 풀음 -f <새로운 파일.tar> 해당 경로에 저장 -v 진행과정 출력 -z 묶은 파일을 gzip 이용하여 압축 혹은 해제함 -j 묶은 파일 bz2 이용하여 압축 혹은 해제 -C <해제할 경로> 풀거나 압축 해제 시에 해당 경로에 해제 -t 묶은 파일에 들어있는 파일들의 목록을 화면에 출력 $ tar -cf <새파일.tar> <결합할 파일1> <결합할 파일2>
$ tar -xf <해제할.tar>
$ tar -zcf <새파일.tar.gz> <결합할 파일1> <결합할 파일2>
$ tar -zxf <해제할파일.tar.gz>
-
-
-
3️⃣ Advanced Command
-
사용자 및 그룹 관리
- 사용자 id, 그룹 id
- 명령어 해석기
- 우분투는 기본적으로 bash
-
사용자 - 커널 간의 의사소통 해주는 언어
-
사용자 환경설정 파일도 쉘 스크립트 형태로 존재
-
bash가 사용하는 시작 스크립트 파일
/home/meltsplit/.bashrc
- /etc/
-
group
- 4개 필드 :
- 모든 사용자는 하나 이상의 그룹에 속해있어야함.
<그룹명>:<패스워드>: : <소속 계정명> <그룹명>:<패스워드>: : <소속 계정명> <그룹명>:<패스워드>: : <소속 계정명>
-
shadow
- 총 9개 필드 :
<0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8> ****<0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8> <0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8>
0 계정 명 1 암호화된 패스워드 2 패스워드 변경한 날 일수 (1970.1.1~) 3 패스워드 재 변경까지 남은 일 수 4 패스워드 변경 해야만 하는 날 남은 일 수 5 패스워드 만료되기 전 사용자에게 경고하는 시간 6 계정이 사용 불가능하게 되기 전에 까지 남은 일 수 7 계정이 사용 불가능하게 될 날 까지의 일 수 8 예약 항목?
-
$ users
- 현재 로그인한 사용자 계정 출력
$ finger
$ useradd <새 계정명>
-
useradd
$ useradd -d /home/ms -s /bin/bash -m
-c 실제 이름 설정 -d /home/ms 홈 디렉터리 설정 -u 1004 UID값 설정 -g 기본 그룹 지정 -G 다중 그룹 지정 -s /bin/bash 로그인 쉘 설정 -m 홈 디렉터리 자동 생성 -D 계정 생성 기본 설정 파일 출력
$ passwd <계정명>
-
passwd
-d 패스워드 삭제 -S 암호체계 출력 -l 계정 lock -u 계정 unlock
$ userdel <계정명>
- “/etc/passwd”, “/etc/group”,”/etc/shadow” 내부 내용 삭제
$ usermod <계정명>
-c 사용자 설명 변경 -d 홈 디렉터리 변경 -u UID 변경 -g GID 변경 -s 로그인 쉘 변경 -l 계정명 변경
$ groupadd -g <그룹명>
$ groupdel <그룹명>
$ groupmod -g <그룹명>
-
파일 접근 권한 관리
$ chmod <접근 권한> <파일 경로>
- 접근 권한
-
기호모드
$ chmod u=rwx,g=rx,o=rx file1
$ chmod u-r,g+rw,o-rwx file1
-
8진법 모드
$ chmod 775 file1
-
$ chown <계정명> <파일 경로>
$ chgrp <그룹명> <파일 경로>
-
ch
$ ch* -R Dir**
- 하위 디렉터리까지 권한or 소유권 변경
-
새로 만들어지는 파일의 권한 default값
-
기본 umask값 = 0002
-
root계정 umask값 = 0022
-
기본권한: 디렉터리: 777, 파일: 666
-
디렉터리
💡 따라서 기본 umask값이 0002인 디렉터리는 u=rwx, g=rwx, o=r x 775디렉터리 r w x r w x r w x 기본 값 1 1 1 1 1 1 1 1 1 0002 0 0 0 0 0 0 0 1 0 최종 값 1 1 1 1 1 1 1 0 1 -
파일
💡 따라서 기본 umask값이 0002인 파일 권한은 u=rw, g=rw, o=r 664파일 r w x r w x r w x 기본값 1 1 0 1 1 0 1 1 0 0002 0 0 0 0 0 0 0 1 0 최종값 1 1 0 1 1 0 1 0 0
$ chsh -s <쉘_ 절대 경로>
💡 이해는 했는데 왜 실행이 안되지..
- 접근 권한
-
정보 검색 명령어
$ which <명령어>
- <명령어>의 절대 경로 출력
$ whereis <명령어>
- 절대경로와 man파일 경로까지 출력
$ find <경로> <파일명>
-name <파일명> 이름 -perm <파일 권한> 권한 -type <파일 타입> 타입 -size 크기 -links 링크 개수 -user 소유자 -group 소유 그룹 -mtime <+n> n일 지난 파일 -atime <-n> n일 내에 마지막 액세스 -print 화면에 출력 파일 타입 d 디렉터리 f 파일 l 심볼릭 링크 s 소켓 b 블록파일 l 파이프 시간 +n n일 지난 -n n일 이하
$ grep <표현식> <(파일 경로)>
-
패턴
$ grep “AB” f*
- f로 시작하는 모든 파일에서 AB를 포함하는 모든 행 출력
$ grep “^a” file.txt
- a로 시작하는 모든 행 출력
$ grep “4$” file.txt
- 4로 끝나는 모든 행 출력
$ grep “[^0-9]” file.txt
- 숫자가 아닌 문자 하나라도 포함하는 모든 행 출력
$ grep “[^abc]” file.txt
- a 또는 b 또는 c가 아닌 어떤 문자라도 포함 한다면 출력
$ grep “ab” file.txt*
- a 혹은 ab 혹은 ab.... 행 출력
-
옵션
-c 파일 명: 라인 개수로 출력 -h 파일 이름 출력 X -i 대소문자 구분 X -l 파일 이름만 출력 -n 라인 앞에 번호 붙임 -w 독립적인 단어로만 찾음 -v 패턴이 없는 라인만 출력
-
-
4️⃣ Linux Init
-
🗂 리눅스 디렉터리 구조
- 🗂 root
-
🗂 boot : 커널, 부팅 관련 파일
-
🗂 dev : 장치 파일
-
🗂 usr : 프로그램 패키지
- 🗂 bin : 압축, 네트워크, 자료 전송
- 🗂 sbin : 네트워크 관련 명령어, 데몬
-
🗂 bin : 기본 명령어
- bash
- zsh
- ls
- cd
- 각종 명령어들..
-
🗂 sbin : 시스템 운영 관련 명령어
-
🗂 etc : 앱, 서버 환경설정
- 🗂 apt :
- sources.list : 서버 기록
- profile : 환경설정, 환경변수
- bash.bashrc : 시스템 전역 함수, alias 설정, 환경변수
- passwd : 사용자 비밀번호 정보 파일
- groups : 그룹 정보 파일
- shadow :
- shells :
- intend.conf : 데몬 설정 파일
- 🗂 apt :
-
🗂 root : root계정 홈 디렉터리
- 🗂 snap
-
🗂 home : 홈 디렉터리
- 🗂 meltsplit
- .bashrc : 계정의 지역 환경설정, 환경변수
- 🗂 MyFile
- test.sh
- 🗂 meltsplit
-
🗂 lib : 공유 라이브러리, 커널 모듈
-
🗂 tmp : 임시 파일 저장
시스템 재구동시 삭제됨.
-
...
etc etc..
-
- 🗂 root
-
부팅과정과 시스템 초기화
- POST
- Boot Loader
- Kernel
- init 프로세스
-
프로세스 및 데몬 관리
$ ps
-
ps
-e 모든 프로세스 출력 -f 자세 정보 출력 -x 제어 터미널에 없는 프로세스 출력 -u 프로세스 소유자 정보 출력 -r 수행중이 프로세스만 출력 -p 지정된 프로세스 정보 출력 -t 지정된 터미널에 연관된 프로세스 정보 출력
$ pstree
$ top
$ kill
$ sleep 5 &
$ jobs
$ fg
-
-
소프트웨어 관리
$ apt-get install <패키지명>
$ apt-get remove --purge <패키지명>
-
-
5️⃣ Shell Programming
- 쉘 프로그래밍 개요
- BASH
-
6️⃣ Shell Programming2
-
Vim편집기
-
쉘프로그래밍
${var}
-
${var}
${var} 변수 값으로 치환 ${var:=value} null이면 valuer값 저장 ${var:+value} null 아니면 value 출력 ${var:-value} null이면 value 출력 ${var:?value} null이면 에러 ${#var} 문자열 길이 출력 ${var:offset} offset만큼 앞을 자르고 출력 ${var:offset:length} offset부터 length만큼 출력
$ test 표현식
$ [ 표현식 ]
- 과 표현식 사이는 공백이 포함 되어야 함
if [ 조건문 ] then 실행문1 elif [ 조건문 ] then 실행문2 else 실행문3 fi
case 문자열 in 정규식1) 실행1 ;; 정규식2) 실행2 ;; y | Y | yes | Yes) 실행3 ;; esac
select n in 0 1 2 3 4 do echo $n #0 1 2 3 4 done
for(( n=0;n<5;n++)) do echo $n #1 2 3 4 5 done
while [ n0 ] do n+++ done
until [ n=0 ] do n-- done
functionName() { 실행문 }
-
-
-
Notifications
You must be signed in to change notification settings - Fork 0
meltsplit/Linux
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published