리눅스 저장 장치 이름과 표준 디렉터리
파티션
- 하드디스크를 논리적으로 나눈 구역
- 파티션 별로 파일 시스템을 만들 수 있음
- 윈도우에서는 각 파티션마다 각각의 드라이브로 지정
- 리눅스는 오직 1개의 루트 디렉터리만을 가짐
- 리눅스는 하드 디스크나 주변 장치를 파일로 취급함
장치 이름
- 리눅스에서 사용하는 하드 디스크 장치 또는 파티션 이름
- IDE 디스크: 이름에 'hd'를 붙임
- /dev/hda, /dev/hdb, ...
- SCSI 디스크: 이름에 'sd'를 붙임
- /dev/sda, /dev/sdb, ...
- 물리적인 하드디스크가 추가될 때 알파벳 순서대로 함
- 파티션 번호는 숫자를 1부터 차례대로 붙임
- /dev/hda1, /dev/hda2, ...
- CD 또는 DVD
- /dev/sr0, /dev/sr1, ...
리눅스 표준 디렉터리
루트 디렉터리 : /
- 파일 시스템의 바탕을 이루는 중요한 디렉터리
- 모든 파일과 디렉터리의 최상위 디렉터리
바이너리 디렉터리: /bin, sbin
- 기본적인 명령의 실행 파일을 포함(/bin)
- 부팅 과정이나 시스템 관리에 필요한 명령의 실행 파일을 포함(/sbin)
부트 디렉터리: /boot
- 커널 이미지(vmlinuz)와 부트 로더의 설정 파일을 포함
디바이스 디렉터리: /dev
- 장치를 접근하는데 사용되는 '디바이스 파일'이 위치함
시스템 설정 파일 디렉터리: /etc
- 시스템의 중요한 환경 설정 파일이 위치함
사용자 계정 디렉터리: /home
- 사용자 계정의 홈 디렉터리가 만들어지는 디렉터리
- 예: /home/kdhong
- 사용자의 홈 디렉터리는 해당 사용자만 사용할 수 있는 독립적인 공간
공유 라이브러리 디렉터리: /lib
- 프로그램들이 사용하는 시스템 라이브러리 파일이 위치함
미디어 디렉터리: /media
- 이동식 저장 장치가 마운트 될 때 마운트 지점을 제공하는 디렉터리
시스템 정보 디렉터리: /proc
- 커널이 사용하는 가상의 파일 시스템
루트 계정의 디렉터리: /root
- root 계정의 홈 디렉터리
사용자 디렉터리: /usr
- /usr/bin, /usr/sbin: 여러가지 실행 파일
- /usr/include: 라이브러리 헤더 파일
- /usr/lib: 실행 파일을 위한 사용자 라이브러리
가변 자료 저장 디렉터리: /var
- 시스템 운영 중에 필요한 가변 자료가 저장되는 디렉터리
- 시스템 작동 로그, 인쇄용 스풀 영역, 사용자 메일 받스 등
요약
- Rocky Linux는 레드햇 앤터프라이즈 리눅스의 소스 코드를 사용하여 만들었다.
- Rocky Linux를 설치하기 위해 ISO 이미지 파일을 준비해야 한다.
- 리눅스를 설치하는 방법으로 '하드디스크의 비어 있는 파티션에 설치'하는 방법과 가상머신 소프트웨어를 이용하여 게스트 운영체제로 설치'하는 방법이 있다.
- 가상머신 소프트웨어란 하나의 물리적 컴퓨터에 추가로 가상머신을 만들어주는 소프트웨어다.
- 저장장치를 사용하려면 해당 저장장치의 이름을 파일 시스템의 특정 디렉터리에 마운트시켜야 한다.
- 리눅스에는 하나의 루트 디렉터리만 존재한다. 또한 용도가 정해진 표준 디렉터리가 존재한다.
- 루트 디렉터리 /는 모든 파일과 디렉터리의 최상위 디렉터리로 절대경로의 기준이 된다.
- /etc 디렉터리는 시스템의 중요한 환경 설정 파일과 passwd 파일, fstab 파일 등이 저장된다.
- 리눅스를 설치할 때 정한 루트 계정 root의 암호를 반드시 기억해야 한다.
셸 개요
셸
명령어 해석기 또는 명령 행 인터페이스
- 사용자와 커널 사이에서 명령어를 해석하여 처리
- 셸 명령을 사용하면 GUI로 하기 힘든 다양한 기능을 수행할 수 있음
셸 명령을 프로그램으로 작성하여 처리할 수도 있음
- 셸 스크립트는 텍스트 파일로, 프로그래밍을 통한 셸 명령의 조합
- 반복적으로 수행되는 작업을 셸 스크립트로 작성할 수 있음
- 셸이 셸 스크립트 파일을 읽어 처리할 수 있음
텍스트 모드로 로그인을 하면 기본 셸이 주어짐
셸 사용하기
텍스트 모드에서 로그인하면 자동으로 '로그인 셸'이 실행됨
GNOME 데스크톱에서는 '터미널 창'을 실행시켜 셸을 사용함
- 현재 활동 > 터미널
- 여러 터미널 창을 띄워 사용할 수 있음
- 터미널 창은 명령 프롬프트와 명령 행을 제공함
기본적으로 한 개의 명령을 입력하고 엔터를 눌러 명령을 수행
- 결과가 출력되면 명령 프롬프트가 다시 등장
- 세미 클론을 사용하여 한 라인에 여려 명령을 입력할 수 있음
셸의 종류
- 많은 리눅스 배포판에서 Bash를 기본 셸로 사용함 -> 명령 프롬프트로 일반 사용자는 $, root는 #을 사용
- 셸의 종류에 따라 에일리어스 설정, 초기화 파일, 셸 스크립트 작성법, 명령 행 완성 기능, 명령 행 편집 기능 등에 차이가 있음
Bash 셸
- Bourne Again Shell로 Bourne 셸의 개선된 버전 -> 많은 셸 스크립트 문법이 Bourne 셸 기반을 둠
- C 셸과 Korn 셸의 유용한 기능을 가져옴
- 실행 명령은 /bin/bash
- /etc/passwd 파일에 다음과 같은 라인이 있음
- kdhong:x:1000:1000:KilDong Hong:/home/kdhong:/bin/bash
사용자 'kdhong'의 홈 디렉토리가 /home/kdhong이고, 기본 셸로 /bin/bash를 사용한다는 것을 의미.
셸 선택하기
기본 셸을 변경할 수 있음 -> chsh -s /bin/sh
chsh
: 이것은 "Change Shell"의 약자로, 사용자의 로그인 셸을 변경하는 데 사용되는 명령어.-s
옵션: 이 옵션은 '셸 변경'을 의미. 즉, 사용자가 사용하고 싶은 새로운 셸을 지정할 수 있게 해 줌./bin/sh
: 이 부분은 변경하고자 하는 새로운 셸의 경로./bin/sh
는 전통적인 Bourne 셸을 나타내며, 많은 시스템에서는 Bash 셸이나 다른 호환 셸로 대체되어 사용.
터미널 창을 '대화형 셸'이라고도 함
- 셸을 종료하려면 exit 명령 또는 ctrl + d를 실행
- '로그인 셸'이 아님
로그인 셸과 비로그인 셸을 구별해야 함
- logout 명령은 로그인 셸에서만 가능
- 참고로 ctrl + alt + F1~F6 으로 가상 콘솔을 사용할 수 있음
- 셸 프롬프트에서 셸 프로그램을 실행하면 '서브 셸이 실행됨
- 로그인 셸(Login Shell):
- 정의: 로그인 셸은 사용자가 시스템에 로그인할 때 시작되는 셸. 이는 보통 사용자 이름과 비밀번호를 입력하여 접근하는 방식으로 시작.
- 환경 설정: 로그인 셸은 사용자의 환경을 설정하기 위해
.profile
,.bash_profile
,.bash_login
등의 초기화 파일을 실행. - 로그아웃 가능: 로그인 셸에서는
logout
명령을 사용하여 셸 세션을 종료할 수 있음. 이 명령은 비로그인 셸에서는 사용할 수 없음.
- 비로그인 셸(Non-Login Shell):
- 정의: 비로그인 셸은 시스템에 로그인한 후 새로운 터미널 창을 열거나, 새 셸 프로세스를 시작할 때 실행되는 셸.
- 환경 설정: 비로그인 셸은 로그인 셸과 달리
.bashrc
와 같은 구성 파일을 실행하여 환경을 설정. 이 파일은 셸이 시작될 때마다 실행. - 서브 셸(Sub Shell): 셸 프롬프트에서 다른 셸 프로그램을 실행하면, 그것은 '서브 셸'이 실행되는 것. 이는 부모 셸의 자식 프로세스로, 독립적인 셸 환경을 제공.
- 가상 콘솔(Virtual Console):
- 시스템에서는
Ctrl + Alt + F1
에서F6
까지의 키 조합을 사용하여 여러 가상 콘솔을 사용할 수 있다. 각각의 가상 콘솔은 독립적인 로그인 세션을 제공하며, 사용자는 이를 통해 다양한 작업을 동시에 수행할 수 있다.
- 시스템에서는
셸 명령
셸 명령의 형식
$ 명령어 옵션 인수
- 예: usermod -L kdhong
- 옵션과 인수는 여럿일 수 있으며 선택적 또는 필수적
대개 명령어는 프로그램의 이름
관리자 명령 또는 일반 사용자 명령이 있음
가장 간단한 형태의 실행은 명령의 이름만 사용하는 것
- who, date, ls, pwd
chsh 명령
기본 셸을 바꾸는 명령
chsh [options] [username]
- 대괄호는 생략 가능, 이탤릭체는 적당한 내용으로 대체되어야 함을 의미
- 복수는 여러 개가 가능하다는 의미
옵션과 인수
짧은 옵션 (-)
ls -l
:ls
명령은 디렉토리의 내용을 나열.-l
옵션은 "긴 형식"으로 출력하여, 파일의 권한, 소유자, 크기, 수정 날짜 등의 상세한 정보를 함께 보여줌.ls -lat
: 이 명령은 여러 옵션을 결합.-l
은 상세 정보를,-a
는 숨겨진 파일을 포함한 모든 파일을,-t
는 파일을 최종 수정 시간 순으로 정렬하여 보여줌.ls -lat
와ls -l -a -t
는 동일한 결과를 출력.
긴 옵션 (--)
ls --all
: 이 명령은ls -a
와 동일하게 동작.--all
은 숨겨진 파일(이름이 .으로 시작하는 파일)을 포함한 모든 파일과 디렉토리를 보여줌.
인수는 명령의 수행 대상을 지정하는 것
cat -n /etc/passwd
:cat
명령은 파일의 내용을 표시.-n
옵션은 각 줄에 줄 번호를 추가하여 출력./etc/passwd
는 이 명령의 인수로, 이 파일의 내용을 줄 번호와 함께 보여줌.grep "KilDongHong" /etc/passwd
:grep
명령은 텍스트를 검색. 이 경우,/etc/passwd
파일에서 "KilDongHong" 문자열을 포함하는 모든 줄을 찾아 출력.
옵션도 인수를 가질 수 있음
chsh -s /bin/sh kdhong
:chsh
명령은 사용자의 로그인 쉘을 변경.-s
옵션은 사용할 쉘을 지정하며,/bin/sh
는 쉘의 경로.kdhong
은 해당 변경을 적용할 사용자의 이름.chsh --shell=/bin/bash kdhong
: 이 명령도chsh -s /bin/sh kdhong
와 유사하게 동작. 여기서는--shell
이라는 긴 옵션을 사용해 쉘을/bin/bash
로 변경하며, 이 변경은kdhong
사용자에게 적용.
명령어의 종류
- 에일리어스: alias 명령을 사용하면 만든 명령의 별칭
- 셸 예약어: 예약된 단어로 do, while, case 등
- 함수: 셸에서 수행되는 함수의 정의
- 내장 명령: 셸 내부에 존재하는 명령으로 cd, echo, pwd 등
- 일반 명령: 실행 파일이 존재하는 명령
환경변수 PATH에 설정된 경로 중에 실행 파일이 존재하면 명령의 이름만으로 실행이 가능
- 아니면 해당 실행 파일의 절대 경로를 사용해야 함
- 현재 디렉터리(.)는 보통 PATH에 포함되어 있지 않음
- echo $PATH로 저장된 경로를 확인할 수 있음
alias 명령
자주 사용되는 명령의 단축 명령을 만드는 명령
- alias
- alias la='ls -A'
- alias rm='rm -i'
계속 유지하려면 셸의 환경 설정 파일에 기록해야 함
type 명령
명령이 어떻게 해석되는지 알려주는 명령
- type cd
- type -a ls
which 명령
실행 프로그램을 환경변수 PATH를 기초로 찾아 경로를 출력함
- which rm
man 명령
- 매뉴얼 페이지를 보여주는 명령
- 명령의 사용법이나 설정 파일 등에 관한 온라인 도움말을 제공
- man passwd 또는 man 5 passwd
- 명령어의 간단한 도움말 -> 명령--help
- 섹션 1: 사용자 명령
- 섹션 2: 커널의 시스템 호출
- 섹션 3: c 라이브러리 함수
- 섹션 4: 디바이스 드라이버 정보
- 섹션 5: 시스템의 설정 파일
- 섹션 6: 게임
- 섹션 7: 파일 포맷, 인코딩 등
- 섹션 8: 시스템 관리 명령
명령 히스토리
history 명령
- 이전에 수행했던 명령 행의 목록을 불러옴
- history 또는 history 10
히스토리 기능을 이용하여 명령을 실행하는 방법
- 이전에 수행했던 명령을 이용하여 명령을 수행할 수 있음
- 다음을 입력하고 실행함
- !! + 엔터: 직전 명령을 실행함
- !n + 엔터: 히스토리 목록에서 해당 명령을 실행함
- !string + 엔터: 지정된 문자열로 시작하는 최근 명령을 실행함
- 위 또는 아래 버튼: 누를 때마다 직전 또는 직후 명령을 불러옴. 편집 가능
명령 행 완성 기능
- 일부만 입력하고 나머지를 자동으로 완성하는 기능
- 처음 몇 자만 입력후, tab 혹은 방향키를 누르면 실행 됨
- 명령어, 변수($), 파일, 디렉터리(~ 또는 -)등을 구분하여 결정함
- ~username은 해당 사용자의 홈 디렉터리를 의미
$ whoa
$ echo $OS
$ cd ~ro
- 정보가 충분하지 않은 경우, 방향키를 한번 더 누르면 모든 가능한 경우를 보여주고 원래의 명령 행이 유지됨
명령의 연결과 확장
특수 문자
- 셸에서 특수한 의미를 가지는 문자
- 백슬래시(): 특수 문자의 기능을 제거하는 이스케이프 문자 또는 긴 명령 행을 분리할 때 사용
- 틸드(~): ~ 또는 ~username은 사용자의 홈 디렉터리를 의미
- 도트(.): 현재 작업 디렉터리를 표시, 또는 명령 행의 맨 앞에서 셸 스크립트를 실행하는 source 명령
- 더블도트(..): 현재 디렉터리의 부모 디렉터리
- 파운드(#): 문자의 뒤에 나타나는 문자를 주석으로 처리
- 달러($): $ 변수는 변수의 값을 추출
- 앰퍼샌드(&): 명령&는 명령을 백그라운드로 실행시킴
- 애스터리스크(*): 파일 이름에서 사용할 때 0개 이상의 임의 문자열과 대응됨
- 물음표(?): 파일 이름에서 사용할 때 1개 문자와 대응됨
- 파이프(|): 앞 명령의 출력을 다음 명령의 입력으로 연결시킴
- < 또는 >: 입출력 리다이렉션에서, 즉 파일로부터 입력받을 때 또는 파일로 출력할 때 사용
- >>: 표준 출력을 파일의 끝에 덧붙일 때 사용
- 느낌표(!): 명령 히스토리 기능을 이용할 때 사용
파이프
- 앞 명령의 출력 결과를 다음 명령의 입력으로 연결
- 명령1 | 명령2
- cat /etc/passwd | sort | more
입출력 리다이렉션
- 명령 < 파일
- 명령 수행에 필요한 입력을 표준 입력 대신에 파일로부터 얻음
- sort < /etc/passwd
- 명령 > 파일
- 명령 수행의 결과를 표준 출력으로 보내지 않고 파일에 기록함
- grep typedef /usr/include/* > typedef.out
- 명령 2 > 파일
- 명령 수행 중 표준 오류 출력을 파일에 덧붙임
- ls 2 >> error.txt
명령 치환
- 명령을 수행할 때, 명령의 인수로서 다른 명령의 결과를 사용
- $(command) 또는
command
-> 역 따옴표
$ ls -l$(which passwd)
-rwxr-xr-x 1 root root 54256 Jan 18 2022 /usr/bin/passwd
$ which passwd
/usr/bin/passwd
$ ls -l /usr/bin/passwd
-rwxr-xr-x 1 root root 54256 Jan 18 2022 /usr/bin/passwd
$ echo "there are $(ls | wc -w) files in the directory"
there are 23 files in the directory
인용 부호
- 빈칸을 포함하는 문자열을 1개의 인수로 사용할 때 인용 부호가 필요함
- 작은 따옴표 ('')는 특수 문자의 의미를 제거함
- 큰 따옴표 ("")는 $, ``, , !를 해석하여 확장함
- 백슬래시()는 $, `, ", ', \ 앞에서 특수 문자이 의미를 제거함
$ echo "$(date)"
Tue Nov 29 10:00:00 UTC 2023
$ echo "\$(date)"
$(date)
$ echo 'Today is $(date)'
Today is $(date)
$ echo "$(date)"
:- 큰 따옴표 안에 있는
$(date)
는 현재 날짜와 시간을 출력하는 명령 치환을 수행.
- 큰 따옴표 안에 있는
$ echo "\$(date)"
:- 백슬래시는
$
기호 뒤의 특수한 의미를 제거하여, 문자열$(date)
가 그대로 출력.
- 백슬래시는
$ echo 'Today is $(date)'
:- 작은 따옴표는 내부의 모든 특수 문자의 의미를 제거하여,
Today is $(date)
라는 문자열이 그대로 출력.
- 작은 따옴표는 내부의 모든 특수 문자의 의미를 제거하여,
수식과 변수의 확장
- 명령 수행 전에 수식의 결과를 계산하여 전달
- $ [수식] 또는 $ ((수식))
- 명령 수행 전에 변수의 값을 추출하여 전달
- $변수
$ echo "I am$[2023-1979] years old."
I am 44 years old.
$ echo BASH
/bin/bash
$ ls -l $BASH
-rwxr-xr-x 1 root root 1113504 Jan 1 00:00 /bin/bash
$ echo "I am $[2023-1979] years old."
:$[수식]
은 수식을 계산하여 결과를 문자열에 삽입. 여기서는 2023과 1979의 차이를 계산.
$ echo $BASH
:- 이 명령은 문자열 "BASH"를 그대로 출력. 여기서 $ 기호가 없기 때문에 환경 변수로 해석되지 않음.
$ ls -l $BASH
:- 이 명령은
$BASH
변수가 가리키는 경로, 즉 Bash 셸의 경로에 대한 상세 정보를 출력.
- 이 명령은
셸 변수
셸 변수와 환경 변수
셸 변수는 특정 데이터 또는 환경 설정을 위한 값을 저장
- 기본적으로 문자열 정보를 저장함
셸 변수(지역 변수)
- 변수가 정의된 셸에서만 사용이 가능하고, 서브 셸로는 전달되지 않음
$ NAME="KIM" $ echo $NAME KIM
환경 변수(전역 변수)
- 현재 셸뿐만 아니라 서브 셸로도 전달
- 보통 변수 이름으로 대문자를 사용함
- 터미널 창을 열어 셸을 시작하면 이미 많은 환경 변수가 설정되어 있음
- 시스템의 모든 환경 변수의 이름과 값을 출력 하려면 printenv 명령을 사용
- epxport -p는 현재 셸의 모든 환경 변수를 출력
변수 설정과 환경 변수로 만드는 방법
- 변수 = 값; export 변수
- 또는 export 변수=변수
특정 환경 변수의 값을 확인하는 방법
- printenv 변수
- echo $ 변수는 모든 변수 값을 확인할 수 있음
$ FOO=bar
$ export FOO
$ sh
sh-5.1 $ echo $FOO
bar
sh-5.1 $ printenv FOO
bar
sh-5.1 $ exit
$ unset FOO
$ echo $FOO
코드 설명
환경 변수를 설정하고, 그 값을 다른 방법으로 확인한 다음, 해당 변수를 해제하는 과정을 보여줌
$ FOO=bar
:- 이 명령은
FOO
라는 쉘 변수에bar
라는 값을 할당. 이 시점에서FOO
는 아직 환경 변수가 아니므로 다른 프로세스에서는 볼 수 없다.
- 이 명령은
$ export FOO
:export
명령을 사용하여FOO
를 환경 변수로 만듦. 이제 이 변수는 셸의 하위 프로세스에서도 접근 가능해진다.
$ sh
:- 새로운 셸 세션을 시작. 여기서는 새로운 셸 프로세스가 생성.
sh-5.1 $ echo $FOO
:- 새로운 셸 세션에서
echo $FOO
명령을 실행하여FOO
환경 변수의 값을 출력. 결과는bar
.
- 새로운 셸 세션에서
sh-5.1 $ printenv FOO
:printenv
명령을 사용하여FOO
환경 변수의 값을 출력. 이것도bar
를 반환.
sh-5.1 $ exit
:- 현재 셸 세션(하위 셸)을 종료하고 원래의 셸로 돌아간다.
$ unset FOO
:unset
명령을 사용하여FOO
환경 변수를 해제. 이제 이 변수는 더 이상 존재하지 않는다.
$ echo $FOO
:FOO
변수의 값을 출력하려고 시도하지만,FOO
는 이미 해제되었으므로 아무것도 출력되지 않는다.
- HISTSIZE: 1개 셸에서 저장되는 명령 히스토리 목록의 최대 개수로 기본 값은 1000
- HOME: 홈 디렉터리
- MAIL: 사용자의 메일박스에 해당하는 파일로 보통 /var/spool/mail/username
- PATH: 명령을 수행할 때 실행 파일을 찾기 위한 디렉터리 목록
- PS1: 셸 프롬프트를 표시하기 위한 문자열
- SHELL: 사용 중인 기본 셸
- PWD: 현재 작업 디렉터리
- USER: 현재 사용자 계정
로그인과 셸의 환경 설정 파일
로그인할 때 또는 셸을 시작할 때 자동으로 실행되는 명령을 저장한 파일
- 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음
- 셸의 종류에 따라 다른 이름의 설정 파일을 사용함
- bash 셸의 경우 다음과 같음
- /etc/profile:
- 모든 사용자에게 적용
- 로그인할 때 가장 먼저 수행됨
- PATH, MAIL, HISTSIZE 등 전역의 환경 변수가 설정됨
- ~/.bash_profile:
- 로그인할 때 수행되며 개별 사용자에게 적용
- 내부에서 ~/.bashrc를 실행
- ~/.bashrc:
- 셸을 시작할 때마다 수행되며 개별 사용자에게 적용됨
- 보통 내부에서 /etc/bashrc를 실행
- /etc/bashrc:
- 모든 사용자에게 적용
- 셸을 시작할 때마다 수행됨
- PS1 설정, 에일리어스 설정, umask를 사용한 접근 권한의 초기값, 함수 등을 설정
- ~/.bash_logout:
- 로그아웃을 수행할 때 실행되는 스크립트 파일
/etc/profile
:- 용도: 이 파일은 시스템 전체에 영향을 미치는 환경 설정을 포함.
- 특징: 시스템의 모든 사용자에게 적용되며, 사용자가 로그인 셸을 시작할 때 가장 먼저 실행된다.
- 내용: 전역 환경 변수 설정(예:
PATH
,MAIL
,HISTSIZE
등)이 포함.
~/.bash_profile
:- 용도: 개별 사용자의 로그인 셸 설정을 저장.
- 특징: 사용자가 로그인할 때 실행되며, 사용자의 홈 디렉토리에 위치.
- 내용: 주로 개인 환경 설정을 포함하며,
~/.bashrc
파일을 실행하여 사용자별 셸 설정을 불러온다.
~/.bashrc
:- 용도: 개별 사용자의 비로그인 셸 설정을 저장.
- 특징: 셸을 시작할 때마다 실행되며, 사용자별 설정을 포함.
- 내용:
~/.bashrc
는 보통/etc/bashrc
를 실행하여 시스템 전체 설정을 불러오며, 에일리어스 설정, 함수 정의, 셸 프롬프트(PS1
) 설정 등을 포함한다.
/etc/bashrc
:- 용도: 시스템 전체의 비로그인 셸 설정을 저장.
- 특징: 모든 사용자에게 적용되며, 셸을 시작할 때마다 실행.
- 내용: 셸 프롬프트 설정, 에일리어스,
umask
를 이용한 파일 생성 권한의 초기 설정 등이 포함.
~/.bash_logout
:- 용도: 로그아웃 시 실행되는 스크립트를 포함.
- 특징: 사용자가 로그아웃할 때 실행되며, 개별 사용자의 홈 디렉토리에 위치.
- 내용: 로그아웃 시 필요한 정리 작업, 예를 들어 임시 파일 삭제, 사용자 공지 사항 출력 등을 수행할 수 있다.
요약
- 셸은 운영체제 커널과 사용자 사이에 존재하는 명령어 해석기 또는 명령 행 인터페이스이다.
- Bash 셸은 Rocky Linux를 포함한 많은 리눅스 배포판에서 기본 셸로 사용된다.
- 셸 명령의 종류로는 에일리어스, 셸 예약어, 함수, 내장 명령, 일반 명령 등이 있다.
- 히스토리 기능과 명령 행 자동 완성 기능을 사용하면 빠르고 편리하게 명령 행을 작성할 수 있다.
- 파이프(|)는 왼쪽 명령의 출력을 오른쪽 명령의 입력으로 연결 시킨다.
- 입출력 리다이렉션은 셸 명령의 입력 또는 출력을 파일로 연결시킨다.
- 명령 확장을 수행할 때 큰 따옴표(")는 작은따옴표(')와 다르게 따옴표 안에서 문자$, `, \를 해석한다.
- 셸을 시작할 때 자동으로 수행되는 스크립트 파일이 존재한다.
예상 문제
1. 리눅스 시스템에서 하드 디스크나 주변 장치를 파일로 취급하는 이유는 무엇인가?
- A) 파일 시스템의 일관성을 유지하기 위해
- B) 디바이스 관리를 단순화하기 위해
- C) 보안을 강화하기 위해
- D) 메모리 관리를 효율적으로 하기 위해
- 정답: B) 디바이스 관리를 단순화하기 위해
- 해설: 리눅스는 디바이스를 파일처럼 취급함으로써 디바이스 관리를 단순화하고 사용자에게 친숙한 파일 시스템 인터페이스를 제공한다.
2. 리눅스에서 /home
디렉터리의 역할은 무엇인가?
- A) 시스템의 모든 환경 설정 파일을 저장
- B) 사용자 계정의 홈 디렉터리를 생성
- C) 프로그램의 실행 파일을 저장
- D) 시스템 정보를 저장
- 정답: B) 사용자 계정의 홈 디렉터리를 생성
- 해설:
/home
디렉터리는 각 사용자 계정의 개인 데이터와 설정을 저장하는 홈 디렉터리를 위한 공간을 제공한다.
3. 셸 스크립트의 주요 기능은 무엇인가?
- A) 그래픽 인터페이스 제공
- B) 파일 시스템 관리
- C) 명령어 해석 및 처리
- D) 시스템 부팅 관리
- 정답: C) 명령어 해석 및 처리
- 해설: 셸 스크립트는 사용자와 커널 사이에서 명령어를 해석하고 처리하는 명령 행 인터페이스로, 다양한 시스템 작업을 자동화하고 간소화하는 데 사용된다.
4. 리눅스 시스템에서 chsh -s /bin/sh kdhong
명령어의 기능은 무엇인가?
- A) 사용자 'kdhong'의 비밀번호 변경
- B) 사용자 'kdhong'의 셸을
/bin/sh
로 변경 - C) 시스템의 기본 셸을
/bin/sh
로 변경 - D) 'kdhong' 사용자를 새로 생성
- 정답: B) 사용자 'kdhong'의 셸을
/bin/sh
로 변경 - 해설:
chsh
명령어는 사용자의 로그인 셸을 변경하는 데 사용되며, 이 예에서는 사용자 'kdhong'의 기본 셸을/bin/sh
로 변경한다.
5. 리눅스 시스템에서 'history' 명령어의 기능은 무엇인가?
- A) 시스템의 로그 파일 표시
- B) 사용자의 활동 기록 표시
- C) 이전에 실행한 명령어 목록 표시
- D) 시스템의 오류 기록 표시
- 정답: C) 이전에 실행한 명령어 목록 표시
- 해설: 'history' 명령어는 사용자가 이전에 실행한 명령어들의 목록을 표시하는 기능을 가지고 있다. 이를 통해 사용자는 과거에 사용한 명령어를 쉽게 찾아 재사용할 수 있다.
6. 리눅스에서 파티션은 무엇을 의미하는가?
- A) 파일 시스템을 만들 수 없는 하드디스크의 논리적 구역
- B) 파일 시스템을 만들 수 있는 하드디스크의 논리적 구역
- C) 단일 파일 시스템으로 사용되는 별도의 하드디스크
- D) 리눅스 시스템에서 사용되지 않는 구역
- 정답: B) 파일 시스템을 만들 수 있는 하드디스크의 논리적 구역
- 해설: 리눅스에서 파티션은 하드디스크를 논리적으로 나눈 구역을 의미하며, 각각의 파티션에 별도의 파일 시스템을 생성할 수 있다.
7. 리눅스 시스템에서 /bin 디렉터리의 역할은 무엇인가?
- A) 사용자 계정의 홈 디렉터리를 저장
- B) 부팅 과정이나 시스템 관리에 필요한 명령의 실행 파일을 포함
- C) 시스템의 중요한 환경 설정 파일을 포함
- D) 장치를 접근하는데 사용되는 '디바이스 파일'을 포함
- 정답: B) 부팅 과정이나 시스템 관리에 필요한 명령의 실행 파일을 포함
- 해설: /bin 디렉터리는 기본적인 시스템 명령의 실행 파일을 포함하며, 이는 부팅 과정이나 시스템 관리에 필수적인 명령들을 포함한다.
8. 리눅스 시스템에서 'chsh' 명령어의 기능은 무엇인가?
- A) 현재 셸의 환경 변수를 변경
- B) 새 사용자 계정을 생성
- C) 사용자의 로그인 셸을 변경
- D) 시스템의 호스트 이름을 변경
- 정답: C) 사용자의 로그인 셸을 변경
- 해설: 'chsh' 명령어는 사용자의 로그인 셸을 변경하는 데 사용된다. 이를 통해 사용자는 다른 셸로 로그인 셸을 변경할 수 있다.
9. 리눅스에서 'alias' 명령어의 주요 기능은 무엇인가?
- A) 새 파일을 생성
- B) 디렉터리를 변경
- C) 명령어의 별칭을 생성
- D) 파일의 권한을 변경
- 정답: C) 명령어의 별칭을 생성
- 해설: 'alias' 명령어는 사용자가 자주 사용하는 명령어에 대해 별칭을 설정할 수 있게 해준다. 이를 통해 긴 명령어를 간단한 별칭으로 대체하여 사용할 수 있다.
10. 리눅스에서 파티션과 관련된 설명으로 올바르지 않은 것은?
- A) 파티션은 하드디스크를 논리적으로 나눈 구역이다.
- B) 파티션 별로 다른 파일 시스템을 사용할 수 있다.
- C) 리눅스는 하드 디스크마다 여러 루트 디렉터리를 가진다.
- D) 윈도우에서는 각 파티션을 드라이브로 지정한다.
- 정답: C) 리눅스는 하드 디스크마다 여러 루트 디렉터리를 가진다.
- 해설: 리눅스는 하나의 루트 디렉터리만을 가지며, 이는 모든 파일과 디렉터리의 최상위 디렉터리로 작동한다.
11. 리눅스 시스템에서 /etc 디렉터리의 역할은 무엇인가?
- A) 사용자 계정의 홈 디렉터리가 만들어지는 곳
- B) 시스템의 중요한 환경 설정 파일이 위치하는 곳
- C) 프로그램들이 사용하는 시스템 라이브러리 파일이 위치하는 곳
- D) 이동식 저장 장치가 마운트 될 때의 마운트 지점
- 정답: B) 시스템의 중요한 환경 설정 파일이 위치하는 곳
- 해설: /etc 디렉터리는 리눅스 시스템에서 중요한 환경 설정 파일들을 저장하는 곳으로, 시스템의 설정과 관련된 파일들이 주로 위치한다.
12. 리눅스 시스템에서 사용되는 장치 이름 중, IDE 디스크에 주로 사용되는 접두사는 무엇인가?
- A) sd
- B) sr
- C) hd
- D) ssd
- 정답: C) hd
- 해설: 리눅스에서 IDE 하드 디스크 장치 이름에는 'hd' 접두사가 사용된다. 예를 들어, 첫 번째 IDE 하드 디스크는 '/dev/hda'로 표시된다.
13. 리눅스에서 셸 스크립트 파일을 실행할 때 사용되는 특수 문자는 무엇인가?
- A) #
- B) $
- C) .
- D) ~
- 정답: C) .
- 해설: 셸 스크립트 파일을 실행할 때 사용되는 특수 문자는 점(.)이다. 예를 들어, 'script.sh' 파일을 실행하려면 '. script.sh' 명령을 사용한다.
14. 리눅스 시스템에서 사용자의 홈 디렉토리 경로를 나타내는 환경 변수는 무엇인가?
- A) USER
- B) PWD
- C) HOME
- D) PATH
- 정답: C) HOME
- 해설: 사용자의 홈 디렉토리 경로는 환경 변수 'HOME'에 저장된다. 예를 들어, 'echo $HOME' 명령은 현재 사용자의 홈 디렉토리 경로를 출력한다.
15. 리눅스 시스템에서 '/etc/passwd' 파일의 주요 기능은 무엇인가?
- A) 시스템 로그 파일
- B) 사용자 계정 정보
- C) 시스템 환경 설정
- D) 패스워드 보안 설정
- 정답: B) 사용자 계정 정보
- 해설: '/etc/passwd' 파일은 시스템의 모든 사용자 계정 정보를 포함하고 있다. 이 파일에는 사용자 이름, 사용자 ID, 그룹 ID, 홈 디렉토리, 로그인 셸 등의 정보가 포함된다.
16. 리눅스에서 하드 디스크나 주변 장치를 어떻게 처리하는가?
- A) 별도의 드라이브로 지정
- B) 파일로 취급
- C) 별도의 파티션으로 구분
- D) 네트워크 자원으로 인식
- 정답: B) 파일로 취급
- 해설: 리눅스는 하드 디스크나 주변 장치를 파일로 취급한다. 이는 유닉스 계열 운영 체제의 특징이며, 파일 시스템의 일부로 관리된다.
17. 리눅스에서 'sbin' 디렉터리의 용도는 무엇인가?
- A) 사용자 데이터 저장
- B) 시스템 부팅 파일 저장
- C) 시스템 관리 명령 실행 파일 저장
- D) 네트워크 구성 파일 저장
- 정답: C) 시스템 관리 명령 실행 파일 저장
- 해설: 'sbin' 디렉터리는 시스템 부팅 과정이나 시스템 관리에 필요한 명령의 실행 파일을 포함한다.
18. 리눅스 시스템에서 파티션을 어떻게 관리하는가?
- A) 각 파티션을 별도의 드라이브로 관리
- B) 모든 파티션을 하나의 루트 디렉터리 아래에 통합 관리
- C) 각 파티션마다 별도의 운영 체제 설치
- D) 파티션은 사용하지 않고, 전체 하드 디스크를 하나의 파티션으로 사용
- 정답: B) 모든 파티션을 하나의 루트 디렉터리 아래에 통합 관리
- 해설: 리눅스는 모든 파티션을 하나의 루트 디렉터리 아래에 통합하여 관리한다. 이는 윈도우와 다른 점이다.
19. 리눅스에서 '/dev/sda'와 같은 장치 이름은 무엇을 나타내는가?
- A) 네트워크 장치
- B) USB 장치
- C) 하드 디스크 장치
- D) 시스템 메모리
- 정답: C) 하드 디스크 장치
- 해설: 리눅스에서 '/dev/sda'는 하드 디스크 장치를 나타내는 장치 이름이다. 이는 주로 SCSI 또는 SATA 하드 드라이브에 사용된다.
20. 리눅스에서 하드디스크 장치 또는 파티션의 이름을 나타내는 방법으로 올바른 것은 무엇인가?
- A) 모든 하드디스크 장치는 'hdd'로 시작한다
- B) SCSI 디스크는 'hd'로 시작하고, IDE 디스크는 'sd'로 시작한다
- C) IDE 디스크는 'hd'로 시작하고, SCSI 디스크는 'sd'로 시작한다
- D) 모든 하드디스크는 동일한 이름을 사용한다
- 정답: C) IDE 디스크는 'hd'로 시작하고, SCSI 디스크는 'sd'로 시작한다
- 해설: 리눅스에서 IDE 하드디스크는 'hd'로 시작하는 이름을 가지고, SCSI 하드디스크는 'sd'로 시작하는 이름을 갖는다. 이러한 명명 규칙은 장치를 구별하는 데 중요하다.
21. 리눅스에서 'man' 명령어의 기능은 무엇인가?
- A) 시스템 메모리 사용량을 표시
- B) 사용 가능한 디스크 공간을 표시
- C) 명령어 및 프로그램의 매뉴얼 페이지를 표시
- D) 현재 실행 중인 프로세스 목록을 표시
- 정답: C) 명령어 및 프로그램의 매뉴얼 페이지를 표시
- 해설: 'man' 명령어는 사용자가 명령어 및 프로그램에 대한 매뉴얼 페이지를 볼 수 있게 해준다. 이를 통해 사용자는 해당 명령어나 프로그램의 사용법을 자세히 알 수 있다.
22. 리눅스에서 'echo $PATH' 명령의 결과는 무엇을 나타내는가?
- A) 현재 사용자의 비밀번호
- B) 현재 디렉터리의 경로
- C) 시스템에 설치된 모든 프로그램의 목록
- D) 실행 파일을 찾기 위한 디렉터리의 목록
- 정답: D) 실행 파일을 찾기 위한 디렉터리의 목록
- 해설: 'echo $PATH' 명령어는 사용자의 PATH 환경 변수를 표시한다. 이 변수에는 시스템이 실행 파일을 찾을 때 검색하는 디렉터리의 목록이 포함되어 있다.
23. 리눅스 시스템에서 '/boot' 디렉터리의 주요 용도는 무엇인가?
- A) 사용자의 홈 디렉터리를 저장
- B) 디바이스 드라이버를 저장
- C) 커널 이미지와 부트 로더의 설정 파일을 포함
- D) 프로그램의 실행 파일을 저장
- 정답: C) 커널 이미지와 부트 로더의 설정 파일을 포함
- 해설: '/boot' 디렉터리는 리눅스 시스템의 부팅에 필요한 커널 이미지(vmlinuz)와 부트 로더의 설정 파일 등을 포함한다.
24. 리눅스 시스템의 'root' 계정의 홈 디렉터리는 어디인가?
- A) /home/root
- B) /root
- C) /usr/root
- D) /system/root
- 정답: B) /root
- 해설: 리눅스 시스템에서 'root' 계정의 홈 디렉터리는 '/root'이다. 이는 일반 사용자의 홈 디렉터리가 '/home'에 위치하는 것과 다르다.
25. 리눅스 시스템에서 'type' 명령어의 주요 기능은 무엇인가?
- A) 파일의 종류를 확인
- B) 명령어가 어떻게 해석되는지 알려줌
- C) 디스크 사용량을 표시
- D) 네트워크 인터페이스의 상태를 표시
- 정답: B) 명령어가 어떻게 해석되는지 알려줌
- 해설: 'type' 명령어는 주어진 명령어가 셸 내장 명령인지, 외부 프로그램인지, 또는 별칭인지 등을 알려주는 기능을 가지고 있다.
26. 리눅스 시스템에서 사용자 계정을 생성하는 명령어는 무엇인가?
- A) useradd
- B) usermod
- C) passwd
- D) adduser
- 정답: A) useradd
- 해설: 'useradd' 명령어는 리눅스 시스템에서 새로운 사용자 계정을 생성하는 데 사용된다. 이 명령어는 사용자의 기본 정보와 함께 홈 디렉터리를 설정할 수 있다.
27. 리눅스 시스템에서 'whoami' 명령어의 기능은 무엇인가?
- A) 현재 시스템의 호스트 이름을 표시
- B) 현재 로그인한 사용자의 계정 이름을 표시
- C) 시스템의 네트워크 정보를 표시
- D) 현재 실행 중인 프로세스의 목록을 표시
- 정답: B) 현재 로그인한 사용자의 계정 이름을 표시
- 해설: 'whoami' 명령어는 현재 로그인한 사용자의 계정 이름을 표시한다. 이 명령은 사용자가 어떤 계정으로 시스템에 접속해 있는지 확인할 때 유용하다.
28. 리눅스 시스템에서 'umask' 명령어의 기능은 무엇인가?
- A) 사용자의 권한을 변경
- B) 새로 생성되는 파일과 디렉터리의기본 권한을 설정
- C) 파일의 권한을 확인
- D) 시스템의 보안 수준을 설정
- 정답: B) 새로 생성되는 파일과 디렉터리의 기본 권한을 설정
- 해설: 'umask' 명령어는 새로 생성되는 파일과 디렉터리에 적용될 기본 권한을 설정한다. 이를 통해 시스템의 보안을 유지하는 데 도움을 준다.
29. 리눅스 시스템에서 'which' 명령어의 주요 기능은 무엇인가?
- A) 파일의 위치를 찾음
- B) 실행 파일의 위치를 찾음
- C) 네트워크 장치의 IP 주소를 찾음
- D) 시스템의 환경 변수를 찾음
- 정답: B) 실행 파일의 위치를 찾음
- 해설: 'which' 명령어는 주어진 명령어의 실행 파일이 시스템의 어느 경로에 위치하는지를 찾아내는 기능을 가지고 있다. 이는 PATH 환경 변수에 설정된 디렉터리를 검색하여 해당 명령어의 위치를 찾는다.
30. 리눅스 시스템에서 'echo $HOME' 명령의 결과는 무엇을 나타내는가?
- A) 현재 사용자의 홈 디렉터리 경로
- B) 현재 디렉터리의 경로
- C) 시스템에 설치된 모든 프로그램의 목록
- D) 실행 파일을 찾기 위한 디렉터리의 목록
- 정답: A) 현재 사용자의 홈 디렉터리 경로
- 해설: 'echo $HOME' 명령어는 현재 사용자의 홈 디렉터리 경로를 표시한다. 이는 사용자의 개인 데이터와 설정 파일이 저장된 위치를 나타낸다.
31. 리눅스 시스템에서 'grep' 명령어의 주요 기능은 무엇인가?
- A) 파일을 복사
- B) 텍스트에서 패턴을 검색
- C) 파일을 압축
- D) 네트워크 연결을 확인
- 정답: B) 텍스트에서 패턴을 검색
- 해설: 'grep' 명령어는 파일이나 다른 텍스트 소스에서 주어진 패턴이나 문자열을 검색하는 데 사용된다. 이는 로그 파일 분석, 코드에서 특정 문자열 찾기 등 다양한 상황에서 유용하게 사용된다.
32. 리눅스 시스템의 '/media' 디렉터리의 역할은 무엇인가?
- A) 멀티미디어 파일 저장
- B) 이동식 저장 장치의 마운트 지점 제공
- C) 사용자의 미디어 라이브러리 관리
- D) 시스템의 미디어 드라이버 저장
- 정답: B) 이동식 저장 장치의 마운트 지점 제공
- 해설: '/media' 디렉터리는 이동식 저장 장치가 시스템에 연결될 때 그것을 마운트할 지점을 제공한다. 예를 들어 USB 드라이브나 외장 하드 드라이브 등이 여기에 마운트된다.
'CS > Unix 시스템' 카테고리의 다른 글
리눅스 시작과 종료, 운영체제 부팅, 초기화 데몬, 시스템 종료 (1) | 2023.11.30 |
---|---|
리눅스 파일 시스템, 파일과 디렉터리, 리눅스 파일 내용 확인하기 (0) | 2023.11.29 |
유닉스와 리눅스, UNIX 발전사, 오픈소스와 라이선스, 리눅스 배포판 (1) | 2023.11.28 |
리눅스 문제 풀이 - 버전 관리와 깃, 브랜치의 생성과 병합, 스태시와 버전 되돌리기 (1) | 2023.11.28 |
리눅스 문제 풀이 - 파일 시스템 관리, 프로세스 관리, 소프트웨어 관리, 쉘 스크립트 (1) | 2023.11.27 |