Search
🏫

[Unix 시스템] 2. 셸 사용하기

Tags
CS
Linux
Last edited time
2024/12/07 06:41
2 more properties
Search
[Unix 시스템] 8. 프로세스 관리
CS
Linux
2024/12/03 12:59
[Unix 시스템] 8. 프로세스 관리
CS
Linux
2024/12/03 12:59

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)" >> 2024109일 수요일 212926초 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="값"