Linux 기초

Nak Jun Choi·2022년 10월 27일

CLI 란?

  • 명령줄 인터페이스(command-line interface, CLI) : 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식이다. 상대적으로 높은 안정성과 빠른속도를 갖고있다.

  • 그래픽 사용자 인터페이스(Graphic User Interface) : 일상생활에서 일반인이 컴퓨터를 사용할 떄 적용되는 컴퓨터 제어 방식. 편리하지만 컴퓨터 자원을 소비하기 때문에 CLI보다 느리다.

  • 컴퓨터를 제어하기 위해서는 다양한 Input이 필요하다. 키보드, 마우스, 카메라, 마이크 등 컴퓨터에 새로운 명령을 전달하는 모든 소스가 입력 소스(Input Source)이다.

  • 컴퓨터를 조작하기 위한 입력과 출력을 I / O (Input/Output)라 표기하고, '아이오'라고 읽는다.

CLI 기본 명령어

  • 프롬프트(Prompt) 란? : 키보드 입력을 확인하고 편집할 수 있는 한줄의 공간을 뜻한다.

  • pwd(Print Working Directory) : 현재 위치 확인하기. # directory 는 폴더라고도 한다.

  • mkdir(Make Directories) : 새로운 폴더 생성하기.

  • ls(List) : 특정 폴더에 포함된 파일이나 폴더 확인하기.
    - ls -a : a는 'all'이라는 의미이다. 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력한다.
    - ls -l : 폴더나 파일의 포맷을 전부 표현하라는 의미이다. d로 출력된 경우는 디렉토리, -로 출력된 경우는 파일을 나타낸다.

  • cd(Change Directory) : 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경한다는 의미이다.

  • touch : 파일 생성하기. ex). touch hi.txt

  • > : 실행 결과를 파일로 저장하기. ex). ls > ls.txt를 입력하면 ls.txt에 ls 명령어의 실행결과가 저장된다.

  • echo : echo 뒤의 내용을 화면에 출력해주는 역할을 한다.

  • cat : 파일의 내용을 터미널에 출력하기.

  • rm(Remove) : 폴더나 파일삭제한다. rm은 단일 파일을 삭제할 수 있다. 만약 폴더를 삭제하려면 옵션을 이용해야 한다. (휴지통을 거치지 않고 삭제된다.)

  • rm -rf bye : 폴더를 삭제한다. 여기서 r은 recursive를 뜻하고 f는 force를 뜻한다. r은 폴더를 지울 때 사용하고, f는 질문을 받지 않고 지울 때 사용한다.

  • mv(Move) : 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 옮긴다. mv 뒤에는 순서대로 [폴더나 파일의이름][도착 폴더의 이름]을 입력한다. ex). mv bye.txt bye/

  • mv : 폴더나 파일의 이름을 변경할 수 있다. mv [폴더나 파일 이름][변경하고자 하는 파일의 이름] ex). bye.txt helloWorld.txt

  • cp(Copy) : 폴더나 파일을 복사하기. cp [원본 파일 이름][복사할 파일 이름], cp -rf bye hi 폴더를 복사하는 방법.

  • cd .. : '.' 현재경로 '..' 앞에 있는 폴더를 지칭함.

  • 각 명령어에 포함된 옵셥은 명령어 이름만 입력하거나 -h 또는 --help 와 같은 옵션을 통해 확인할 수 있다.

CLI 심화 학습

관리자 권한과 경로

  • 두 프로그램이 하나의 시스템(운영체제)을 놓고 다투는 과정을 프로그램 충돌(Conflict)라고 한다.

절대 경로와 상대 경로

  • 절대 경로 : 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트폴더(/)라고 한다.

  • 상대 경로 : 특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타낸다. 상위 폴더는 두 개의 점(..)으로 표현한다. 현재 폴더는 (.)로 표현한다.

관리자(root) 권한

  • 절대 경로의 기준점인 루트폴더(/)는 Linux의 관리자 영역이다. 일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없다.

  • Linux 관리자의 가장 큰 특징은, 어떤 일이 있더라도 일반 사용자에게 관리자 권한(루트 권한)을 완전하게 넘기지 않는다.

  • 즉, 사용자와 관리자를 명확히 분리하여 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호한다.

  • whoami : 현재 로그인된 사용자를 확인하는 명령어.

sudo : 관리자 권한을 획득하는 명령어

  • sudo는 사용자 환경에서, 관리자 권한을 획당하는 명렁어이다. // 조금 더 찾아보기

텍스트 에디터 nano

  • nano 실행 : nano hello.java (hello.java를 nano에서 엽니다.) or nano (그냥 실행도 가능하다.)

  • 파일 열기 : nano 파일이름

  • 파일 편집 후 종료 : cntl + x

  • 파일 저장 : nano를 종료하지 않고, 파일을 저장할 수도 있다. ^O WriteOut를 이용하면 된다.

패키지와 패키지 매니저

  • 패키지 매니저란? : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구이다.

  • apt : 우분투의 패키지 매니저. WSL에 apt를 입력하면 패키지 매니저의 주요 명령어를 알 수 있다.

    	1). 패키지 목록 갱신: apt update(관리자 권한 필요)
    
    	2). 패키지를 다운로드할 수 있는 여러 저장소의 최신 정보를 업데이트합니다. 새로운 저장소를 추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신합니다.
    
    	3). 설치된 프로그램이 새로운 버전으로 변경되지 않습니다.
    
    	4). 업그레이드 가능한 패키지 목록을 출력: apt list -—upgradable
    
    	5). 전체 패키지 업그레이드(버전 업): apt upgrade (관리자 권한 필요)
    
    	6).특정 패키지만 업그레이드(버전 업): apt --only-upgrade install 패키지 이름 (관리자 권한 필요)
    
    	7). 패키지 설치: apt install 패키지 이름 (관리자 권한 필요)
    
    	8). 설치된 패키지 보기: apt list --installed
    
    	9). 패키지 검색: apt search 검색어
    
    	10). 패키지 정보 확인: apt show 패키지 이름
    
    	11). 패키지 삭제: apt remove 패키지 이름 (관리자 권한 필요)
  • 관리자 권한 사용하기 : sudo를 이욯하면 된다고 나와있지만, sudo를 써도 계속 deny되어서 관리자 권한으로 실행하였다.

  • apt : 우분투의 기본 패키지 매니저

  • wget : URL를 통해 파일을 다운로하는 프로그램이다.

Read, Write, Execute 권한

  • 파일은 표현의 첫 시작이 -로 시작하고 폴더는 d로 시작한다.

  • 이어지는 r,w,x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다.

  • 3번에 걸쳐 나타나는 이유는 사용자와 그룹, 나머지에 대한 권한을 표시하기 위함이다.

  • User : 파일의 소유자이다. 기본적으로 파일을 만든 사람이 소유자가 된다.

  • Group : 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대한 동일한 group 엑세스 권한을 갖는다. 예를 들어 많은 사람이 파일에 엑세스해야 하는 프로젝트가 있다 가정하면 각 user에게 일일이 권한을 할당하기 보다 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있다.

  • other : 파일에 대한 액세스 권한이 있는 다른 user이다. 파일을 만들지 않은 다른 모든 user를 의미한다. 따라서 other 권한으로 설정하면 해당 권한을 global 설정이라 볼 수 있다.

  • chmod : 권한을 변경하는 명령어이다.

  • chmod로 권한을 변경하는 2가지 방식
    1). +, -, =과 액세서 유형을 표기해서 변경하는 Symbolic method
    2). rwx를 3bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form

  • Symbolic method는 액세스 클래스, 연산자, 엑세스 타입으로 구분한다.

    chmod g-r filename # removes read permission from group
    chmod g+r filename # adds read permission to group
    chmod g-w filename # removes write permission from group
    chmod g+w filename # adds write permission to group
    chmod g-x filename # removes execute permission from group
    chmod g+x filename # adds execute permission to group
    chmod o-r filename # removes read permission from other
    chmod o+r filename # adds read permission to other
    chmod o-w filename # removes write permission from other
    chmod o+w filename # adds write permission to other
    chmod o-x filename # removes execute permission from other
    chmod o+x filename # adds execute permission to other
    chmod u+x filename # adds execute permission to user
    chmod a=rw hello.java # -rw-rw-rw-
    chmod u= hello.java # ----rw-rw-
    chmod a+rx hello.java # -r-xrwxrwx
    chmod go-wx hello.java # -r-xr--r--
    chmod a= hello.java # ----------
    chmod u+rwx hello.java # -rwx------
  • Absolute form은 숫자 7까지 나태내는 3bits의 합으로 표기한다.

ex). 만약, user는 rwx를 group과 other은 r-- 로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용한다.

#u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)# 
chmod 744 hello.java # -rwxr--r--
  • Absolute form에서 사용하는 숫자

환경변수란?

  • 프로그램의 동작에 영향을 미치는 값들을 의미한다.

Linux & Mac OS에서 환경변수 설정하기

  • 지역 환경변수 : 환경변수를 생성한 특정 사용자만 사용할 수 있는 환경 변수
    • 지역 환경변수를 임시적으로 적용하는 법
      hello=codestates
  • 전역 환경 변수 : 명령어 export를 이용하면, 새로운 환경변수를 추가 할 수 있다. 등호 표시 앞뒤에는 공백이 없어야하며, 저장하고자 하는 변수가 공백을 포함하는 경우에는 값전체를 따옴표로 감싸주어야 한다.
    • export urclass-"is good" export bad_example-this is bad example
  • 전역 및 지역 환경변수의 개별 값 확인하기
    • 사용자가 설정한 환경변수의 값은 명령어 echo로 확인할 수 있다. 이때 환경변수 앞에는 달러샤인($)을 입력한다. 이 달러사인은 $ 뒤의 문자열이 환경변수라는 의미를 터미널에 전달한다.
      ex). echo $hello echo $urclass echo $bad_example
        

환경변수 영구 적용하기

지역 환경변수 영구 적용하기

1). cd~를 입력하여 홈 디렉토리로 이동한 다음, ls-al를 통해 홈 내에 존재하는 모든 것들을 숨겨진 파일과 디렉토리까지 조회한다.

2). 조회 결과에 따라 아래의 명령어를 입력하여 편집창을 연다.

  • 목록에 .zshr가 있으면 nano .zshrc를 입력하여 편집창을 연다.
  • 목록에 .bashrc가 있으면 nano .bashrc를 입력하여 편집창을 연다.
  • 텍스트 편집기는 nano, vi등 어떤 것을 사용하여도 무방하다.

3). 파일의 맨 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장한다.

4). source .zshrc를 입력하여 변경 내용을 적용하고, 내용을 출력해본다.

전역 환경변수 영구 적용하기

1). 먼저, 변경하고자 하는 파일의 권한을 수정하여야 한다.

  • 내가 환경변수를 저장하고자 하는 파일의 이름은 루트 디렉토리(/)의 etc 디렉토리 내에 있는 profile이라는 파일이라 가정한다
  • profile은 기본적으로 수정 권한이 r--r--r--로 설정되어 있어 수정이 불가능 하다.
  • sudo chmod 777 /etc/profile을 입력한 다음, 시스템에 적용되어 있는 비밀번호를 입력하여 권한을 변경한다.

2). nano /etc/profile을 입력하여 입력창을 연다.

  • 참고로 이 명령어는 루트 디렉토리의 etc 내에 있는 profile을 nano 편집기로 여는 명령어이다.

3). 파일의 맨 아래로 이동한 다음, 설정하고자 하는 환경 변수를 작성하고 저장한다.

4). source /etc/profile를 입력하여 변경 내용을 적용하고, 내용을 출력한다.

Tip. 터미널 명령어 export를 입력하면 운영채제 내에 이미 설정되어있는 환경변수 및 export 키워드를 통해 설정한 환경 변수들의 목록을 확인할 수 있다.

WINDOW에서 환경변수 설정하기

profile
HelloWorld

0개의 댓글