해당 내용은 Datacamp의 Data engineering track을 정리했습니다.
해당 강의는 실습 위주로 구성되어 챕터를 나누지 않고 한 파일에 작성했습니다.
해당 포스팅에는 아래의 내용을 포함하고 있습니다.
- shell을 다룰 때 활용하는 기본적인 내용
1. Manipulating files and directories
Shell과 파일탐색기는 모두 명령을 위한 인터페이스입니다. Shell은 command-line을 통해 원하는 명령을 입력하고, 파일탐색기는 UI를 활용해서 명령을 입력합니다. 이번 강의에서는 기본적으로 command-line을 다루는 명령어에 대해서 배웁니다.
명령어 | 설명 | 활용방법 |
pwd | 현재 위치한 폴더를 확인 | pwd |
ls | 현재 위치한 폴더의 파일 확인 | ls |
ls 특정 경로 | 특정 경로의 파일 확인(특정 경로는 절대경로, 상대경로 모두 가능) | ls seasonal/*.csv |
cd 특정 경로 | 현재 위치한 경로에서 특정경로로 변경 | cd seasonal |
~ | HOME 디렉토리 | |
.. | 현재 디렉토리 기준 상위 디렉토리 | |
. | 현재 디렉토리 | |
cp | 파일을 복사하기(A파일을 B파일에 복사) | cp A파일 B파일 |
mv | 파일 옮기기(A파일을 B위치로 이동, 여러가지도 가능) | mv A파일 B경로 |
rm | 파일 제거하기 | rm 파일명 |
rm -r | 디렉토리 제거(폴더 내부에 파일이 들어있을 때도 가능) | rm -r 디렉토리 |
rmdir | 디렉토리 제거(폴더 내부가 비어있을 때만 동작) | rmdir 디렉토리 |
mkdir | 디렉토리 생성 | mkdir 폴더명 |
2. Manipulating data
이번 강의에서는 파일을 수정하고, 조회하는 명령어를 소개합니다.
명령어 | 설명 | 활용방법 |
cat | 파일 내용을 확인(여러 파일을 불러올 때, 구분하기 어려움) | cat 파일명 |
more | 파일 내용을 확인(여러 파일을 불러올 때, 파일 구분이 되어있음) | more A파일 B파일 |
less | 파일 내용을 확인(여러 파일을 불러올 때, 파일 별로 조회 가능) | less A파일 B파일 |
:n | less로 파일들을 불러왔을 때, 다음 파일로 넘어갈 때 활용 | |
:q | less로 파일들을 불러왔을 때, command-line으로 돌아가기 | |
head | 불러온 파일의 상단 n개를 출력 | head -n 1 파일명 |
tail | 불러온 파일의 하단 n개를 출력 | tail -n 1 파일명 |
ls -R | 디렉토리 하위폴더 모두 확인 | ls -R |
ls -R -F | 디렉토리 하위폴더 확인할 때 '/'를 표현 | ls -R -F |
man | 명령어의 사용법을 확인 | man head |
cut | 파일의 column 골라오기 | cut -d(구분자) , -f(column) 2-3 파일명 |
history | 지금까지 실행한 명령어 목록 확인 | history |
!명령어 | 가장 최근에 특정 명령어를 사용한 command 실행 | !head |
!1 | history 상의 1에 해당하는 command 실행 | |
grep | 파일 내에 특정값이 포함된 행을 출력 | grep 단어 파일명 |
paste | 여러가지의 문서를 하나로 합치는 명령어 | paste A파일 B파일 |
3. Combining tools
출력된 결과를 저장하거나 개수를 카운팅하고, 알파벳 순으로 정렬하는 등의 명령어들을 소개합니다.
명령어 | 설명 | 활용방법 |
| | command-line을 여러개 실행할 때, 사용가능 | head -n 5 파일명 | tail -n 1 |
wc | word가 포함된 word의 개수(-c) or 행의 수(-l) 출력 | wc -c Tooth seasonal/* |
sort | 출력 결과를 a-z순으로 정렬(역순 : -r) | sort -r |
uniq | 출력 결과의 고유값만 출력(개수 표시 : -c) | uniq -c |
> | 출력 결과를 저장 (맨 앞 or 맨 뒤에 가능) | head -n 5 파일명 > 저장할 파일명 |
ctrl + c | 실행 중지 |
4. Batch processing
Shell에는 기본적으로 환경변수를 저장할 수 있습니다. 위에서 언급했던 HOME도 이미 저장된 변수입니다. 이러한 변수 중에는 "PWD", "SHELL", "USER"도 포함되어 있습니다. 만약 현재의 환경변수들이 궁금하다면, set 명령어를 통해 확인 가능합니다.
명령어 | 설명 | 활용방법 |
echo | 환경변수 값 확인 | echo $변수명 |
= | 환경변수에 값을 할당 | training=seasonal/*.csv |
동일한 command를 여러번 실행할 때에는 for 문을 활용할 수 있습니다.
for variable in list; do body; done
list에는 여러 파일명(seasonal/*.csv도 가능)이 들어갈 수 있고, 주어진 값들은 variable로 저장되어 body를 실행하게 됩니다. 만약 variable의 변수가 궁금하다면, echo $variable로 확인할 수 있습니다. body에는 여러개의 명령어가 들어갈 수 있으며, 이 때에는 ;로 구분해주면 됩니다.
5. Creating new tools
파일을 수정하거나, shell script를 실행하고 실행한 명령어들을 저장하는 방법에 대해서 소개합니다.
명령어 | 설명 | 활용방법 |
nano | 파일 수정 | nano 파일명 |
bash | 주어진 쉘 스크립트 실행 | bash 파일명.sh |
만약 주어진 쉘 스크립트에 변수가 입력되어야 한다면 $@나 $1, $2 등을 활용해서 입력해 줄 수 있습니다.
head -n 5 seasonal/autumn.csv > new.csv
# autumn.sh
head -n $2 $1 > $3
# command-line $1, $2, $3 순으로 입력
bash autumn.sh seasonal/autumn.csv 5 new.csv