3.2 셸 스크립트
셸에서 동작 가능한 명령을 모아놓은 파일을 셸 스크립트(shell script)라고 한다. 셸에서 명령이나 프로그램을 실행하듯 셸 스크립트도 셸에서 실행할 수 있다. 물론, 적절한 소유권과 실행 권한이 있어야 한다. 셸 스크립트를 실행하면 셸 스크립트 파일의 내용이 순차적으로 실행된다. 처음부터 끝까지 모두 실행하면 셸 스크립트는 종료된다.
셸 스크립트는 여러 명령을 한 파일에 모아 실행하는 방식으로 자동화가 가능하다. 어떤 목적을 위해 셸에서 여러 명령을 내려야 하는 경우, 이를 셸 스크립트로 작성하면 실행 한 번으로 원하는 바를 이룰 수 있다. 특히 대상 등을 명령어의 인자로 입력받아 실행하면 활용도를 더욱 높일 수 있다.
echo 명령어
echo 명령어는 입력한 텍스트나 변수를 화면에 출력하는 기능이다. 화면에 출력하려는 메시지를 큰따옴표로 묶어 echo 명령어 다음에 넣어주자. (사실 큰따옴표로 묶지 않아도 문제는 없다.)
echo 명령어를 쉘 스크립트(shell script)로 실행하기
셸 스크립트를 작성할 때는 nano나 vim과 같은 텍스트 편집기를 사용한다. 일단은 바로 사용할 수 있는 nano를 사용해서 셸 스크립트를 적성해보자.
$ nano hihello.sh
#!/bin/bash
echo "hello"
echo "hello, world"
echo hello
echo hello, world
셸 스크립트 작성이 끝나면 Ctrl + X를 누르자. 변경 사항을 저장하겠냐고 나오면 Y를 누르고 파일에 저장(쓰기)한다는 메시지가 나오면 Enter를 눌러서 편집기를 빠져나오면 된다.
셸 스크립트를 실행할 때는 파일 이름 앞에 ./를 붙여서 실행한다. 다음 명령을 입력한 후 Enter를 누르자.
Permission denied라고 경고 메시지가 나오면서 실행이 되지 않는다. 해당 셸 스크립트를 실행할 권한이 해당 유저에게 없는 것이다. 이때는 chmod 명령어를 사용해서 해당 파일에 대한 실행 권한을 부여해 주자.
chmod +x hihello.sh
shabang(셔뱅)에 대해서
셸 스크립트는 일반적으로 확장자는 .sh로 설정한다. 그래서 확장자가 sh이면 셸 스크립트임을 쉽게 파악할 수 있다. 하지만 셸 스크립트의 확장자가 반드시 sh여야 하는 것은 아니다. 확장자가 없거나 확장자가 다른 파일이라도 셸 스크립트를 사용할 수 있다. 바로 첫 줄에 있는 shabang(셔뱅)에 의해서 말이다. 스크립트 파일 첫 줄에 사용하는 특수한 문자를 기억하고 있는가?
shabang은 다음과 같은 형식으로 작성한다.
#!/path/to/interpreter
#!/bin/bash
shabang을 적지 않으면 /bin/sh에 스크립트 실행을 맡긴다. 리눅스 배포판에 따라 다르지만 /bin/sh는 bash일 수도 있고 아닐 수도 있다. 그래서 Bash로 동작시킬 셸 스크립트는 첫 줄에 반드시 Bash를 지정하는 shabang을 적어야 한다.
3.3 기본 명령어
- man : manual의 약자로, 명령어나 개념 등에 대한 메뉴얼인 맨 페이지(man page, manual page)를 확인하는 명령어
- ls : 'list'의 약자로, 리눅스에서 가장 많이 사용하는 명령어이다. 현재 디렉터리의 파일 목록을 화면에 표시한다.
ls 명령어에서 사용할 수 있는 주요 옵션
- -a : 모든 파일 출력
- -l : 파일의 여러 속성을 포함해 길게 출력
- -t : 생성된 순서로 파일 출력(오래된 파일이 가장 뒤로 감)
- -R : 하위 모든 디렉터리 순회
- -h : 사람이 읽기 좋은 크기로 파일 출력
- cd : 'change directory'의 약자로, 현재 작업 디렉터리(CWD, Current Working Directory)의 위치를 이동하는 명령어
- pwd : 'print working directory'의 약자로, 현재 작업 디렉터리의 절대 경로를 표시한다.
- cat : 파일의 내용을 연결하거나 조회한다. '사슬로 잇다'라는 뜻의 'concatenate' 또는 'catenate'에서 유래되었다.
- exit : 현재 실행 중인 셸을 종료한다.
- nano : nano는 텍스트 편집기를 의미한다. 리눅스에서 nano로 파일을 새로 생성하거나 기존 파일을 열어 내용을 편집한다.
함께 읽으면 좋은 글
'프로그래밍 > 운영체제' 카테고리의 다른 글
리눅스/유닉스(Linux/Unix)에서 pstree 설치하기 (0) | 2024.12.24 |
---|---|
윈도우11(Windows 11) 설치 이후 디스크 용량이 부족해진 당신을 위한 안내서 (1) | 2024.12.19 |
Ubuntu 파일, 폴더 소유자 변경하기 (0) | 2024.12.09 |
터미널(Terminal)과 셸(Shell)의 관계에 대해서 (0) | 2024.12.08 |
코딩 자율학습 리눅스 입문 with 우분투 학습 1일차 정리 (0) | 2024.11.26 |
댓글