Total
Search
1. 셸 개요
1.1. 개요
•
명령어 해석기 또는 명령 행 인터페이스
•
사용자와 커널 사이에서 명렁어를 해석하여 처리
1.2. 기능 및 역할
•
명령 해석
◦
사용자가 입력한 명령어를 해석하고 실행
•
스크립트 실행
◦
셸 스크립트를 통해 반복 작업 자동화
•
환경 설정
◦
사용자 환경 변수 및 셸 옵션을 설정하여 작업 환경을 맞춤화
1.3. 셸의 종류
•
Bash
◦
가장 널리 사용되는 셸로, 다양한 스크립팅 기능을 제공
◦
/bin/bash 로 실행 가능
•
Zsh
◦
Bash보다 더 강력한 자동 완성 기능과 플러그인 지원을 제공
•
Fish
◦
사용자 친화적인 인터페이스와 직관적인 사용성을 강조
2. 셸 명령
2.1. 셸 명령의 형식
•
명령어 형식
◦
대개 명령어는 프로그램 이름
◦
관리자 명령 또는 일반 사용자 명령이 있음
◦
가장 간단한 형태의 실행은 명령어의 이름만 사용하는 것
▪
who, date, ls, pwd
$ {명령어} {옵션} {인수}
usermod -L kdhong
Bash
복사
2.2. 셸 명령어의 종류
•
기본 종류
◦
알리어스: alias 명령을 이용하여 만든 명령의 별칭
◦
셸 예약어: 예약된 단어로 do, while, case 등
◦
함수: 셸에서 수행되는 함수의 정의
◦
내장 명령: 셸 내부 존재하는 명령으로 cd, echo, pwd 등
◦
일반 명령: 실행 파일이 존재하는 명령
•
환경변수 PATH에 설정된 경로 중에 실행 파일이 존재하면 명령의 이름만으로 실행이 가능
◦
아니면 해당 실행 파일의 절대 경로를 사용해야 함
◦
현재 디렉터리(.)는 보통 PATH에 포함되어 있지 않음
◦
echo $PATH로 저장된 경로 확인 가능
2.3. alias / type / which / man 명령
•
alias
◦
자주 사용되는 명령의 단축 명령을 만드는 명령
◦
예) alias la=’ls -A’
◦
계속 유지하러면 셸의 환경 설정 파일에 기록 필요
•
type
◦
명령이 어떻게 해석되는지 알려주는 명령
•
which
◦
환경변수 PATH를 기반으로 경로 출력 명령
•
man
◦
메뉴얼 페이지를 보여주는 명령
3. 명령 히스토리
3.1. history 명령
•
이전에 수행했던 명령 행의 목록을 불러옴
3.2. 히스토리 사용법
•
history: 이전에 실행한 명령어 목록을 표시
•
!n: 히스토리 목록에서 번호 n에 해당하는 명령어를 실행
•
!!: 마지막으로 실행한 명령어를 다시 실행
4. 명령의 연결과 확장
•
여러 명령어를 조합하여 복잡한 작업을 수행하거나, 명령어의 출력을 다른 명령어의 입력으로 전달하는 기능
•
효율적이고 강력한 작업 자동화가 가능
4.1. 파이프
•
앞 명령의 출력 결과를 다음 명령의 입력으로 연결
◦
| 기호를 사용
•
예시)
◦
ls -l | grep "txt"
◦
ls -l의 출력을 grep "txt"의 입력으로 전달하여 텍스트 파일만 필터링
4.2. 리다이렉션
•
<: 파일의 내용을 명령어의 입력으로 사용
•
>: 명령어의 출력을 파일로 저장
•
>>: 명령어의 출력을 기존 파일에 추가
4.3. 명령 치환
•
백틱(`)이나 $( )를 사용하여 명령어의 출력을 다른 명령어의 인자로 사용
which passwd
/usr/bin/passwd
ls -l $(which passwd)
-rwxr-xr-x 1 root wheel 172608 12 15 2023 /usr/bin/passwd
Shell
복사
4.4. 인용 부호
•
빈칸을 포함하는 문자열을 1개의 인수로 사용할 때 인용 부호가 필요함
•
작은따옴표는 특수문자의 의미를 제거함
•
큰따옴표는 $, ``,\, !를 해석하여 확장함
•
백슬래시는 $, `, ", ', \ 앞에서 특수 문자의 의미를 제거함
echo "$(date)"
>> 2024년 10월 9일 수요일 21시 29분 26초 KST
echo "\$(date)"
>> $(date)
echo 'Today is $(date)'
>>Today is $(date)
Shell
복사
4.5. 수식과 변수의 확장
•
명령 수행 전에 수식의 결과를 계산하여 전달
◦
$[수식] 또는 $((수식))
•
명령 수행 전에 변수의 값을 추출하여 전달
◦
$변수
echo "I am $[2024-1990] years old"
>> I am 34 years old
echo BASH
>> BASH
ls -l $BASH
>>> -rwxr-xr-x. 1 root root 877736 2016-05-11 08:17 /usr/bin/bash
Shell
복사
5. 셸 변수
5.1. 정의
•
셸에서 데이터를 저장하고 관리하는 데 사용되는 변수
•
변수는 스크립트 작성이나 일상적인 명령어 사용 시 유용하게 활용됨
5.2. 셸 변수 (지역 변수)
•
변수가 정의된 셸엥서만 사용 가능. 서브 셸로는 전달 X
USER_NAME="홍길동"
echo "안녕하세요, $USER_NAME님!"
Shell
복사
5.3. 환경 변수 (전역 변수)
•
시스템 전반에서 사용되는 변수로, 주로 대문자로 작성됩니다.
•
예시: PATH, HOME, USER
•
변수 설정: export VAR_NAME="값"