[TIL] 리눅스

krkorklo·2022년 8월 16일
0

TIL

목록 보기
2/29
post-thumbnail

가상환경

가상환경이란 말그대로 가상의 실행 환경으로 임의로 가상의 컴퓨터를 만들어서 실행한다. working directory에서 작업 후 배포를 할때 remote 컴퓨터로 배포하는 것이 아닌 가상 환경을 통해 쉽게 확인 가능하다.

유닉스

  • 멀티 태스킹과 다중사용자를 지원하는 운영체제
  • 마스터 제어 시스템은 커널로 전체 시스템을 완전히 제어
  • 커널이 사용자와 하드웨어 간의 인터페이스 역할을 함
  • 쉘은 사용자와 커널 간의 인터페이스로 사용자가 명령을 입력하면 이를 해석해 컴퓨터 프로그램을 호출

리눅스

  • 다중 사용자, 멀티 태스킹, 다중 스레드를 지원하는 운영체제로 유닉스에서 파생된 무료 운영체제
  • Unix와 유사하지만 unix 코드가 없어 자유롭게 추가 수정 및 배포가 가능
  • 하지만 Linux는 완전한 운영체제가 아닌 커널! 배포판(Linux 커널, GNU 시스템 - 유닉스(Unix) 운영체제를 모델로 만든 운영체제, 라이브러리, 컴파일러 등)에 패키지됨으로써 운영체제가 됨
  • Linux 배포판은 Linux 커널에 다른 응용프로그램을 추가해 운영체제로 완전히 사용할 수 있게 함

리눅스 디렉토리 권한 및 관련 명령어

파일의 접근 권한

  • 읽기(r) : 파일의 내용을 볼 수 있다.
  • 쓰기(w) : 파일의 내용을 변경할 수 있고, 파일의 이름을 변경하거나 삭제할 수 있다.
  • 실행(x) : 파일을 실행할 수 있다.

디렉토리의 접근 권한

  • 읽기(r) : 디렉토리의 파일, 서브 디렉토리의 목록을 볼 수 있다.
  • 쓰기(w) : 디렉토리에 파일, 서브 디렉토리를 생성하거나 삭제할 수 있다.
  • 실행(x) : cd 명령어로 디렉토리, 서브 디렉토리로 이동할 수 있고, 디렉토리에서 프로그램을 실행할 수 있다.

chmod를 사용해서 파일, 디렉토리의 권한을 설정할 수 있다.

  • 8진수 숫자로 변경하는 방법 파일 타입을 제외한 아홉 개의 문자는 각각 3개로 나뉘어 사용자/그룹/게스트 허가권을 표현한다. 각 허가권 중 첫번째 자리는 읽기(4), 두번째 자리는 쓰기(2), 세번째 자리는 실행(1)을 의미해 이 값들을 합친 값으로 mode를 변경할 수 있다.
    # 읽기+쓰기 / 읽기 / 읽기
    $ chmod 644 file.txt
  • 기호 문자로 변경하는 방법 누구에게 : u(사용자), g(그룹), o(게스트), a(전부) 어떻게 : +(권한부여), -(권한뺏기), =(설정) 무엇을 : r(읽기), w(쓰기), x(실행)
    # 모두에게 읽기 권한만 부여
    $ chmod a=r file.txt
    
    # 사용자에게 읽기, 쓰기 권한 추가
    $ chmod u+rw test.txt

chown : 사용자 및 그룹의 소유권을 변경

chgrp : 그룹 소유권만 변경

unmask : 기본 허가권 변경

Shell

커널과 사용자 사이를 이어주는 역할을 하는 명령어 처리기

sh (Bourne Shell)

  • 최초의 쉘로 대부분의 리눅스에 기본적으로 설치되어 있다.

csh (C Shell)

  • Bourne Shell의 사용성을 높이고 더 강력하게 만든 쉘로 c 언어와 유사한 문법을 가진 쉘이다.

bash (Bourne-again Shell)

  • 가장 흔하게 사용되는 쉘로 sh와 호환된다. C Shell과 Bourne Shell의 기능들이 많이 포함되어 있다.

zsh

  • 많은 쉘의 기능을 머금고 있는 확장형 Bourne Shell이다.

Shell 명령어

ls

  • 디렉토리 내용을 볼 수 있음
  • option
    -a : 숨겨진 파일이나 디렉토리도 출력
    -l : 퍼미션, 파일 수, 소유자, 크기, 수정일자 등 자세한 내용을 출력
    -S : 파일 크기 순으로 정렬해서 출력
    -r : 거꾸로 출력
    -R : 하위 디렉토리까지 출력
    -h : 파일 크기를 사람이 보기 좋게 표시

cd

  • 현재 디렉토리를 변경

pwd

  • 현재 디렉토리 위치 출력

mkdir

  • 디렉토리 생성
  • option
    -m : 디렉토리 생성할때 권한 설정
    -p : 상위 경로도 함께 생성
    -v : 디렉토리 생성 후 생성된 디렉토리에 대한 메시지 출력

rmdir

  • 디렉토리 삭제
  • option
    -p : 해당 디렉토리와 경로로 사용된 부모 디렉토리 모두 제거
    -v : 모든 처리과정 출력

cp

  • 파일 복사
  • option
    -a : 파일의 속성까지 복사
    -p : 원본의 소유자, 그룹, 권한 등의 정보도 복사
    -i : 덮어쓰기 여부를 물음
    -r : 하위 디렉토리 및 파일까지 모두 복사
    -v : 현재 복사 진행 작업을 표시
    -u : 최신 파일이면 복사
    -b : 이미 존재하는 파일의 경우 백업 생성

mv

  • 파일 이동 (파일 이름 변경)
  • option
    -b : 지정 위치에 동일 파일이 있는 경우 백업 후 이동
    -f : 지정 위치에 동일 파일이 있는 경우 강제로 덮어씀
    -i : 지정 위치에 동일 파일이 있는 경우 덮어쓸지 물음
    -n : 지정 위치에 동일 파일이 있는 경우 이동하지 않음
    -S : 백업 생성 시 원하는 단어 지정
    -t : 지정된 디렉토리로 이동시킴
    -u : 파일이 변경된 경우에만 이동
    -v : 파일 이동 시 결과 출력

rm

  • 파일 삭제
  • option
    -r : 해당 폴더와 해당 폴더 안에 있는 파일, 디렉토리 모두 삭제
    -d : 빈 디렉토리 삭제
    -i : 삭제 여부를 물음
    -f : 강제로 삭제
    -v : 모든 처리과정 출력

touch

  • 크기가 0인 새 파일 생성
  • option
    -a : 현 시간으로 파일에 접근, 변경 시간을 수정
    -c : 기존 파일이 없으면 생성되지 않음
    -d : 지정한 시간으로 접근, 수정 시간이 수정되고 변경 시간은 현재 시간으로 수정
    -m : 현 시간으로 파일의 수정, 변경 시간을 수정
    -r : 지정한 파일의 접근, 수정 시간으로 수정되고 변경 시간은 현재 시간으로 수정

cat

  • 파일 내용을 출력
  • option
    -b : 줄 번호를 화면 왼쪽에 출력
    -e : 제어 문자를 ^ 형태로 출력하며 행의 끝에 $ 추가
    -n : 줄 번호를 화면 왼쪽에 나타내며 비어있는 행도 포함
    -s : 연속되는 2개 이상의 빈 행을 한 행으로 출력
    -v : tab과 행 바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력
    -E : 모든 행의 끝에 $ 출력
    -T : tab 문자 출력

chmod

  • 퍼미션 변경
  • option
    -v : 모든 파일에 대해 모드가 적용되는 메시지 출력
    -f : 에러 메시지 출력하지 않음
    -c : 기존 파일 모드가 변경되는 경우에만 메시지 출력
    -R : 지정한 모드를 하위 파일과 디렉토리에 모두 적용

vi

  • vi 편집기 열기

grep

  • 지정한 패턴을 포함하는 행을 찾음

find

  • 파일 찾기

clear

  • 출력되었던 내용을 지우고 새로운 화면을 출력

date

  • 시스템 날짜 출력

top

  • 현재 시스템의 작업 출력
  • option
    -d : 설정된 초 단위로 새로고침
    -c : command 뒤에 인자값 표시
  • 반복구문
    NUM=0
    for i in $array
    do
    	echo $i
    	NUM=`expr $NUM+$i`
    done
  • 비교구문
    if [ $NUM -eq 0 ] then
    	...
    elif [ $NUM -eq 1 ] then
    	...
    else
    	...
    fi

환경변수

  • 실행 환경을 설정하거나 시스템의 속성을 기록하기 위한 변수
  • 원하는 변수가 있는 파일에 직접 접근할 필요 없이 환경 변수를 사용할 수 있다.
  • export 를 사용해 환경변수에 값을 설정할 수 있다.
$ export NAME=VALUE
  • env 로 환경변수를 확인할 수 있다.
$ env | grep NAME

SSH

  • Secure Shell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜
  • 원격 접속 과정에서 옮겨지는 데이터를 탈취할 수 있는 위험을 없애기 위한 기술
  • 사용자와 서버는 각각의 키를 보유해 연결 상대를 인증하고 안전하게 데이터를 주고받음 → 비대칭키 방식으로 서로를 판단하고 대칭키 방식으로 데이터 암복호화

참고자료
https://ko.myservername.com/unix-vs-linux-what-is-difference-between-unix

0개의 댓글