Post

가짜연구소 9기 “AI를 잘 활용하는 개발자로 성장하기” 프로젝트에 참여하여 Datacamp의 “Machine Learning Engineer” 강의를 수강하고 해당 내용을 정리한 게시글입니다. Datacamp Machine Learning 코스 페이지

이전까지의 강의들은 동영상 강의 + 연습문제 형태로 구성되었는데, 이번에는 모든 챕터가 Linux 관련 명령어 연습 문제로만 구성되어있다는 점이 독특했습니다.

직접 쉘에서 작업 하듯이 CLI와 유사한 UI에서 명령어를 입력하는 식인데, 강의로 보고 넘기는 것 보다 직접 명령어를 입력하면서 익히니까 훨씬 더 기억에 잘 남는 것 같습니다.

이번에는 간단하게 기존에 잘 사용하지 않아서 몰랐던 명령어나, 중요한 것 같은 내용만 간단히 정리하려고 합니다.

리눅스 셸 명령어

  • pwd (print working directory) : 현재 위치한 디렉토리 출력
  • less : cat과 유사하게 파일의 내용을 출력하지만, 페이지 단위로 탐색할 수 있는 pager 제공
    • :n - 다음 페이지 이동
    • :p - 이전 페이지 이동
    • :q - pager 나가기
    • 터미널 세션을 채우는 cat과 달리 pager를 나가면 이전 내용이 그대로 보인다는 장점이 있다
  • man (manual) : 입력한 명령어의 매뉴얼을 출력
    • 문법, 사용가능한 옵션 등을 확인 가능
  • cut : 파일의 내용을 구분자로 구분하여 column 단위 탐색 가능
    • csv와 같은 파일을 쉘에서 탐색할 수 있음
  • history : 지금까지 입력한 명령어를 출력
    • history로 확인하고 !<번호>, !<명령어> 등을 통해 이전에 실행한 명령을 재사용 가능
  • grep <PATTERNS> <FILES> : 파일, 출력 결과 등에서 패턴과 일치하는 줄의 내용만을 골라 출력
    • 복잡한 규칙, 시각화를 위한 다양한 옵션 제공 (man 참조)
  • sort : 출력 결과를 정렬
  • uniq : 출력 결과 중 인접한 중복 출력을 삭제
    • 인접하지 않은 중복은 삭제하지 않기 때문에, 주로 sort를 함께 사용해 중복을 인접하게 만든 뒤 사용
    • ex) cut -d , -f 2 seasonal/winter.csv | grep -v Tooth | sort | uniq
  • wc (world count) : 글자 수, 단어 수, 라인 수를 순서대로 출력
    • 각각 -c, -w, -l로 한 종류만 출력하는 것도 가능

리눅스 셸 특수 기호

와일드 카드

값을 알 수 없는 불특정 문자를 나타내는 기호로, 패턴 매칭에 주로 사용

  • *: 임의의 개수의 문자와 일치
    • 예: head -n 3 seasonal/s*.
  • ?: 단일 문자와 일치
  • []: 대괄호 안의 문자 중 하나와 일치
  • ![]: 대괄호 안의 문자들을 제외
  • {}: 중괄호 안의 콤마로 구분된 패턴 중 하나와 일치

파이프라인 기호

  • > : 왼쪽(명령어)의 출력 결과를 오른쪽(파일)에 저장
  • | : 왼쪽(명령어)의 출력 결과를 오른쪽(명령어)의 입력으로 사용
    • -d , -f 2 seasonal/summer.csv | grep -v Tooth

리눅스 변수와 반복문

변수

리눅스에는 시스템을 제어하기 위해 다양한 환경 변수가 저장되어있어 전역 변수처럼 사용 가능

  • set : 등록된 모든 환경 변수와 시스템 함수를 검색
  • export : 등록된 환경 변수만 검색
  • 환경 변수 외에 = 기호를 이용하여 로컬 변수를 정의하여 사용할 수 있음

환경 변수, 로컬 변수를 불러와서 사용하려면 $를 변수명 앞에 붙여서 호출 가능

반복문

  • for ...variable... in ...list... ; do ...body ; done 문법으로 반복문 사용
  • ex) for filetype in docx odt pdf ; do echo $filetype ; done
  • 반복문은 셸 스크립트에서도 사용이 가능하며, 이 경우 세미콜론 대신 줄바꿈으로 구분할 수 있음

셸 스크립트

  • 명령어 모음을 텍스트 파일로 저장한 뒤 bash 명령어와 함께 호출하여 내부의 명령을 순차적으로 실행 가능
  • bash 명령어와 함께 인자를 전달하면, 내부에서 변수처럼 사용 가능
    • $@ : 스크립트에 인자로 제공된 모든 파라미터를 지칭하는 기호
    • $$ 1, ` $$ 2` .. 으로 n번째 파라미터를 지정 가능

nano 편집기

리눅스는 기본적으로 nano라는 텍스트 편집기를 제공하기 때문에 편한 단축키 몇 개를 알아 두는 것이 좋다.

  • Ctrl+K : 줄 삭제
  • Ctrl+U : 줄 삭제 취소
    • 줄 삭제와 조합하여 잘라내기 처럼 사용 가능 (한 줄 삭제 후 두번 취소하면 붙여넣기)
  • Ctrl+O : 파일 저장 (파일명을 지정하는 과정이 있음)
  • Ctrl+X : 파일 나가기

소감

알게 된 점

  • Ubuntu를 사용하면서 그냥 간단한 이동, 파일 복사와 같은 기능만 사용했는데, 파이프라인과 같은 비교적 복잡한 명령어를 사용하면서 다양한 파일 처리 방법을 알게 되었습니다.
  • man을 통해 모르는 명령어를 바로바로 배울 수 있다는 것을 알게 되었습니다.

느낀점

  • 아무 생각없이 치던 명령어들인데 어떤 단어의 약자인지를 알게 되서 더 기억하기 쉬워진 것 같습니다.
  • 명령어를 생각없이 치거나 복붙 하다가 오류를 내는 경우가 많았는데, 조금 더 문법과 친숙해져야겠다는 것을 느꼈습니다.
This post is licensed under CC BY 4.0 by the author.