[스프린트 FE] 2주차 실용적 유닉스 커맨드

안지수·2023년 9월 10일
0

😀 유닉스 커맨드 시작하기

❤️ 유닉스 커맨드란?

  • command: 검정색 명령어
  • Command Line (Interface) (CLI): 커맨드 통해서 컴퓨터 사용하는 방식
  • Graphical User Interface (GUI): 화면과 마우스 통해서 컴퓨터 사용하는 방식
    --> 개발을 할 때는 많은 작업을 command line에서 함
    : 라이브러리 다운로드 및 설치, 협업 시 코드 관리, 웹 개발 환경 설정과 서버 실행
    -> 개발자가 되려면 꼭 필요한 스킬
    -> 기본 커맨드부터 시작 ! 유닉스 커맨드부터 시작할 것임

유닉스(Unix)

: sw를 개발하고 실행할 수 있는 편리한 플랫폼
-> 1970년대 초반에 개발된 운영체제
-> 쉽게 수정해서 다른 컴퓨터에 적용할 수 있음
-> 유닉스를 기반으로 하는 다양한 운영체제 등장

  • 유닉스 운영체제
    : 우분투, linux, max os
    -> unix에서 파생되어, 사용하는 커맨드가 모두 비슷 (유닉스 커맨드)
  • 윈도우 운영체제
    -> 윈도우 커맨드
    --> 개발에서는 유닉스 커맨드가 보편적으로 사용됨 (윈도우 컴퓨터더라도)
    -> 배포 과정에서 유닉스 커맨드 사용
    -> 서버 컴퓨터도 보통 유닉스 커맨드

---> 즉, 유닉스는 sw를 개발하고 실행할 수 있는 플랫폼이고, 이를 기반으로 한 운영체제들이 많이 등장하였음. 그리고 명령어를 통해 컴퓨터와 소통을 하게되는데, 유닉스를 사용하는 운영체제에서 주로 사용하는 유닉스 커맨드에 대해서 배울 것임.
즉, 개발자가 유닉스 커맨드 통해서 파일 설치하고, 폴더 관리하고, 협업하고 그런 방법들을 배워볼 것이다.

❤️ 유닉스와 리눅스

  • 유닉스
    : 개발자들이 소프트웨어를 개발하고 실행할 수 있는 편리한 플랫폼. 사람들이 여러 컴퓨터에 사용하기 위해 변형을 시도함. but, 지불해야 했음. POSIX라는 표준이 있었음.

  • 리눅스
    : 유닉스 사용을 위해서는 지불을 해야만 했음. 따라서 유닉스와 코드는 다르지만, 유사한 운영체제를 직접 만들기 시작했고, 무료로 배포되어 사용할 수 있는 유닉스와 유사한 운영체제가 리눅스이다.
    -> Ubuntu 또한, 리눅스를 변형해서 만들어진 것

--> 유닉스라는 좋은 운영체제가 만들어지고, 이걸 자유롭게 번형하고 배포할 수 있는 리눅스가 만들어지면서 프로그래밍 업계에 큰 영향을 미쳤다.

  • macOS
    : Unix - BSD - NeXTStep - macOS 의 순서를 거쳐 탄생한 운영 체제


-> POSIX 표준 인증 절차 거친 운영체제와 인증 절차 거치지 않았지만, 비슷한 운영체제

--> 결론은 !! 리눅스, 우분투, macos등등 모든 운영체제들이 유닉스에서 변형되어진 것이다. 그 중에서도 리눅스는 무료로 배포하기 위한 것. 여기에서 변형된 것이 우분투. 무료 배포가능한 리눅스의 등장 이후, 위와 같은 다양한 운영체제들이 등장함. 즉, 모든 운영체제들이 유닉스에 근간을 두고 있다는 것이다. 따라서 위의 모든 운영체제들이 유닉스 커맨드를 공통으로 사용할 수 있다.

  • WSL ( Windows Subsystem for Linux)
    : 윈도우에서 유닉스 커맨드를 실행하기 위한 툴
    -> max인 경우 이미 유닉스 운영체제이므로 괜찮지만, 윈도우인 경우는 우분투와 같은 유닉스 계열의 운영체제를 설치해야 함
    -> 설치 방법: https://www.codeit.kr/topics/practical-unix-commands/lessons/4893

❤️ 터미널 사용해 보기

: 실제 명령어를 입력하는 검은 창

: 이 부분을 prompt 라고 하고, '%'는 prompt의 끝을 알린다.
-> 이 뒤에 커맨드를 입력하는 것임

터미널, shell, bash의 차이점

  • 터미널: input을 받고, output을 출력해줌 (검은 화면)
  • shell: 커맨드를 해석해주는 프로그램 (컴퓨터는 명령어를 이해하지 못하므로, 컴ㄴ퓨터가 이해할 수 있는 형태로 바꿔서 전달)
  • bash: shell 종류 중 하나. 많은 유닉스 운영 체제에서 기본 shell로 사용됨. 우분투의 기본 쉘.

❤️ 커맨드의 기본 형태

: 커맨드+옵션+아규먼트

  • 아규먼트 (인자): 어디에 대해 커맨드를 적용할지
  • 옵션: 커맨드가 실행될 방식을 정해줌
    : '-'와 함께 작성

    -> 여러 옵션을 사용할 수도 있음

❤️ 커맨드 메뉴얼: man

man+커맨드
: 커맨드에서 사용법에 대한 공식 메뉴얼 제공
<메뉴얼 보는 방법>

  • Name

    : 커맨드 이름과 커맨드가 뭐하는 지
  • SYNOPSIS

    : 쓸 수 있는 옵션과 아규먼트
    -> '[]': 필수가 아닌 옵션이라는 것
  • DESCRIPTION

    : 각 옵션에 대한 설명

--> 필요할 땐, 인터넷 검색!

❤️ 터미널 사용 꿀팁

  • 위쪽 방향키: 이전 커맨드
  • ctrl+A: 커서가 맨 앞으로
  • ctrl+E: 커서가 맨 뒤로
  • ctrl+C: 입력 취소되고, 새로운 prompt
  • clear: 터미널 clear (히스토리는 남아있음)
  • tab: 아규먼트나 옵션 자동완성
    -Alt+방향키: 단어마다 이동

😀 디렉토리와 파일 다루기

❤️ 유닉스 디렉토리 구조와 파일 경로

유닉스 디렉토리 구조
: 트리구조

: root 디렉토리부터 계속 뻗어나감

  • 하위(자식) 디렉토리
  • 상위(부모) 디렉토리
  • 사용자의 홈 디렉토리: 사용자의 개인파일, 각종 문서 등이 담김

파일 경로
: 디렉토리나 폴더의 위치를 문자열로 표기
-> root에서부터의 해당 파일까지의 경로를 써줌.
-> 루트 디렉토리: '/'
-> 현재 사용자의 홈 디렉토리: '~'

❤️ 디렉토리와 파일 둘러보기: pwd, cd, ls

pwd (Print Working Directory)
: 현재 위치의 디렉토리 경로, Working Directory의 경로 알려줌
cd (Change Directory)
: 디렉토리의 위치 변경
-> cd/: 이전 디렉토리로 이동
ls (List)
: 디렉토리 안의 것들 보여줌

❤️ 절대 경로와 상대 경로

절대 경로
: root deriectory를 기준으로 어떤 파일이나 디렉토리의 고유한 경로 표시하는 것

-> 경로가 길어질수록 불편해짐

상대 경로
: 현재 자신이 위치해 있는 디렉토리(Working Directory)를 기준으로
-> 현재 디렉토리: '.'으로 표시
-> 상위 디렉토리: '..'으로 표시
--> './' 없어도 현재의 디렉토리로 인식함
--> 멀리 떨어져있는 디렉토리로 이동할 경우 절대 경로가 더 굳일수도

  • 파일이나 디렉토리의 이름에 공백이 있는 경우
  • '', "", 공백에 \

    -> 하지만 파일이나 디렉토리 이름엔 공백을 잘 사용하지 않는 게 좋다는 것!!

❤️ ls의 중요한 옵션들 (a, l)

  • a옵션 (all의 약자)
    : ls -a
    : 모든 파일과 디렉토리 보여줌

    -> 숨겨진 파일까지 다 보여줌 (확장자는 보여주지 않음)
  • l옵션 (long format)
    : ls -l
    : 파일과 디렉토리에 대한 자세한 정보 제공해줌

❤️ 디렉토리와 파일 만들기: mkdir, touch

  • mkdir: 디렉토리 생성

    -> 한 번에 여러 디렉토리 생성도 가능
  • touch: 파일 생성

    -> 한 번에 여러 파일 생성도 가능

❤️ cli 텍스트 에디터 vim

  • GUI 환경: 워드, VS CODE, PYCHARM, 메모장
  • CLI 환경: Vim
    -> 엄청나게 많은 기능과 다축키
    -> 마우스 없이 키보드로 해결

<vim의 4가지 사용 모드>

1. 일반
2. 입력: 테스트 입력하기 위해서 (i 단축키)
3. 비주얼
4. 명령
-> 처음에는 일반 모드로 실행되고, 단축키 통해서 다른 모드로 이동
-> 일반 모드로 가려면 'esc'키

❤️ vim으로 파일 작성하기

  • yy: 복사 단축키 (커서로 이동)
  • dd: 잘라내기
  • p: 붙여넣기
    -> 따로 외우진 않아도 됨

<파일 저장하고 종료하기>

  • ':': 커맨드 모드로
  • w: 저장
  • q: vim 종료
  • wq: 저장함과 동시에 종료
  • :q!: 수정사항 저장하지 않고 종료

<단축키 정리>

❤️ 파일 내용 살펴보기: cat, less, head, tail

  • cat: 파일 내용 보여줌 (여러 파일을 아규먼트로 줄 수도)
  • less: 파일 내용을 페이지 단위로 나눠서
  • head: 파일의 시작 부분 확인
    -> head -n 5 : 파일의 시작 5줄을 보여줌
  • tail: 파일의 끝 부분 확인

❤️ 디렉토리와 파일 옮기기, 이름 변경하기: mv


-> 이미 존재할 경우, 그곳으로 이동/ 그렇지 않으면 이름 변경

-> Jul 디렉토리를 다시 꺼내옴

  • 파일을 디렉토리 안으로 옮기기

--> mv는 디렉토리나 파일 옮기거나, 이름 변경할 때 쓰이는데, 이미 존재하는 디렉토리이면 이동/ 없으면 이름 변경

❤️ mv 커맨드 사용 시 주의할 점

: 똑같은 파일의 이름이 목적지에 있을 경우 덮어씌움!

❤️ 디렉토리와 파일 복사 붙여넣기: cp


-> 이런 현상을 방지하기 위한 게, i 옵션! 사용자에게 덮어씌울 것인지 아닌지 물어봄

❤️ 디렉토리와 파일 복사 붙여넣기: cp


-> path2가 이미 존재하면 그 곳으로 복사, 그렇지 않으면 그 이름을 가진 파일이나 디렉토리 생성

-> 이미 존재하면 덮어씌우게 되는데, i를 통해 덮어씌울지 사용자에게 물어봄
디렉토리를 복사할 때는 꼭 r 옵션을 써야 함

  • 디렉토리 복사 시에는 r옵션 필요

❤️ 디렉토리와 파일 삭제하기: rm



-> 그냥 디렉토리 삭제하면 오류나므로 r옵션과 함께 써줘야 함 (하위 요소들도 모두 지운다는 뜻)

-> ri옵션을 통해 각 하위요소들과 해당 디렉토리를 모두 다 지울 것인지 확인함

  • f옵션

    : 물어보지 않고 바로 지움 (위와 같이 rf 옵션 같이 자주 씀)

디렉토리를 삭제할 때는 꼭 r 옵션을 써야 함

😀 외부 프로그램 설치하기

: CLI환경에서 커맨드를 통해 외부 프로그램을 설치할 수 있다. 하지만, 환경에 따라 사용하는 커맨드가 달라진다.

  • 우분투에서는 apt라는 커맨드
  • 맥 OS에서는 homebrew라는 커맨드
    -> 운영체제가 같은 유닉스 계열이라고 하더라도, 외부 프로그램을 설치할 때에는 서로 다른 커맨드를 써야한다.

❤️ Ubuntu에서 외부 프로그램 설치하기: apt

  1. 외부 프로그램 설치 전 apt update
    : 인터넷에서 외부 프로그램의 최신 정보 가져옴
    -> 외부 프로그램 설치 전 꼭 해줘야 함

    -> 하지만, 관리자 권한이 아니라 오류가 난다. 관리자 권한을 획득해야 함

  2. sudo apt update

  3. 프로그램 설치

  • mc 프로그램은: 디렉토리와 파일 보여주는 외부 프로그램
  1. 설치한 프로그램 제거

❤️ sudo 커맨드

: 잠시 관리자 권한을 획득하기 위한 커맨드
-> 특히, 설치 작업을 할 때 필요한 경우가 많음

😀 윈도우 유저를 위한 커맨드라인 팁

❤️ WSL로 윈도우에 있는 파일 접근하기

윈도우 파일은 '/mnt/c'에 존재!
: wsl은 위에서 말했듯, 윈도우에서 유닉스 커맨드를 사용하기 위한 툴로, wsl는 윈도우 안에 존재하는 '하위 시스템'이므로 리눅스 환경에서 윈도우 파일에 쉽게 접근할 수 있다.
-> 가상 머신이나 듀얼 부팅인 경우에는 별도의 리눅스 환경이 세팅되는 것이므로 윈도우 파일에 접근이 어렵다.

❤️ 윈도우 PowerShell 알아보기

https://www.codeit.kr/topics/practical-unix-commands/lessons/4925
-> 위의 링크에 powershell 사용법에 대한 내용이 있다.

  • powershell: 윈도우 전용 커맨드라인 툴
    -> 시스템 관리, 자동화, 개발 등 다양한 작업 할 수 있음

    -> cmdlet: 동작과 대상 사이에 '-'

  • cmd (Command Prompt) : 윈도우 전용 커맨드라인 툴
    -> powershell에 비해 기능이 적다.

⭕ 정리

: 컴퓨터에서 코드를 통해 명령을 실행하는 것이 cli환경이다. 그런데 대부분 많은 운영체제가 유닉스에 기반을 두고 있어 유닉스 커맨드 라인을 사용한다. 그래서 이 시간에는 다양한 커맨드들에 대해서 배워보았다. 특히 디렉토리나 파일과 관련된 커맨드들에 대해서 배워보았다. 파일 경로들에 대해서도 익혔다. 커맨드+옵션+아규먼트 구성으로 되어있고 커맨드들로는 ls(현재 파일의 정보),pwd, cd, mkdir, rm, cp, mv(디렉토리는 무조건 -r옵션과 함께), vim(작성) 등이 있다. 그래서 각 커맨드들의 사용 방법에 대해서 익혀보았다. 그리고 마지막으로 윈도우의 커맨드라인 툴인 powershell에 대해서 알아보았다. 유닉스 커맨드 라인이랑은 조금 차이가 있다. 위의 명령어들을 모두 외울 필요는 없지만 필요할 때 찾아서 쓰면된다.

profile
지수의 취준, 개발일기

0개의 댓글

관련 채용 정보