* 해당 교재는 2017년 출판된 것으로 현재 리눅스 버전에서 사용하는 프로그램과는 다를 수 있습니다.
안녕하세요,
이번 포스팅에서는 리눅스 쉘의 개념부터 아주 기본적인 명령어를 알아보겠습니다!
*리눅스 인터넷 응용프로그램과 오피스 응용프로그램에 대해 궁금하다면 이전 포스팅을 참고하세요.
[리눅스 스터디] 리눅스(Linux) 그대로 따라하기 - 인터넷 응용프로그램과 오피스 응용프로그램
* 해당 교재는 2017년 출판된 것으로 현재 리눅스 버전에서 사용하는 프로그램과는 다를 수 있습니다.리눅스 인터넷 응용프로그램 (p.222~227)1. 리눅스에서 파이어폭스 사용하기 리눅스에서는 다양
acqu1esce.tistory.com
1. 쉘(shell)이란? (p.535~538)
- 리눅스 운영체제의 명령작업을 수행할 수 있도록 만들어진 프로그램
- 사용자가 운영체제에서 어떤 파일들이 존재하는지 알아보기 위해 실행하는 ‘ls’명령을 입력받아 운영체제(커널)에 전달해주는 역할
- 콘솔(console)
- 엑스 윈도우 환경에서 터미널 창을 제공
- 가상콘솔(virtual console)
- 엑스 윈도우가 발전하기 전 많이 사용
- 리눅스는 최대 6개의 콘솔을 지원하는데 이를 가상콘솔(터미널)이라고 부름
- Alt 와 F1~F6 키를 눌러 각 콘솔로 전환 가능
- 엑스 윈도우 환경에서 Ctrl + Alt + F1 키를 누르면 가상콘솔로 전환됨
- 엑스 윈도우로 다시 돌아가려면 Alt + F8 키
실습
- 터미널(console)창 실행하기
- 리눅스에서 지원하는 쉘의 종류는 /etc/shells 파일에 정의.
- cat/etc/shells 명령 실행하여 어떤 쉘을 사용할 수 있는지 확인
- 기본 쉘인 배시(bash) 가 출력됨
- cat/etc/shells 명령 실행하여 어떤 쉘을 사용할 수 있는지 확인
- 현재 어떤 쉘을 하고 있는지 확인하기 위해 echo $SHELL 명령 실행
- bash가 출력
- 대부분 bash 쉘 환경에서 진행하기 때문에 다른 쉘로 바꿀 필요 없음
2. 프롬프트(prompt)구조 (p.539)
쉘에 로그인 했을 때 가장 먼저 보이는 프롬프트의 구조
[dumca@localhost](<mailto:dumca@localhost>) ~ $
3. 쉘 환경 변수 설정 (p.539~553)
- 환경 변수는 쉘 프로그래밍 할 경우와 사용자 환경을 설정하는 경우에 사용.
- 쉽게 이야기해서 각자 깊숙이 있는 응용프로그램을 쉽게 꺼내쓰기 위해서 미리 변수로 등록해 놓는 것
- 환경 변수는 사용자가 로그인 할 떄 자동으로 실행되어 사용자의 환경을 설정해 주는 .bash_profile 파일에서 설정가능
- cat 명령이나 vi 에디터 등으로 이 파일 내용을 보게 되면 사용자의 환경 설정 가능
- export 설정할변수명=값 라는 command로 지금 shell에 전역적으로 해당되는 환경 변수를 세팅
- export 입력으로 어떤 환경변수 값이 세팅되어 있는지 확인 가능
쉘 변수 확인
- env 명령어로 현재 사용중인 사용자의 쉘변수 출력
- 쉘 변수 확인 env | grep SHELL
- 사용자 변수 확인 env | grep USER
- 경로 변수 확인 env | grep PATH
- 호스트 이름 확인 env | grep HOSTNAME
- 로그인 정보 확인 env | grep LOGNAME
- 로케일 언어 변수 env | grep LANG
- 사용자 홈 경로 env | grep HOME
- declare | more : env에서 보여주지 않았던 쉘 변수 출력에 대한 정보
- 쉘 변수 출력하는 명령보다는 변수 선언에 주로 사용
4. 쉘 명령어 익히기 (p.554~594)
- 파일 부분 보기
- 파일내의 첫 부분에 있는 메시지를 보고자 할 때 출력하는데, 원하는 줄 수와 용량 지정
- head [옵션] 파일명
- 파일내의 첫 부분에 있는 메시지를 보고자 할 때 출력하는데, 원하는 줄 수와 용량 지정
- 파일 마지막 부분에 있는 메시지 출력
- tail [옵션] 파일명
- 입력 문자 출력
- 시스템 환경 변수나 입력 내용을 화면에 출력
- echo [옵션] 문자열
- echo 문자열 내부 환경 변수의 내용을 출력
- 파일로 저장하려면 다음과 같이 리다이렉션 > 기호를 사용
- 화면 문자 모두 지우기
- clear 명령어를 통해 화면상에 보이는 모든 메시지 제거
- 정렬
- sort [옵션] 파일 명령으로 텍스트 파일 내의 내용을 정렬
- 파일 찾기
- find [경로] [옵션] 파일명 명령으로 원하는 파일 서치
find는 검색 후 검색한 결과를 처리할 수 있는 행동을 지원
find는 명령 내에서 연산자 사용 가능
- 일반적인 파일 검색
루트 접근 후 find / -name ping : 최상위 루트 디렉토리 이하의 디렉토리에서 ping를 포함하는 모든 파일을 찾아라!
- 파일명이 정확히 기억나지 않을 때 파일이름 검색
find / usr/bin -name wh* : 파일명이 제대로 기억나지 않는 경우, 예를 들어 wh로 시작되는 파일을 검색하려고 할 때
이외에도 다양한 방식으로 파일 검색하는 방법은 교재 p.559~566을 참고하세요
- grep(global regular expression print) 명령
- grep은 파일에서 정규식에 맞는 텍스트 라인을 찾아 출력.
- 정규식이란, 사전에 정의된 특수 문자로 패턴을 표현하는 것
grep [옵션] 패턴 [파일]
- Sed(streaming editor)
- 명령 행에서의 텍스트 편집 도구로, vi 에디터와 같은 문서 편집기가 아닌 명령 행이나 스크립트에서 명령을 통해 텍스트 파일에 있는 글자를 특정 패턴에 따라 글자를 선택하여 변경, 입력, 삭제하는 에디터 도구
- sed [옵션] ‘sed 명령어’ 입력파일
- sed [옵션] -f sed스크립트파일 입력파일
- sed 스크립트파일 [옵션] 입력파일
편집 라인 위치 선택 → 데이터 추가 → 편집 저장 순서로 이루어지며 추가한 라인을 삭제할 수도 있다.
- awk
- 텍스트 파일에서 특정 문자의 패턴을 추출하여 원하는 포맷으로 처리되도록 하는 패턴 검색 후, 처리
- 마지 텍스트 파일을 DB로 하여 DB 검색하는 것처럼 사용되며 쉘 프로그래밍에서 주로 사용되는 기능
- awk [-F필드구분자] ‘명령’ 입력파일
- awk -f awk 스크립트파일 입력파일
- xargs
- 지정된 명령과 기본 인수 뒤에 표준 입력으로부터 입력되는 문자열을 공백이나 라인으로 구분, 인수로써 명령 행을 만들어 처리
- ls, find, cat 명령어와 파이프 기호 뒤에 주로 사용
- xargs [옵션] [명령어]
- wc
- 파일 내의 단어 수를 파악하고자 할 때 사용
- 행 수, 단어 수, 문자 수를 검사하여 보고
- wc [-cwl] 파일명
명시한 파일의 줄 수, 단어 수, 문자 수 파악 가능
- read
- 사용자로부터 표준입력을 받아들여 변수로 저장
- read [옵션] 변수
- read 명령 실행 후 변수 입력, 변수 값 확인은 %REPLY
- test
- 주어진 조건식을 평가하는 내장 명령어
- 조건식을 평가하여 참이면 종료값을 0으로, 그렇지 않으면 1로 반환
- [ 조건식 ] # 조건식 전후로 공백 사용
read에 변수명을 지정하여 $변수명으로 변수값 확인
- test
- declare
- 쉘 스크립트에서 변수를 정의할 때 사용되는 내부 명령으로 typeset 명령어와 동의어
- declare [옵션] [변수명[=변수값]]
- 읽기 전용의 변수 선언, 변수값 변경 불가
- 정수형 변수 선언 및 변수 값 변경
- 배열 선언
- 변수형 선언 및 변수값 동시 할당
- exit
- 스크립트를 종료할 때 사용하는 내부 명령으로, 쉘 스크립트의 조건식을 수행하고 빠져나오거나 쉘 스크립트를 마칠 때 맨 마지막 라인에서 사용
- 쉘에서 로그아웃 할 때 사용
- exit
- ture/false
- 쉘 스크립트에서 명령 실행 결과가 참인가 거짓인가 반환
- true/false
- set
- 변수명과 변수값을 지정할 때 사용
- 변수값은 숫자, 문자, 문자열 등 사용 가능, set 인자에 쓰이는 문자열은 공백에 의해 $1부터 차례대로 대입
- set [옵션] 인자
- set 변수 = 변수값
-환경 변수 출력
- date 명령 결과에 따른 변수 출력
- date 명령 실행 결과값으로 인자값 설정
- 공백으로 구분되어 첫 번째 인자값 출력
- 두 번째, 세 번째 인자값 콤마로 구분하여 출력
- 네 번째, 마지막 인자값 출력
- unset
- 선언된 변수를 해제하기 위한 명령어
- unset [옵션] 변수
- sleep
- 주어진 명령을 실행한 후 다음 명령을 실행하기 전에 대기할 시간을 지정하는 명령어
- sleep 시간
- time
- 주어진 작업이 걸리는 시간을 체크하는 명령어
- time 명령어
- source
- 시스템을 재시작하지 않고 변경된 파일로 바로 적용할 수 있게 해주는 내부 명령어
- source 명령어
- nohup
- 로그아웃을 하더라도 실행시킨 프로세스가 종료되지 않고 계속 동작하게 하는 명령어
- nohup 명령 $
5. 쉘 스크립트 작성 (p.594~602)
- cat > [파일명.sh](<http://파일명.sh>) 로 쉘 스크립트 진입
- 첫 줄은 #!/bin/bash 로 명시
- 쉘 스크립트에서 나갈 때는 ctrl+c
쉘 스크립트 실행 ./forever.sh 하면, → ‘허가거부’ 메시지와 함께 실행되지 않음
모든 사용자에게 실행 권한 주는 chmod 755 권한 부여,
chmod 755 ./forever.sh 로 실행 → 스크립트에 입력해두었던 출력문 실행
- 실행 명령어 3가지 중 선택
- ./forever.sh
- sh forever.sh
- bash forever.sh
[쉘 스크립트 환경에서의 조건문 예제]
[쉘 스크립트 환경에서의 반복문 예제]
해당 내용에 관련해서 질문이 있다면 댓글 남겨주시고 다음 포스팅도 기대해 주세요!
'스터디 > 리눅스(Linux)' 카테고리의 다른 글
[리눅스 스터디] 리눅스(Linux) 그대로 따라하기 - 인터넷 응용프로그램과 오피스 응용프로그램 (1) | 2025.03.22 |
---|