가짜연구소 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로 확인하고
!<번호>
,!<명령어>
등을 통해 이전에 실행한 명령을 재사용 가능
- 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.