백엔드 부트캠프/TIL

[TIL] DAY-6 CLI 명령어에 공부해 보았다.

o_b:us 2022. 5. 2. 16:54

1. CLI 명령어


    pwd: 현재 위치를 확인하는 명령어
    mkdir: 새로운 폴더를 생성하는 명령어
    ls: 폴더나 파일의 목록을 출력하는 명령어
    nautilus (Ubuntu), open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
    cd: 폴더에 진입하는 명령어
    touch: 새로운 파일을 생성하는 명령어
    cat: 파일의 내용을 터미널에 출력하는 명령어
    rm: 폴더나 파일을 삭제하는 명령어
    mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어 ex) mv [폴더나 파일의 이름] [도착 폴더의 이름]
    cp: 폴더나 파일을 복사하는 명령어 ex) cp -rf [폴더나 파일 이름(바꾸기전)] [폴더나 파일 이름(바꿀)]
    sudo: 관리자 권한을 이해할 수 있다.
명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
    /: 루트 디렉토리
    ~: 홈 디렉토리
    whoami: 현재 로그인된 사용자 확인
    nano: CLI에서 텍스트 nano에디터 실행


rf는 뭔가요?

r 옵션은 recursive의 약자로 일반적인 rm 명령어로는 파일을 저장하고 있는 폴더를 삭제하지 못합니다. 이때 -r 옵션을 추가하여 rm -r 폴더명 명령한다면 삭제를 가능하게 합니다. f 명령어는 보호되거나 존재하지 않는 파일도 강제삭제를 할 수 있습니다.rf 명령어를 합쳐 rf 형태로 쓸 수 있습니다.


2. 사용자 계정 컨트롤의 등장

    분명 PC의 주인은 사용자일 텐데, 왜 관리자가 별도로 필요할까요? MS(MicroSoft)사에서 개발한 운영체제, 윈도우(Windows)의 초기 버전에는 관리자 권한이 없었습니다. 정확히는 사용자가 없이, 항상 관리자 권한으로 프로그램을 설치, 변경, 삭제할 수 있었습니다. 그러나 항상 관리자 권한으로 실행되다 보니, 해킹에 의해 사용자 정보가 탈취당하는 상황이 발생하거나, 둘 이상의 프로그램의 충돌(시스템의 설정 변경에 참여하는 과정에서)을 일으켜 블루 스크린이 일어나 고통받는 고객을 보호하기 위해 MS사는 윈도우 Vista에 사용자 계정 컨트롤(User Account Control)을 탑재했습니다. 윈도우의 사용자 계정 컨트롤로 하나의 PC에 여러 사용자를 등록할 수 있게 되었습니다. 한 대의 컴퓨터만 있으면 아빠, 엄마, 아들, 딸 모두 각자의 계정을 생성할 수 있습니다. 한 대의 PC에 4명의 사용자가 등록되어, 마치 4대의 PC가 있는 것처럼 사용할 수 있습니다. 다운로드한 파일이나 프로그램에 대한 접근 권한이 사용자 계정마다 분리되어, 각 사용자는 다른 사용자의 영역을 침범할 수 없습니다.


3. 패키지와 패키지 매니저

    패키지는 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일입니다. 패키지 매니저를 사용하지 않고, 프로그램을 독립적으로 설치하는 데에는 한 가지 큰 단점이 있습니다. 여러 프로그램을 개별로 설치하기 위해서는, 각각의 프로그램이 저장된 위치를 모두 알아야 합니다. 모든 프로그램이 한 곳에 저장되어 있으면 좋겠지만 여러 군데에 퍼져 있기 때문에, 원하는 프로그램을 찾기 위해서는 해당 프로그램을 저장하고 있는 저장소의 위치를 알아야 합니다. 그리고 해당 프로그램의 업데이트 여부를 확인하기 위해서도 주기적으로 저장소를 방문해서 확인해야 합니다. 만약 컴퓨터에 설치된 프로그램이 점점 늘어난다면, 모든 프로그램을 업데이트하는 일이 불가능에 가까워집니다. 이런 단점을 보완하기 위한 도구가 바로, 패키지 매니저입니다.
패키지 매니저는 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구입니다.



MacOS 운영체제에서 터미널을 통해 Homebrew 패키지 매니저를 설치하고 패키지를 관리하는 명령어.

    brew update: 패키지의 업데이트 여부 확인
    brew outdated: 업데이트 필요한 파일 조회
    brew upgrade: 프로그램 업그레이드
    brew info: 프로그램의 정보 확인
    brew install: 프로그램 설치
    brew list: 설치된 프로그램 목록 보기
    brew uninstall: 프로그램 삭제



애플 실리콘(M1) Mac 사용 시 주의사항
인텔과는 다르게 ARM 아키텍처를 사용하고 있으므로, 인텔 칩 기준으로 만들어진 프로그램을 설치할 때에,에러를 낼 수 있습니다.
이를 해결하기 위해선 먼저 에뮬레이션 환경 Rosetta를 설치해야 합니다.

softwareupdate --install-rosetta

그리고, brew 명령어를 실행시키기 전 arch -x86_64이라고 붙여줘야 합니다. 이와 같은 방법으로 인텔 칩 프로그램을 M1 Mac에 설치할 수 있습니다.

arch -x86_64 brew install 설치할프로그램



Linux Ubuntu운영체제에서 사용하는 apt 패키지 매니저를 설치하고 패키지를 관리하는 명령어

    apt update: 패키지의 업데이트 여부 확인
    apt list --upgradable: 업데이트 필요한 파일 조회
    apt upgrade: 프로그램 업그레이드
    apt show: 프로그램의 정보 확인
    apt install: 프로그램 설치
    apt list --installed: 설치된 프로그램 목록 보기
    apt remove: 프로그램 삭제
    apt search : 패키지 검색



4-1. 리눅스 파일, 디렉토리 권한 확인하기

directory: -(not directory), d(directory)
owner: 파일의 소유자(user)
group: 여러 유저가 포함될 수 있으며, 모든 user는 파일에 대한 동일한 group 엑세스 권한을 갖습니다. 일일이 user에게 권한을 할당할 필요없이
group에 추가하면 됨.
other: 파일에 대한 엑세스 권한이 있는 다른 user. 따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수 있다.
chmod: 권한주기



4-2. Read, Write, Execute 권한



예시

조금 어려워 보일 수 있으나 한번 읽어보면 쉽게 이해 된다.
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까지 나타내는 3 bits의 합으로 표기합니다.


예시

# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 hello.java # -rwxr--r--
chmod 777 hello.java #anyone can do anything (read, write, or execute)
chmod 755    hello.java #you can do anything; others can only read and execute
chomod 644 hello.java #644    you can read and write; others can only read

일기- 오늘은 CLI에 대해서 공부하는 날이었다. 다만 공지전달 미스로 인해 원도우에 리눅스 GUI에 대해 이것저것 설치해보고 nautilus까지 써봤지만 딱히 윈도우에서 써야할 이점?에 대해선 잘 모르겠다. 이전에 정보처리기사 공부하면서 해뒀던 공부내용이 확실히 도움이 되는것 같아서 보람 좀 느끼긴했다ㅋㅋ



6. Ubuntu GUI 실습

WSL2 리눅스 설치 참조 ubuntu에서 nautilus 명령어가 실행안되길래 이것저것 찾아 보면서했다.

  1. WSL2 설치해서 Ubuntu 다운 받기
  2. VcXsrv Winodws X Server 설치하기

근데 설치 도중 setting하는 옵션이 뜨질 않았다.... 근데 다른데선 전부 다 떠 있길래 혹시나 설치경로(C:\Program Files\VcXsrv)로 들어가 xlaunch를 실행시키니 세팅옵션이 똑같이 나와 있었다. 그래서 순서대로 따라하고 additional parmeters for VcXsrv에 -ac를 입력해줘야한다. nautilus . 를 실행하니

짜잔😆

이거한다고 2시간은 걸린거 같다.. 근데 막상하고나니 공지로 gui할 필요가 없다니..ㅠ

출처: 코드스테이츠, https://kb.iu.edu/d/abdb, https://psychoria.tistory.com/739