https://www.yes24.com/Product/Goods/56681458
페도라 리눅스 - 예스24
시스템, 서버 및 네트워크, 보안까지 한 권으로 정복하는 페도라 리눅스리눅스에 대한 기본 지식을 쌓고자 하는 컴퓨터 관련 학과 학생을 대상으로 한다. 대부분의 윈도 사용자를 위해 리눅스를
www.yes24.com
◎ 셸은 사용자와 리눅스 커널 사이에서 중간자 역할을 수행한다.
● 명령어 해석기 기능
사용자와 커널 사이에서 명령을 해석하여 전달하는 해석기(interpreter)와 번역기(translator)기능이다.
사용자가 입력한 명령이나 파일에서 읽어들인 명령을 해석하고 적절한 프로그램을 실행한다.
사용자가 로그인을 하면 자동으로 실행되는 셸을 로그인 셸이라고 하며 /etc/passwd 파일에 사용자별로 지정되어있다.
ㆍ프롬프트 (prompt)
셸이 사용자의 명령을 기다리고 있음을 나타내는 표시
● 프로그래밍 기능
셸의 프로그래밍 기능을 이용하면 여러 명령을 사용하여 반복적으로 수행하는 작업을 하나의 프로그램 혹은 파일로 만들 수 있는데, 이렇게 작성된 것을 셸 스크립트(파일)라고 부른다.
● 사용자 환경 설정 기능
셸은 사용자 환경을 설정할 수 있도록 초기화 파일 기능을 제공한다.
초기화 파일에는 명령을 찾아오는 경로를 설정하거나, 파일과 디렉토리를 새로 생성할 때 기본 권한을 설정하거나, 다양한 환경 변수 등을 설정할 수 있다.
셸은 원래 유닉스에서 제공한 것으로, 대부분의 유닉스 시스템이 지원하는 주요 셸의 종류에는 본 셸, C 셸, 콘 셸, 배시 셸 등이 있다.
명령이름은 다음과 같다.
본 셸 : sh
C 셸 : csh
콘 셸 : ksh
배시 셸 : bash
현 시스템에서 바꿀 수 있는 셸의 종류는 /etc/shells 파일에 지정되어 있다.
/usr/sbin/nologin
사용자가 시스템에 로그인할 수 없도록 하는 특별한 로그인 셸.
일반적으로 시스템 관리 작업에 사용되는 사용자 계정에 할당.
사용자는 프롬프트에서 다른 셸을 실행할 수 있다.
이렇게 새로 생성된 셸을 서브 셸이라고 부른다.
서브 셸을 종료하는 명령은 ctrl + d, exit 등으로 일반 셸의 로그아웃 명령과 같다.
◎ 셸 내장 명령
셸은 자체적으로 내장 명령을 가지고 있다. 내장 명령어는 외부 바이너리 파일로써 디스크에서 실행되는 것이 아니라 셸 자체에 내장되어 있으므로, 따로 실행 파일을 찾을 필요 없이 즉시 사용할 수 있다. (성능 향상)
일반적인 리눅스 명령이 /usr/bin 디렉토리에 별도의 실행 파일로 있는 것과 달리, 셸 내장 명령은 별도의 실행 파일이 없고 셸 안에 포함되어 있다.
builtin
셸에서 사용되는 용어로, 셸 자체에 내장되어 있는 명령어나 함수를 가리킨다.
◎ 특수문자
*(별표) : 임의의 문자열을 나타내는데 사용한다.
?(물음표), [](대괄호) : 하나의 문자를 나타내는데 사용한다.
~(물결표) : 현재 작업중인 사용자의 홈 디렉토리
~로그인ID : 해당 사용자의 홈 디렉토리
-(붙임표) : cd 명령으로 디렉토리를 이전하기 직전의 작업 디렉토리 (상위 디렉토리 X)
;(쌍반점), | (파이프) : 명령과 명령을 연결한다.
;은 연결된 명령을 왼쪽부터 차례로 실행
|는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달한다.
''(작은따옴표) : 문자를 감싸서 문자열로 만들어주고, 문자열 안에 사용된 특수 문자의 기능을 없앤다.
""(큰따옴표) : 작은 따옴표와 비슷하지만 $, `, \ 는 제외된다.
``(백쿼터, 백쿼테이션) : js의 백틱과 비슷하게 ``로 감싸인 문자열을 명령으로 해석하여 실행.
\(역슬래시) : 특수문자 바로 앞에 사용하며, 해당 특수문자의 효과를 없앤다.
>, <, >> : 입출력의 방향을 바꾸는 특수문자.
일반적으로 키보드로 명령을 입력하고 실행 결과는 화면에 출력되었는데 이것을 다르게 하고싶을 때 사용한다.
ㆍ명령의 실행 결과를 파일로 저장하고 싶을 때
ㆍ파일에서 입력값을 읽어올 때
◎ 표준 입출력 장치
● 파일 디스크립터(file descriptor)
운영 체제에서 파일을 식별하고 제어하기 위한 개념이다. 파일 디스크립터는 파일을 열 때 생성되며, 파일과 관련된 메타데이터를 추적하고 파일의 내용에 대한 입출력 작업을 수행하는데 사용된다. 대부분의 시스템에서는 파일 디스크립터가 정수 값으로 표현된다.
파일 디스크립터 | 파일 디스크립터 대신 사용하는 이름 | 정의 |
0 | stdin | 명령의 표준 입력 |
1 | stdout | 명령의 표준 출력 |
2 | stderr | 명령의 표준 오류 |
표준 입출력 장치를 파일로 바꾸는 것을 리다이렉션(redirection)이라고 한다.
● 출력 리다이렉션
출력의 방향을 바꾸는 출력 리다이렉션은 두 가지 방법이 있다. 두 방법의 차이는 출력 결과를 저장할 파일이 이미 존재하는 파일인 경우 기존 파일의 내용을 유지할 것인지 여부이다.
기존 파일의 내용을 삭제하고 새로 결과를 저장할 때 : >
기존 파일의 내용 뒤에 결과를 추가할 때 : >>
기존 파일이 존재하더라도 묻지 않고 바로 실행되기 때문에 항상 해당 이름의 파일이 있는지 확인하자.
다음과 같이 set 명령으로 overwrite을 예방할 수 있다.
① set -o noclobber 명령어를 치면 overwrite가 되지 않는다.
(기존 내용에 추가하는 >> 는 상관없음)
② set +o noclobber 명령어를 치면 다시 원래대로 돌아온다.
● 오류 리다이렉션
명령을 실행하는 과정에서 셸이 화면에 출력하는 메시지는 두 가지이다. 하나는 명령의 정상적인 실행 결과(표준 출력)이고, 또 하나는 명령 실행 중 발생하는 오류 메시지(표준 오류)이다.
표준 출력과 표준 오류 모두 기본 장치가 화면으로 지정되어 있어서 같은 것처럼 보이지만 실은 다르게 관리되고 있다. 표준 출력은 1번, 표준 오류는 2번 장치이다.
2>, 2>> : 표준 오류 메시지를 파일에 저장한다.
명령 실행 중 나타나는 오류 메시지를 무시하고 싶을 때는 리눅스의 특수 파일인 /dev/null을 사용하면 된다.
● 입력 리다이렉션
표준 출력과 비슷하게 < 특수 기호를 사용하여 표준 입력을 바꾼다.
cat 명령은 파일의 내용이나 키보드로 입력을 받아 화면에 출력하는 명령이다. cat 명령이 파일을 읽어서 출력하는 기능은 <를 생략한 것으로, 표준 입력이 자동으로 파일로 리다이렉션한 것이다.
&
셸에서 파일 디스크립터 번호를 지정하는 데 사용된다.
2>&1
표준 오류 스트림을 표준 출력 스트림으로 리다이렉트 한다는 의미이다. >&2 이거의 경우 반대 의미.
◎ 표준 입출력 장치
셸은 셸의 환경을 설정하기 위한 값을 저장할 수 있도록 셸 변수와 환경 변수를 제공한다.
셸 변수 : 해당 셸의 지역변수
환경 변수 : 로그인 셸과 서브 셸 모두 공통적으로 적용
셸의 변수를 출력하는 명령은 set과 env이다.
set : 셸 변수와 환경 변수를 모두 출력
env : 환경변수만 출력
환경 변수 중에서 자주 사용되는 주요 변수는 다음과 같다.
환경변수 | 의미 | 환경변수 | 의미 |
HISTSIZE | 히스토리 저장 크기 | PATH | 명령을 탐색할 경로 |
HOME | 사용자 홈 디렉토리의 절대 경로 | PWD | 작업 디렉토리의 절대 경로 |
LANG | 사용하는 언어 | SHELL | 로그인 셸 |
LOGNAME | 사용자 계정 이름 |
셸 변수를 설정하는 방법은 다음과 같다.
변수명=문자열
환경 변수를 설정하는 방법은 먼저 셸 변수를 정의하고 export 명령을 사용하여 환경 변수로 바꿔준다.
● export [옵션] [셀 변수]
지정한 셸 변수를 환경 변수로 바꾼다.
ㆍ옵션
-n : 환경 변수를 셸 변수로 변경한다.
ex)
export SOME
export -n SOME
정의된 변수를 해제할 때는 unset 명령을 사용한다.
● unset [변수]
지정한 변수를 해제한다.
ex)
unset SOME
◎ alias, history
이 기능은 원래 본 셸에는 없던 기능으로 C 셸에서 처음 등장하여 콘 셸과 배시 셸에서 모두 제공하고 있다.
alias 명령어로 현재 설정된 별칭 목록을 확인하고 이름='명령'을 추가하여 추가 및 설정을 할 수 있다.
이 때 =를 중심으로 좌우에 공백이 있으면 안 된다. 공백이 있을 경우 작은 따옴표로 묶어야 한다.
기존 설정되어 있는 alias을 삭제하려면 unalias를 해주면 된다.
● alias
alias를 생성한다.
ex)
alias : 현재 설정된 별칭 목록을 출력한다.
alias 이름='명령' : 명령을 수정하여 사용하는 경우이다.
alias 이름='명령;명령2;...' : 여러 명령을 하나의 이름으로 사용하는 경우이다.
● unalias
alias를 삭제한다.
history는 내가 입력했던 명령 기록을 볼 수 있다.
!! : 바로 직전에 실행한 명령을 재실행한다.
!번호 : 히스토리에서 해당 번호의 명령을 재실행한다.
!문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령을 재실행한다.
히스토리는 터미널에서 작업을 마치고 로그아웃할 시 홈 디렉토리의 .bash_history 파일에 저장된다.
◎ 프롬프트 설정
프롬프트(prompt)는 사용자에게 명령을 입력받을 준비가 되었음을 알리는 표시이며, 사용자가 명령을 입력하는 위치를 나타낸다. 이 프롬프트의 형태는 사용자가 원하는 모양으로 바꿀 수 있다.
초기 PS1 값을 prompt.txt에 저장해두고 다시 초기 상태로 되돌렸다.
default PS1 값은 다음과 같다.
[\u@\h \W]\$
\u : 사용자 이름
\h : 호스트 이름
\W : 현재 작업 디렉토리명
\$ : $가 특수문자를 일반문자로 쓰기 위해 앞에 \ 추가
\로 시작하는 특별한 문자를 이스케이프 문자라고 한다.
프롬프트를 컬러로 바꿔보자.
'\[\e[x;y;nm\] 프롬프트 \[\e[x;y;0m\]'
\[ : 출력하지 않을 문자열의 시작 부분을 표시
\e : 터미널 제어를 알리는 이스케이프 문자
x;y;nm : x는 글자색, y는 배경색, n는 스타일 코드(굵기 등), m은 설정 시퀀스의 끝을 나타낸다.
프롬프트 뒤에 \[\e[x;y;0m\]을 붙여주는 이유는 원래 색상으로 돌아가기 위한 것이다. 지정하지 않으면 이후 셸의 모든 출력이 프롬프트의 색상과 같아진다
글자색,배경색,스타일 번호에 따라 해당 내용으로 바뀐다.
BLUE_PS1="\[\e[34;1m\]$PS1\[\e[0m\]"
export PS1=$BLUE_PS1
◎ 환경 설정 파일
위에서 설정한 alias나 prompt는 로그아웃을 하면 모두 사라진다. 이것을 환경 설정 파일에 필요한 설정을 저장하고 로그인 할 때 마다 불러오게 하자.
사용자가 로그인할 때마다 자동으로 실행되는 명령을 저장해놓은 것이 환경 설정 파일이다.
환경 설정 파일에는 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있다. 환경 설정 파일은 주로 사용자가 로그인할 때 실행되어 사용자 환경을 초기화하므로 초기화 파일이라고도 부른다.
● 시스템 환경 설정 파일
시스템을 사용하는 전체 사용자의 공통 환경을 설정하는 파일로 모든 사용자가 로그인할 때마다 무조건 실행된다. 배시 셸의 시스템 환경 설정 파일은 /etc 디렉토리에 있다.
파일 | 기능 |
/etc/profile | ㆍ시스템 공통으로 적용되는 환경 변수를 설정한다. - PATH : 기본 명령 경로를 설정한다. - USER, LOGNAME : 사용자 UID와 이름을 설정한다. - HOSTNAME : 호스트명을 설정한다. - HISTSIZE : 히스토리 크기를 설정한다. ㆍ기본 접근 권한을 설정한다. ㆍ /etc/profile.d/*.sh를 실행한다. |
/etc/bashrc | ㆍ시스템 공통으로 적용되는 함수와 ailas를 설정한다. ㆍ기본 프롬프트를 설정한다. ㆍ서브 셸을 위한 명령 경로를 설정한다. ㆍ서브 셸을 위한 기본 접근 권한을 설정한다. |
/etc/profile.d/*.sh | ㆍ언어나 명령별로 각각 필요한 환경을 설정한다. ㆍ필요시 설정 파일을 추가한다. |
이중 /etc/profile과 /etc/bashrc 파일은 향후 리눅스 업데이트 시 일관성 있는 관리를 위해 수정하지 말 것을 권고한다. (CentOS 7의 경우 업데이트가 멈춰서 잘 모르겠....)
● 사용자 환경 설정 파일
각 사용자의 홈 디렉토리에 숨김 파일로 있으며 사용자가 내용을 수정하고 관리할 수 있다.
사용자가 로그인하면 제일 먼저 시스템 환경 설정 파일이 실행되어 시스템 공통 환경을 만들고, 이후 사용자 환경 설정 파일을 순서대로 실행하여 사용자별 환경을 설정한다. 배시 셸의 경우 다음과 같다.
파일 | 기능 |
~/.bash_profile | 로그인 시 한번만 실행되는 명령어를 설정하는데 사용된다. 새로운 로그인 세션이 시작될 때 사용자의 환경을 설정하고 초기화하는데 주로 사용한다. |
~/.bashrc | 새로운 셸 세션을 시작할 때마다 실행되는 명령어를 설정하는데 사용된다. 로그인이 아닌 경우에도 매번 실행되므로, 셸의 환경변수, 별칭, 함수 등을 설정하는데 주로 사용한다. |
~/.bash_logout | 로그아웃 시 실행할 필요가 있는 함수 등을 설정한다. |
'13. OS' 카테고리의 다른 글
[Linux] 5. 파일 시스템과 디스크 관리 (1) | 2024.03.28 |
---|---|
[Linux] 4. 프로세스 관리하기 (0) | 2024.03.21 |
[Linux] 3. 파일의 접근 권한 (0) | 2024.03.18 |
[Linux] 1. 디렉토리와 파일 (0) | 2024.03.14 |
[Linux] 명령어 (0) | 2023.12.14 |