[Linux] Linux 간단 정리
프로그래밍을 하다보면, 특히 서버와 관련된 직군이나 서버에서 작업을 한다면 Linux 를 많이 사용한다. Linux 에서 사용할 수 있는 명령어를 알아두면 써먹을 곳이 많다. 정리해보자.
Linux
- 리눅스는 서버에서 자주 사용하는 OS 중 하나다. 또한 무료의 오픈소스로 여러 버전이 존재하고, 새로운 버전을 만들 수도 있다(어렵지만). 참고로 Mac OS 나 윈도우는 유료다.
- Unix 계열로 안정성(stability), 신뢰성(reliability) 이 보장된다.
- 쉘 커맨드나 쉘 스크립트를 동작시킬 수 있다.
- CLI(command line interface)는 text 로 사용하고, GUI(grahpic user interface) 는 클릭으로 사용한다.
- 리눅스 배포판은 엄청나게 많다. 따라서 개발하려는 목적에 따라서 어떤 리눅스 배포 버전이 맞을지 찾아볼 수 있다.
- Debian : 온라인 커뮤니티에서 제작해 배포한 리눅스
- Ubuntu : 영국의 캐노니컬이라는 회사에서 만든 배포판. 쉽고 편한 설치로 초보자들이 쉽게 접근할 수 있다.
- Redhat : 레드햇이라는 회사에서 배포한 리눅스
- CentOS : 레드햇이 공개한 버전을 가져와서 브랜드와 로고를 제거하고 배포한 버전
- 보통은 ubuntu 로 처음 시작하기를 권한다.
- 또한 리눅스, 쉘 스크립트를 학습할 때는, 처음에는 자주 사용하는 쉘 커맨드나 쉘 스크립트 위주로 학습하는 것이 좋다. 필요한 코드가 있는 경우 검색해보면 어렵지 않게 찾아볼 수 있다.
- 배경 지식이 필요한 경우 CS 중 운영체제(OS) 를 학습해볼 수 있다.(아마도 리눅스 커널 배경지식이 필요할 수도 있다.)
- 리눅스를 사용할 수 있는 방법은 virtualbox 에서 리눅스를 설치하거나 docker, 윈도우면 WSL 로 설치할 수 있다. notebook 에서 터미널을 통해 실행할 수 있고, vscode 에서도 터미널을 통해 실행할 수 있다.
- OS 별로 같은 기능일지라도 명령어가 다를 수 있는데 보통은 비슷한 범주에서 이뤄진다.
Shell Command
- 쉘 커맨드는 여러가지가 있다. 직접 타이핑 해보면서 어떤 식으로 동작하는지를 확인해보자.
- 쉘(Shell) 이란 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램이다. 터미널 환경을 사용해서 작업을 했다면 쉘에서 동작했다고 볼 수 있다.
- 터미널/콘솔은 쉘을 실행하기 위해 문자 입력을 받아 컴퓨터에 전달한다. 또한 프로그램의 출력을 화면에 작성한다.
- 쉘 종류도 여러가지가 있다.
sh
: 최초의 쉘bash
: Linux 표준 쉘zsh
: Mac 카탈리나 이후 버전부터 OS 기본 쉘
- 쉘 UX
- 아래 그림을 보면
username@hostname:current_folder
와 같이 나와있다. -
hostname 은 컴퓨터 네트워크에 접속된 장치에 할당된 이름이며 IP 대신 기억하기 쉬운 글자로 저장되어 있다. 즉 host 는 내 컴퓨터를 의미한다.
- 여기서 폴더를 이동하면
~
이 바뀌게 된다.
- 아래 그림을 보면
- 쉘을 사용하는 경우는 아래와 같다.
- 서버에서 접속해서 사용하는 경우
crontab
등 리눅스의 내장 기능을 활용하는 경우- 데이터 전처리를 위해 쉘 커맨드를 사용할 수 있다. 쉘 커맨드를 이용하면 좀 더 빨리 진행할 수 있고, 파일이 떨어져 있을 때 별도의 python 을 설치하지 않아도 된다.
- docker 를 사용하는 경우
- 수백대의 서버를 같이 관리하는 경우
- 주피터 노트북의 cell 앞에
!
를 붙이면 쉘 커맨드가 사용된다. - 터미널에서
python3
,jupyter notebook
이렇게 입력한 것도 쉘 커맨드다. - Test code 실행
- 배포 파이프라인를 실행
기본 명령어
man
- mannual 의 약자
- 쉘 커맨드에서 어떤 키워드에 대해서 궁금할 때, 즉 쉘 커맨드의 매뉴얼 문서를 보고싶은 경우에 사용한다.
-
man brew
:q
를 입력하면 종료된다.—help
를 뒤에 붙히는 것과 비슷한 기능을 한다.
mkdir
- Make Directory 준말로, 폴더를 생성하는 명령어다.
mkdir linux-test
ls
- List Segments 의 준말로 현재 접근한 폴더 내의 파일을 확인한다.
ls
뒤에 아무것도 작성하지 않으면 현재 폴더를 기준으로 실행한다. 만약 폴더를 작성하면 해당 폴더 기준에서 실행한다.- 옵션은 아래와 같다.
-a
:.
으로 시작하는 파일, 폴더를 포함해서 전체 파일 출력 (all)-l
: Permission, 소유자, 만든 날짜, 용량까지 출력-h
: 용량을 사람이 알기 쉽도록 GB, MB 등 표현.-l
과 같이 사용
-
ex.
ls ~
ls
ls -al
ls -lh
pwd
-
Print Working Directory 의 준말로 현재의 폴더 경로를 절대 경로로 보여준다.
-
현재 이 코드가 어디서 실행되는가를 확인할 때 사용한다.
-
cd
- Change Directory 의 준말로 폴더 변경하기, 특정 폴더로 이동하기의 기능을 한다.
cd linux-test
echo
- Python 의
print
처럼 터미널에 텍스트를 출력한다. ex.echo “hi”
echo (backtick)쉘 커맨드(backtick)
을 입력 시 backtick(`) 으로 감싸진 쉘 커맨드의 결과를 출력한다.-
아래 그림을 보면 backtick 으로 감쌌기 때문에 문자열 pwd 로 인식하는 것이 아니라 pwd 를 쉘에서 입력하고 그 결과가 반환된다.
- Python 의
cp
- 파일 또는 폴더를 복사한다.
cp vi-test.sh vi-test2.sh
에서 앞에 있는 파일이 뒤 이름의 파일로 복사된다.- 옵션은 아래와 같다.
-r
: 디렉토리를 복사할 때 디렉토리 안에 파일이 있으면 recursive(재귀적)으로 모두 복사한다. 이 옵션을 주지 않으면 디렉토리 안에 파일이 있다고 에러를 뱉는다.-f
: 복사할 때 강제로 실행한다.
vi
- vim 편집기로 파일을 생성한다. INSERT 모드에서만 수정할 수 있다.
vi vi-test.sh
와 같이 실행하면, 새로운 창이 뜨고i
를 눌러서 INSERT 모드로 변경할 수 있다. 그 후echo “hi”
를 작성해보자.- ESC 를 누른 후
:wq
를 입력하는 것은 write and quit 을 의미하며 저장하고 나가기 명령어이다. - 만약 ESC
:wq!
로!
를 같이 입력하면 강제로 저장하고 나오게 된다. - ESC
:q
는 저장하지 않고 그냥 나간다. - 이렇게 만들어진
.sh
파일을sh vi-test.sh
로 실행할 수 있다. - vi 편집기의 Mode 는 아래와 같다.
- command mode 는 vi 실행시 기본 모드다. 방향키를 통해 커서를 이동할 수 있다. 아래는 해당 모드에서 사용할 수 있는 명령어다.
dd
: 현재 위치한 한 줄 삭제i
: INSERT 모드로 변경x
: 커서가 위치한 곳의 글자 1개 삭제.5x
는 문자 5개 삭제,7x
는 문자 7개 삭제yy
: 현재 줄을 복사(1 줄을 ctrl c 한 것과 같다.)p
: 현재 커서가 있는 줄 바로 아래에 붙여넣기k
: 커서 위로j
: 커서 아래로l
: 커서 오른쪽으로h
: 커서 왼쪽으로- vi 편집기로 들어가서 수정해야 하는 경우도 현업에서 종종 있다. 따라서 이 커맨드 모드에 대해서 알게 되면 좋다.
- insert mode 는 문자를 추가하거나 입력할 수 있는 모드다. 즉 파일을 수정할 수 있는 모드다.
- INSERT 모드 상태에서 커맨드 모드로 이동하고 싶다면 ESC 를 입력하면 된다.
- last line mode
- ESC 를 누른 후 콜론(:) 을 누르면 나오는 모드다. 아래의 명령어를 입력할 수 있다.
w
: 현재 파일명으로 저장q
: vi 종료 (저장되지 않음)q!
: vi 강제 종료 (! 는 강제를 의미)wq
: 저장후 종료/문자
: 문자 탐색 → 탐색한 후n
을 누르면 계속 탐색 실행set nu
: vi 라인 번호 출력
- command mode 는 vi 실행시 기본 모드다. 방향키를 통해 커서를 이동할 수 있다. 아래는 해당 모드에서 사용할 수 있는 명령어다.
bash
- 쉘 스크립트(
.sh
)를 실행하는 명령어다. 그냥sh
도 가능하지만 bash 쉘로 실행하는 차이가 있다. bash vi-test.sh
-
앞에서 작성한 “hi” 가 출력된다.
- 참고로 터미널에서 Tab 을 누르면 자동완성된다. 그러나 지원하지 않는 쉘도 존재한다. zsh 나 bash 는 지원한다.
- 쉘 스크립트(
sudo
- 관리자 권한으로 실행하고 싶은 경우 커맨드 앞에
sudo
를 붙이면 된다. sudo 명령어
는 최고 권한을 가진 슈퍼 유저로 프로그램을 실행하는 것이다.- superuser do 에서 유래했지만 최근에는 substitute user do (다른 사용자의 권한으로 실행) 의 줄임말로 해석한다.
- 이 때 문제점은
sudo rm-rf /
와 같이 root 를 모두 삭제하겠다는 명령어가 무의식적으로 실행될 수도 있다는 점이다. 따라서 sudo 는 함부로 사용하면 안된다. 특히 삭제를 의미하는rm
과 같은 명령어랑 같이 쓸 때는 매우 주의해야 한다.
- 관리자 권한으로 실행하고 싶은 경우 커맨드 앞에
mv
- Move 를 뜻하며 파일, 폴더 이동 명령어다. 또는 이름을 바꿀 때도 활용한다.
mv vi-test.sh vi-test3.sh
- 앞에 이름에서 뒤의 이름으로 변경된다.
cat
- concatenate 를 뜻하며 특정 파일의 내용을 출력한다.
cat vi-test.sh
cat vi-test2.sh vi-test3.sh
처럼 특정 파일의 내용 출력을 넘어서 여러 파일을 인자로 주면 합쳐서(CONCAT) 출력한다.- 또한 여러 합쳐진 파일을 덮어쓰기로 새로운 파일에 저장하고(OVERWRITE,
>
) 싶은 경우에는cat vi-test2.sh vi-test3.sh > new_test.sh
이와 같이 사용할 수 있다. - 파일에 추가(APPEND) 하고 싶은 경우는
cat vi-test.sh vi-test3.sh >> new_test.sh
로 할 수 있다. 만약 존재하지 않는 파일에 APPEND(>>
) 하면 새로 파일이 생김. >
와>>
를 헷갈리면 또 큰일날 수 있다. 덮어쓰기가 될 수 있기 때문이다.
clear
- 터미널 창을 깨끗하게 만든다.
history
- 최근에 입력한 쉘 커맨드 history 를 출력한다.
- history 결과에서 느낌표를 붙이고 숫자를 입력하면, 그 커맨드를 다시 활용할 수 있다. 즉 긴 명령어인 경우 다시 커맨드를 칠 필요가 없다는 것이다.
find
- 파일 및 디렉토리를 검색할 때 사용한다.
find . -name “File”
는 현재 폴더(.) 에서 File 이란 이름을 가지는 파일 및 디렉토리 검색한다.- 어떤 파일이 있는지 확인하고 싶을 때 GUI 에서 검색하는데, 서버에서 검색한다면
find
명령어 혹은grep
명령어를 사용하면 편하다.
export
-
환경 변수를 설정하는 명령어다.
export water=”물”
와 같이 입력하고echo $water
를 입력하면 “물” 이 나온다. - 쉘에서 띄어쓰기는 쓰지 않는다. 즉 붙여서 써야 한다.
export
로 환경 변수를 설정한 경우, 터미널이 꺼지면 사라지게 된다. 만약 매번 쉘을 실행할 때마다 사용할 수 있는 환경 변수를 저장하고 싶으면 사용하는 쉘에 따라.bashrc
또는.zshrc
에 저장하면 된다.- Linux 에서는
vi ~/.bashrc
또는vi ~/.zshrc
로 vim 편집기를 켜 환경 변수를 입력하고 저장한다. 즉 제일 하단에export water=”물”
을 입력하고 ESC +:wq
로 저장할 수 있다. - 그 후 최초에는
source ~/.bashrc
또는source ~/.zshrc
를 통해 Linux 환경 설정을 재로그인하지 않고 즉시 적용하고 싶은 경우source
사용한다. - 터미널, 쉘을 닫은 후에 다시 켜도
~/.bashrc
또는~/.zshrc
가 실행되기 때문에 export 를 기억한다. 말하자면source
로 설정파일에 넣는 것이다.
-
alias
-
터미널에서
alias
라고 치면 현재 별칭으로 설정된 것을 볼 수 있다. - alias 는 기본 명령어를 간단히 줄일 수 있는 기능을 한다. 예시로,
ll
은ls -l
의 별칭으로 지정되어 있다. alias ll2=”ls -l”
하면 alias 가 설정된다. 즉ll2
를 입력하면ls -l
이 동작되는 것으로, 잘 활용하면 효율적인 퍼포먼스가 가능하다.
-
- 여기까지 커맨드들은 일반적인 커맨드들이다. 일상처럼 사용할 수 있도록 연습하면 좋다! 이후 아래의 명령어들은 선택적이지만 아는 것이 현업에서 전제되어 있다.
tree
- Linux 의 특정 버전에서는 설치가 안되어 있을 수 있다.
tree
를 설치하면 좋은 점은 폴더의 하위 구조를 계층적으로 표현해준다. 이는 프로젝트를 소개할 때 구조를 설명하기에 유용하다.tree -L 레벨
tree -L 1
: 1단계까지 보여주기tree -L 2
: 2단계까지 보여주기
tree -o “file name”
하면 stdout 이 아니라 파일로 저장된다.- stdout 은 표준 출력으로, stdin, stdout, stderr 에 대해 잘 정리된 이 글을 참고하자.
head
,tail
- 파일의 앞/뒤 n 행을 출력한다.
head -n 3 vi-test.sh
cat
의 단점은 전체를 프린트해서 보여준다는 점이다. 즉 엄청 긴 파일이 있으면 문제된다.- 그럴 때는 앞에 몇 개만 확인하고 싶을 수 있는데, 그럴 때
head
혹은tail
을 쓴다.
sort
- 행 단위로 정렬하는 명령어다. 옵션은 아래와 같다.
-r
: 정렬을 내림차순으로 정렬(Default 옵션 : 오름차순)-n
: Numeric Sort-
아래와 같이
vi fruits.txt
를:wq
로 저장하고 입력해보자. cat fruits.txt | sort
나cat fruits.txt | sort -r
와 같이 사용할 수 있다.
uniq
- 중복된 행이 연속으로 있는 경우 중복을 제거한다. 보통
sort
와 함께 사용한다. 왜냐하면 “연속”으로 있어야 하기 때문에 그냥 쓰면 중복 제거가 안되고 정렬 후 중복을 제거해야 하기 때문이다. -c
옵션은 중복 행의 개수를 출력한다.cat fruits.txt | uniq
는 연속으로 있는 경우에만 중복이 제거 되기 때문에 진정한 중복 제거가 안된다.-
cat fruits.txt | sort | uniq
와 같이sort
를 파이프(|
) 와 함께 주고uniq
를 주면 중복이 제거된다. - 중복을 제거했을 때 몇 개가 나오는지를 보기 위해
cat fruits.txt | uniq | wc -l
와 같이 입력할 수 있다.wc -l
은 라인이 몇 개 있는지 카운트 하는 명령어다. -
cat fruits. txt | sort | uniq | wc -l
와 같이 입력하면 아래와 같다.
- 중복된 행이 연속으로 있는 경우 중복을 제거한다. 보통
grep
- 파일에 주어진 패턴 목록과 매칭되는 라인을 검색하는 명령어다. 파일 안에 무엇이 있는지 확인하고 싶을 때 사용한다.
- 또한
ls
,find
등과 같이 stdout 을 대상으로도 사용할 수 있다. 즉,grep
은 정말 많이 사용하는 명령어다. - 또한
grep
은 뒤에서 나올 pipe (|
) 와 같이 많이 사용한다. grep 옵션 패턴 파일명
과 같은 형태로 사용한다. 옵션은 아래와 같다.-i
: insensitively 하게, 대소문자 구별 없이 찾기-w
: 정확히 그 단어만 찾기-v
: 특정 패턴 제외한 결과 출력-E
: 정규 표현식 사용
- 정규 표현식 패턴
^단어
: 단어로 시작하는 것 찾기단어$
: 단어로 끝나는 것 찾기.
: 하나의 문자 매칭
cut
- 파일에서 특정 필드를 추출한다. csv 파일은 쉼표 단위로 파일이 나타나는데, 이것을 잘라내고 싶을 때 사용할 수 있다.
- 옵션은 아래와 같다.
-f
: 잘라낼 필드 지정-d
: 필드를 구분하는 구분자. Default는 ₩t (탭)
-
cat cut_file | cut -d : -f 1,7
- 표준 스트림(stream)
- unix 에서 동작하는 프로그램은 커맨드 실행 시 3 개의 stream 이 생성된다.
- stdin : 0 으로 표현. 입력(비밀번호, 커맨드 등)
- stdout : 1 로 표현. 출력 값(터미널에 나오는 값)
-
stderr : 2 로 표현. 디버깅 정보나 에러 출력
- Redirection
- 프로그램의 출력(stdout)을 다른 파일이나 스트림으로 전달하는 것을 의미한다.
>
는 덮어쓰기(Overwrite)를 의미한다. 파일이 없으면 생성하고 저장하게 된다.>>
는 맨 아래에 추가하기(Append)를 의미한다.echo “hi” > vi-test3.sh
echo “hello” >> vi-test3.sh
- Pipe(
|
)- 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우에 사용한다.
- A 의 output 을 B 의 input 으로 사용하는 것처럼, 파이프를 이용해서 다양한 커맨드 조합이 가능하다.
- 현재 폴더에 있는 파일 명 중 vi 가 들어간 단어를 찾고 싶은 경우는
ls | grep “vi”
와 같이 입력할 수 있다. 즉grep “vi”
으로 vi 와 같은 특정 단어를 찾는 것이다. - 찾은 결과를 ouput.txt 에 저장하고 싶은 경우는
ls | grep “vi” > ouput.txt
와 같이 입력할 수 있다. - 최근 입력한 커맨드 중 echo 가 들어간 명령어를 찾고 싶은 경우는
history | grep “echo”
로 찾을 수 있다. 이후!숫자
를 입력하면 그 커맨드를 또 사용 가능하다.
서버에서 자주 사용하는 쉘 커맨드
ps
- Process Status 의 준말로 현재 실행되고 있는 프로세스를 출력한다.
- 자주 사용하는 옵션은 아래와 같다.
-e
: 모든 프로세스-f
: Full Format 으로 자세히 보여준다.ps -ef
와 같이 옵션을 붙여 쓴다.
- 출력 중 PID 는 process id 를 뜻한다.
curl
- Client URL 의 준말로 command line 기반의 data transfer 커맨드다.
- request 를 테스트할 수 있는 명령어다. 즉 웹 서버를 작성한 후 요청이 제대로 실행되는지 확인할 수 있다.
curl -X localhost:5000/ {data}
와 같이 입력하면localhost:5000
에서 반응이 올 것이다.- 이 테스트를 통해서 어떤 request 에서 어떤 response 가 오는지를 확인할 수 있다.
curl
외에 더 가독성있게 출력되는httpie
도 있다. 회사에서는 서버에 쉘 커맨드로 요청을 날리고 싶을 때Postman
이라는 것도 활용한다.
df
- Disk Free 의 준말로 현재 사용중인 디스크 용량을 확인하는 명령어다.
-
-h
옵션을 통해 아래와 같이 사람이 읽기 쉬운 형태로 출력할 수 있다.
scp
- Secure Copy 의 준말로 SSH 를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어다. 즉 remote file copy program 이다.
- 옵션은 아래와 같다.
-r
: 재귀적으로 복사-P
: ssh 포트 지정-i
: SSH 설정을 활용해서 실행
- 만약 local 에서 remote 로 파일을 보낼 때는
scp local_path user@ip:remote_directory
로 할 수 있다. - remote 에서 local 일 때는
scp user@ip:remote_directory local_path
로 가능하다. - remote 에서 remote 로도 가능하다.
scp user@ip:remote_directory user2@ip2:target_remote_directory
nohup
- 터미널 종료 후에도 계속 작업이 유지되도록 백그라운드에서 실행하는 명령어다. 단 서버는 반드시 켜져 있어야 한다.
nohup python3 app.py &
로 사용할 수 있다.&
를 프로그램 실행 시에 명령어 맨 끝에 붙여주면 해당 프로그램이 백그라운드로 실행된다.nohup
은 프로그램을 데몬의 형태로 실행시키는 것이기 때문에 로그아웃으로 세션이 종료되더라도 프로그램이 종료되지 않는다.- 그러나
&
실행은 단지 프로그램을 사용자 눈에 보이지 않는 백그라운드 형태로 돌리고 있는 것이기 때문에 로그아웃으로 세션과 연결이 끊어지면 실행되고 있던 프로그램도 함께 종료된다. - 언젠가부터
&
로 돌리더라도nohup
과 동일하게 세션이 끊어져도 프로그램이 종료되지 않는 옵션이 디폴트로 적용되었기 때문에, 두 명령어의 동작이 유사하게 보인다. 만약 어떤 프로그램을 종료 없이 백그라운드에서 실행시키고 싶다면 그냥 위와 같이 조합해서 쓰는게 제일 확실하고 안전한 방법이다.
- 주의할 점은
nohup
으로 실행될 파일은 Permission 이 755 여야 한다.- 755 에 대해서는 아래의
chmod
를 참고하자.
- 755 에 대해서는 아래의
- 종료는
ps ef | grep app.py
를 통해 PID(process ID)를 찾은 후kill -9 PID
로 프로세스를 kill 해줘야 한다. - 로그는
nohup
을 실행시킨 경로에 nohup.out 에 저장된다. nohup 외에 screen 이란 도구도 있다.- 만약
nohup
의 표준출력을 다른 파일에 쓰고 싶다면nohup python3 app.py > nohup_script.out &
과 같이 Redirection 을 통해 가능하다. - 표준출력(1)과 표준에러(2)를 다른 파일에 쓰고 싶다면,
nohup python3 app.py 1 > nohup_script.out 2 > nohup_script.err &
를 실행시키면 된다.
- 만약
chmod
- Change mode 의 준말로 파일의 권한(Permission)을 변경하는 경우 사용한다. Unix 에서 파일이나 디렉토리의 시스템 모드를 변경하는데 사용하기도 한다.
-
ls -al
(혹은ll
) 을 입력하면 아래와 같이 나온다. - 여기서 맨 왼쪽이 Permission 에 해당한다.
r
= Read(읽기),4
w
= Write(쓰기),2
x
= eXecute(실행하기),1
-
= Deniedr-x
: 읽거나 실행할 수는 있지만 수정은 불가능
- 만약 “
755
,644
로 퍼미션 주세요” 라고 하는 경우는 어떻게 되는걸까?rwx
를 다 더하면 7 이 나온다.- 그리고 위 그림을 보면
rw-rw-r—-
은 3 개씩 나뉜다. 맨 앞의rw-
가 소유자, 두번째rw-
가 그룹 사용자,r—-
이 기타 사용자를 의미한다.
chmod 755 vi-test2.sh
를 실행하면 파일의 Permission 이 755 로 변경된다.- 파일과 폴더의 permission 은 사용하다 보면 필요한 경우가 많다. 잘 알아두자.
쉘 스크립트
- 쉘 스크립트는
.sh
파일을 생성하고, 그 안에 쉘 커맨드를 추가하여 생성할 수 있다. - Python 처럼 if, while, case 문이 존재하고, 작성 시
bash name.sh
혹은sh name.sh
로 실행 가능하다. 즉 쉘 스크립트는 쉘 커맨드의 조합이다. - 쉘 커맨드에 익숙해진 후 스크립트로 생성하면 편해지는 점이 많다. 백그라운드로 모델 학습을 돌리거나, 데이터 전처리를 진행할 수 있다.
- 쉘 스크립트 예시는 아래와 같다. 맨 위에
#!/bin/bash
와 같은 SheBang(#!) 이 추가된다. 이 스크립트를 Bash 쉘로 해석하겠다는 것을 의미한다.-
즉 SheBang(#!) 문법은 스크립트 파일에서 어떤 프로그램으로 해당 파일을 실행시킬 지 결정한다.
#!/usr/bin/env
를 사용하면 인터프리터의 절대 경로를 지정하지 않아도 알아서 경로를 찾아주기 때문에 여러 시스템 환경에서 사용할 때 유용하다.
-
$(date + %s)
는data
를%s
(unix timestamp) 로 변형하는 쉘 커맨드다.START=$(date+%s)
는 변수를 저장하는 커맨드다. 즉 변수 저장에는=
이 사용된다.
댓글 남기기